我是靠谱客的博主 沉默冬瓜,最近开发中收集的这篇文章主要介绍NB模块开机、关机、重启的实现1 NB模块开机、关机、重启的流程分析2 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模块开机、关机、重启的实现1 NB模块开机、关机、重启的流程分析2 NB模块开机、关机、重启的代码实现的全部内容,希望文章能够帮你解决NB模块开机、关机、重启的实现1 NB模块开机、关机、重启的流程分析2 NB模块开机、关机、重启的代码实现所遇到的程序开发问题。

如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。

本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
点赞(53)

评论列表共有 0 条评论

立即
投稿
返回
顶部