学习笔记(5)RT Threasd使用合宙AIR724UG(AT固件)实现模块断电重启后再次连网

目录

1 使用的芯片和引脚说明

2 cubeMX配置

3 RT-Thread setting配置

 4 board.h 配置

5 模块断电再次连网

1 使用的芯片和引脚说明

使用的芯片:STM32F407VET6

串口调试引脚:USART1        PA9      PA10

单片机与AIR724连接的RX和TX引脚:USART2        PD5      PD6

air724电源引脚:PE0

2 cubeMX配置

先把设备时钟和串口调试方式配置好。

随后使能串口1和串口2.

 然后把时钟树也根据自己的板子配置好。

3 RT-Thread setting配置

添加AT_device软件包,打开所需的组件。

配置软件包,打开配置项,将串口更改成自己设备的串口。比如我的设备是串口2和AIR724连接,我就把串口配置项的串口改成uart2.

 4 board.h 配置

由于我们使用了串口2 ,所以我们需要到board.h文件中进行声明。

接下来我们将程序下载到设备,发现调试出现错误。

说我们的lte引脚是低,还有AIR724栈溢出。

我们打开at_device_air720.c

 将这个if判断改成一直为真即可。栈溢出的问题我们可以通过改变栈大小来解决,同样的在at_device_air720.c文件。

 将栈大小改大成2048即可,再次下载程序。发现程序正常运行,同时4G模块的指示灯快闪表示连网成功。

5 模块断电再次连网

 由于我使用的AIR724是AT固件,模块单独断电(整个设备还是上电状态)在上电后设备不会自动连网,需要再次将设备初始化。所以我们可以模拟设备断电在重连网的过程。AIR724模块初始化的过程是在at_device_air720.c的air720_init_thread_entry中进行的.

 我们可以把static 关键字去掉,同时在at_device_air720.h中声明该函数。

 这样我们就可以在main函数中模拟模块断电重连的过程了。

/*
 * Copyright (c) 2006-2023, RT-Thread Development Team
 *
 * SPDX-License-Identifier: Apache-2.0
 *
 * Change Logs:
 * Date           Author       Notes
 * 2023-07-15     RT-Thread    first version
 */

#include <rtthread.h>
#include <board.h>
#define DBG_TAG "main"
#define DBG_LVL DBG_LOG
#include <rtdbg.h>
#include <at_device_air720.h>//包含AIR724 初始化函数air720_init_thread_entry
#define AIR724POWER GET_PIN(E, 0)   //AIR724电源控制引脚

//打开4G电源
void open_4GPower(void)
{
    rt_pin_mode(AIR724POWER, PIN_MODE_OUTPUT);
    rt_pin_write(AIR724POWER, PIN_HIGH);//打开4G电源
}
//关闭4G电源
void close_4GPower(void)
{
    rt_pin_mode(AIR724POWER, PIN_MODE_OUTPUT);
    rt_pin_write(AIR724POWER, PIN_LOW);
}
int main(void)
{
    struct at_device *device = RT_NULL;
    struct netdev *airnetdev = RT_NULL;
    airnetdev = netdev_get_first_by_flags(NETDEV_FLAG_LINK_UP);
    device = at_device_get_by_name(AT_DEVICE_NAMETYPE_NETDEV, airnetdev->name);
    LOG_D("is test\n");
    rt_thread_delay(40000);
    close_4GPower();
    rt_thread_delay(5000);
    open_4GPower();
    air720_init_thread_entry(device);
}

 将程序下载到设备,可以发现设备在一开始的时候连网,模块指示灯快闪,过了40s后,将模块电源关闭,过10秒后打开电源,再次进行模块初始化,模块指示灯快闪,表示模块断电后再次上电重连网络成功!

 

评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值