NB模块开机、关机、重启的实现
生活随笔
收集整理的這篇文章主要介紹了
NB模块开机、关机、重启的实现
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
文章目錄
- 1 NB模塊開機、關機、重啟的流程分析
- 1.1 開機
- 1.2 關機
- 1.3 重啟
- 2 NB模塊開機、關機、重啟的代碼實現
1 NB模塊開機、關機、重啟的流程分析
首先看一下硬件連接圖:
下面我們需要看一下硬件原理圖中需要注意的點:
1.1 開機
NB模塊開機時序圖如下:
開機的流程圖如下:
1.2 關機
NB模塊關機時序圖如下:
NB模塊關機流程圖如下:
1.3 重啟
NB模塊重啟實現可以通過開機和關機兩種操作就可以組合成重啟。
流程圖如下:
2 NB模塊開機、關機、重啟的代碼實現
dev_sim7020.c:
#include "main.h" #include "at_parse.h" #include "app_debug.h"#include "FreeRTOS.h" #include "task.h"#define AT_CMD_AT "AT" #define AT_CMD_ATE0 "ATE0"#define STATUS_IS_ON() (!HAL_GPIO_ReadPin(M_STA_GPIO_Port,M_STA_Pin)) #define STATUS_IS_OFF() (HAL_GPIO_ReadPin(M_STA_GPIO_Port,M_STA_Pin)) #define PWRKEY_HIGH() HAL_GPIO_WritePin(M_PWR_GPIO_Port,M_PWR_Pin,GPIO_PIN_RESET) #define PWRKEY_LOW() HAL_GPIO_WritePin(M_PWR_GPIO_Port,M_PWR_Pin,GPIO_PIN_SET)static bool sim7020_at_ok() {uint16_t err=0;while (err<3){err++;if(at_send_wait_reply(AT_CMD_AT,true,"OK","ERROR",NULL,NULL,1000)==false)continue;if(at_send_wait_reply(AT_CMD_ATE0,true,"OK","ERROR",NULL,NULL,1000)==false)continue;return true;}return false;}bool sim7020_pwr_on() {uint16_t err=0;DEBUG("sim7020 pwr on");if(STATUS_IS_ON())return true;while(err<3){err++;PWRKEY_HIGH();vTaskDelay(200);PWRKEY_LOW();vTaskDelay(1000);PWRKEY_HIGH();vTaskDelay(500);if(!STATUS_IS_ON())continue;if(sim7020_at_ok()==false)continue;return true;}return false; }bool sim7020_pwr_off() {uint16_t err=0;DEBUG("sim7020 pwr off");if(STATUS_IS_OFF())return true;while(err<3){err++;PWRKEY_HIGH();vTaskDelay(200);PWRKEY_LOW();vTaskDelay(1500);PWRKEY_HIGH(); vTaskDelay(500);if(!STATUS_IS_OFF())continue;return true;}return false; }bool sim7020_reboot() {if(STATUS_IS_ON()){if(sim7020_pwr_off()==false)return false;}return sim7020_pwr_on(); }bool sim7020_init() {DEBUG("sim7020 init");if(at_parse_init()!=true)return false;if(sim7020_reboot()){DEBUG("-------sim7020 reboot success------");}return true;}總結
以上是生活随笔為你收集整理的NB模块开机、关机、重启的实现的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: AT解析层的思路分析及代码实现
- 下一篇: 散户数量为红柱是什么意思