nrf51822 外部中斷(按鍵2)

2021-08-20 02:03:08 字數 2920 閱讀 3247

1.目的

nrf51822外部中斷

2.分析

在實際應用中經常要用到外部中斷,比如按鍵喚醒。

3.平台:

協議棧版本:sdk10.0.0

編譯軟體:keil 5.12

硬體平台:微雪開發板nrf51822

例子:sdk 10.0.0\

1.目的

nrf51822外部中斷

2.分析

在實際應用中經常要用到外部中斷,比如按鍵喚醒。在這裡設定5個外部按鍵中斷

3.平台:

協議棧版本:sdk10.0.0

編譯軟體:keil 5.12

硬體平台:微雪開發板nrf51822

4.步驟

1.首先配置5個埠,第五個埠是新增的新增**如紅色方框

2.bsp_init()修改為藍色部分改為紅色部分

3.中斷事件配置如下。不知道為什麼gpiote_config_num_of_low_power_events 要設定按鍵中斷的個數。。不知道為什麼

4.bsp_event_handle()新增**如下:

[cpp] 

view plain

copy

/**@brief function for handling events from the bsp module.

** @param[in]   event   event generated by button press.

*/void

bsp_event_handler(bsp_event_t event)  

break

;  case

bsp_event_whitelist_off:  

err_code = ble_advertising_restart_without_whitelist();  

if(err_code != nrf_error_invalid_state)  

break

;              

case

bsp_event_key_0:  

break

;      

case

bsp_event_key_1:  

//新增**

break

;  case

bsp_event_key_2:

//新增**

break

;  case

bsp_event_key_3:

//新增**

break

;  case

bsp_event_key_4:

//新增**

while

(1);  

break

;      

default

:  break

;  }  

}  5。download程式。然後安按鍵hey1.跳到bsp_event_kyey4 :while(1)裡面。ok。不過發現有些按鍵定義的事件發生了變化如圖:初始化按鍵事件後

檢視下m_events_list的值,和預定義的一樣。

但是程式執行到這裡的時候,發生了變化.

原來 bsp_btn_ble_init(null, &startup_event);裡面又把一些給設定了一邊

[cpp] 

view plain

copy

uint32_t bsp_btn_ble_init(bsp_btn_ble_error_handler_t error_handler, bsp_event_t * p_startup_bsp_evt)  

if(m_num_connections == 0)  

return

err_code;  

}  [cpp] 

view plain

copy

static

uint32_t advertising_buttons_configure()  

上面可以知道,對乙個按鍵可以同時設定按下,長按,釋放3個事件。每個動作產生都會產生對應的事件。如對同乙個埠設定長按 短按,釋放事件。。

[cpp] 

view plain

copy

err_code = bsp_event_to_button_action_assign(num, bsp_button_action_long_push, bsp_event_key_4);  

err_code = bsp_event_to_button_action_assign(num, bsp_button_action_push, bsp_event_key_4);  

err_code = bsp_event_to_button_action_assign(num, bsp_button_action_release, bsp_event_key_4);  

nrf51822 廣播間隔

1.目的 設定廣播間隔,已達到乙個功耗最佳的狀態 2.分析 廣播間隔,指每次藍芽廣播之間的間隔,間隔越大功耗越低,間隔越小功耗越大 3.平台 協議棧版本 sdk10.0.0 編譯軟體 keil 5.14 硬體平台 nrf51822最小系統 4.步驟 在main.c static void adver...

nrf51822 修改藍芽名字

1.目的 修改藍芽的名字 2.分析 藍芽名字最長設定為20個位元組,超過20個位元組為無效 3.平台 協議棧版本 sdk10.0.0 編譯軟體 keil 5.14 硬體平台 nrf51822最小系統 4.步驟 首先,要知道設定名字的api 在ble gap.h brief set gap devic...

nrf51822 設定傳送功率

1.目的 設定藍芽傳送功率,達到省電的目的 2.分析 實際應用當中,時常需要需改藍芽的發射功率,以達到省電的目的。在nrf51822中可以設定為9個發射等級,分別是 40,30,20,16,12,8,4,0,和4 dbm 3.平台 協議棧版本 sdk10.0.0 編譯軟體 keil 5.14 硬體平...