|
八月的時候做的一個單子,是用NRF52832芯片做一個門鎖以識別到手環等廣播藍牙設備的MAC地址,進行分析后判斷開鎖任務,由于他們提出的要求中對于功耗的要求較高,四個南孚電池要帶電機工作半年以上,于是就加入了睡眠和睡眠喚醒系統。代碼以下:
- int main(void)
- {
-
-
- NRF_POWER->DCDCEN = 1;
- nrf_gpio_cfg_default(O1);
- nrf_gpio_cfg_default(K1);
-
- log_init();
-
- timers_init();
-
- //buttons_init();
-
- power_management_init();
-
- ble_stack_init();
-
- gap_params_init();
-
- gatt_init();
-
- advertising_init();
-
- services_init();
-
- conn_params_init();
-
- control_set();
-
- NRF_LOG_INFO("Template example started.");
-
- //advertising_start();
-
- scan_start();
-
- while(true)
- {
-
- idle_state_handle();
- nrf_delay_ms(5000);
-
- <div class="blockcode"><blockquote>nrf_gpio_cfg_sense_input(BUTTON_1, NRF_GPIO_PIN_PULLUP, NRF_GPIO_PIN_SENSE_HIGH);
復制代碼
nrf_gpio_cfg_default(INTA);
nrf_gpio_cfg_default(INTB);
//nrf_gpio_cfg_default(LED1);
nrf_gpio_cfg_default(LED2);
nrf_gpio_cfg_default(beep);
app_timer_stop_all();
//nrf_gpio_cfg_default(BUTTON_1);
NRF_POWER->SYSTEMOFF = 1;
}
}
上述的代碼中,較為重要的是設置BUTTON_1為喚醒口:- nrf_gpio_cfg_sense_input(BUTTON_1, NRF_GPIO_PIN_PULLUP, NRF_GPIO_PIN_SENSE_HIGH);
復制代碼 該函數可以配置低電平喚醒,高電平喚醒,高電平之后低電平喚醒
之后使用
- NRF_POWER->SYSTEMOFF = 1;
復制代碼
使得單片機進入睡眠。
下面是藍牙事件的核心:
- case BLE_GAP_EVT_ADV_REPORT:
- if (p_adv_report->type.scan_response&&p_adv_report->rssi>-35)
- {
- NRF_LOG_INFO(" peer_addr = %02x %02x %02x %02x %02x %02x\r\n", p_adv_report->peer_addr.addr[5],p_adv_report->peer_addr.addr[4],p_adv_report->peer_addr.addr[3],p_adv_report->peer_addr.addr[2],p_adv_report->peer_addr.addr[1],p_adv_report->peer_addr.addr[0] );
- NRF_LOG_INFO(" p_gap_evt->params.adv_report.rssi = %d\r\n", p_adv_report->rssi );
- send_deta_band[0]=-p_adv_report->rssi;
- send_deta_band[1]=p_adv_report->peer_addr.addr[5];
- send_deta_band[2]=p_adv_report->peer_addr.addr[4];
- send_deta_band[3]=p_adv_report->peer_addr.addr[3];
- send_deta_band[4]=p_adv_report->peer_addr.addr[2];
- send_deta_band[5]=p_adv_report->peer_addr.addr[1];
- send_deta_band[6]=p_adv_report->peer_addr.addr[0];
- //uint8_t my_adv_manuf_data[5] = {0xDE,0x02,0x03,0x04,0x05};
-
-
- send_deta_band_1[5]=send_deta_band[1];
- send_deta_band_1[4]=send_deta_band[2];
- send_deta_band_1[3]=send_deta_band[3];
- send_deta_band_1[2]=send_deta_band[4];
- send_deta_band_1[1]=send_deta_band[5];
- send_deta_band_1[0]=send_deta_band[6];
-
-
- sd_ble_gap_adv_stop(m_advertising.adv_handle);
- //advertising_init();
- //advertising_start();
-
- beep_start();
-
- beep_stop();
-
-
- control_right();
- nrf_delay_ms(30);
- control_stop();
- nrf_delay_ms(10);
-
- led_start();
- //nrf_delay_ms(10);
- advertising_init();
- advertising_start();
- nrf_delay_ms(2000);
- control_left();
- nrf_delay_ms(30);
- control_stop();
- //application_timers_start1();
- // application_timers_start();
-
- //advertising_start();
-
- }
- sd_ble_gap_scan_start(NULL, &m_scan_buffer);
- break;
復制代碼
|
-
-
app.rar
2019-9-7 11:37 上傳
點擊文件名下載附件
下載積分: 黑幣 -5
7.5 KB, 下載次數: 66, 下載積分: 黑幣 -5
評分
-
查看全部評分
|