久久久久久久999_99精品久久精品一区二区爱城_成人欧美一区二区三区在线播放_国产精品日本一区二区不卡视频_国产午夜视频_欧美精品在线观看免费

 找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

搜索
查看: 5570|回復: 2
打印 上一主題 下一主題
收起左側

基于NRF52832的低功耗藍牙手環門鎖的設計方案

[復制鏈接]
跳轉到指定樓層
樓主
ID:490627 發表于 2019-9-7 11:40 | 只看該作者 回帖獎勵 |倒序瀏覽 |閱讀模式
八月的時候做的一個單子,是用NRF52832芯片做一個門鎖以識別到手環等廣播藍牙設備的MAC地址,進行分析后判斷開鎖任務,由于他們提出的要求中對于功耗的要求較高,四個南孚電池要帶電機工作半年以上,于是就加入了睡眠和睡眠喚醒系統。代碼以下:

  1. int main(void)
  2. {
  3.        
  4.        
  5.         NRF_POWER->DCDCEN = 1;
  6.         nrf_gpio_cfg_default(O1);                                                                  
  7.   nrf_gpio_cfg_default(K1);
  8.          
  9.         log_init();
  10.   
  11.         timers_init();

  12.         //buttons_init();
  13.          
  14.         power_management_init();
  15.   
  16.         ble_stack_init();
  17.           
  18.         gap_params_init();
  19.          
  20.         gatt_init();
  21.          
  22.         advertising_init();
  23.          
  24.         services_init();
  25.          
  26.   conn_params_init();
  27.        
  28.         control_set();  
  29.        
  30.   NRF_LOG_INFO("Template example started.");  
  31.          
  32.         //advertising_start();
  33.        
  34.         scan_start();
  35.    
  36.         while(true)
  37.         {
  38.                  
  39.                 idle_state_handle();
  40.                 nrf_delay_ms(5000);
  41.                
  42.                 <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為喚醒口:
  1.         nrf_gpio_cfg_sense_input(BUTTON_1, NRF_GPIO_PIN_PULLUP, NRF_GPIO_PIN_SENSE_HIGH);
復制代碼
該函數可以配置低電平喚醒,高電平喚醒,高電平之后低電平喚醒
之后使用
  1. NRF_POWER->SYSTEMOFF = 1;
復制代碼

使得單片機進入睡眠。

下面是藍牙事件的核心:
  1. case BLE_GAP_EVT_ADV_REPORT:
  2.                               if (p_adv_report->type.scan_response&&p_adv_report->rssi>-35)
  3.         {
  4.                                           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] );
  5.                                     NRF_LOG_INFO(" p_gap_evt->params.adv_report.rssi  = %d\r\n", p_adv_report->rssi );
  6.                                           send_deta_band[0]=-p_adv_report->rssi;
  7.                                           send_deta_band[1]=p_adv_report->peer_addr.addr[5];
  8.                                           send_deta_band[2]=p_adv_report->peer_addr.addr[4];
  9.                                           send_deta_band[3]=p_adv_report->peer_addr.addr[3];
  10.                                           send_deta_band[4]=p_adv_report->peer_addr.addr[2];
  11.                                           send_deta_band[5]=p_adv_report->peer_addr.addr[1];
  12.                                           send_deta_band[6]=p_adv_report->peer_addr.addr[0];
  13.                                           //uint8_t          my_adv_manuf_data[5] = {0xDE,0x02,0x03,0x04,0x05};
  14.                                                
  15.                                                
  16.                                         send_deta_band_1[5]=send_deta_band[1];
  17.                                         send_deta_band_1[4]=send_deta_band[2];
  18.                                         send_deta_band_1[3]=send_deta_band[3];
  19.                                         send_deta_band_1[2]=send_deta_band[4];
  20.                                         send_deta_band_1[1]=send_deta_band[5];
  21.                                         send_deta_band_1[0]=send_deta_band[6];
  22.                                                
  23.                                                
  24.                                           sd_ble_gap_adv_stop(m_advertising.adv_handle);
  25.                                           //advertising_init();
  26.                                           //advertising_start();
  27.                                                    
  28.             beep_start();
  29.                                                
  30.                                                 beep_stop();
  31.                                                  
  32.                                                          
  33.                                           control_right();
  34.                                           nrf_delay_ms(30);
  35.                                           control_stop();
  36.                                                 nrf_delay_ms(10);
  37.                                                
  38.                                                 led_start();
  39.                                                 //nrf_delay_ms(10);
  40.                                                 advertising_init();
  41.                                                 advertising_start();
  42.                                                 nrf_delay_ms(2000);
  43.                                           control_left();
  44.                                           nrf_delay_ms(30);
  45.                                           control_stop();
  46.                   //application_timers_start1();
  47.         //                                  application_timers_start();

  48.                                           
  49.                                           //advertising_start();

  50.             
  51.                                 }
  52.                               sd_ble_gap_scan_start(NULL, &m_scan_buffer);
  53.                               break;
復制代碼




app.rar

7.5 KB, 下載次數: 66, 下載積分: 黑幣 -5

評分

參與人數 1黑幣 +50 收起 理由
admin + 50 共享資料的黑幣獎勵!

查看全部評分

分享到:  QQ好友和群QQ好友和群 QQ空間QQ空間 騰訊微博騰訊微博 騰訊朋友騰訊朋友
收藏收藏1 分享淘帖 頂 踩
回復

使用道具 舉報

沙發
ID:295855 發表于 2020-12-7 09:12 | 只看該作者
謝謝!正在學習中
回復

使用道具 舉報

板凳
ID:384489 發表于 2021-3-17 08:20 | 只看該作者
感謝分享,有沒sdk_config配置的教程呢。
回復

使用道具 舉報

您需要登錄后才可以回帖 登錄 | 立即注冊

本版積分規則

手機版|小黑屋|51黑電子論壇 |51黑電子論壇6群 QQ 管理員QQ:125739409;技術交流QQ群281945664

Powered by 單片機教程網

快速回復 返回頂部 返回列表
主站蜘蛛池模板: 精品日韩一区 | 国产男女视频 | 亚洲一区 | 国产伦精品一区二区三区在线 | a免费观看 | 蜜桃传媒av | 超碰免费在线 | 欧美日韩久久久 | 精品一区二区三区在线观看国产 | 国产日韩精品视频 | 亚洲精品不卡 | 欧美视频成人 | 91精品国产综合久久久久久丝袜 | 国产一区不卡 | 日本一区二区高清视频 | 黄色一级片视频 | 免费在线h视频 | 午夜小影院 | 91精品在线播放 | 日韩免费高清视频 | 成人在线免费观看 | 日韩日b视频 | 国产片淫级awww | 视频在线亚洲 | 免费黄色成人 | 亚洲麻豆| 热99在线 | 日本精品一区二区在线观看 | 精品国产乱码久久久久久88av | 国产欧美精品一区二区色综合 | 91精品国产综合久久精品 | 精品一区二区三区免费视频 | 亚洲精品久久久久久久久久久 | 成人免费视频网站在线观看 | 午夜影院在线观看免费 | 成年人视频在线免费观看 | 久久91精品久久久久久9鸭 | 欧美成人免费 | 亚洲成人精品视频 | 欧美成人一级视频 | 美女福利视频一区 |