背景
写个demo测试通信模块唤醒时间。可以默认GPIO输出低电平,按键上升沿唤醒模块,唤醒后即刻GPIO输出高电平,示波器测量下GPIO由低电平持续的时间间隔,作为模块唤醒时间参考。
技术痛点
由于平台基本有实例参考,基本是移植相关代码,概念理解后作出一些关键参数的改动。嵌入式中软件开发,一定要结合硬件原理图和相关硬件手册,重要的事我只强调一次。。。❤
1.项目创建
整个项目编译核心是Makefile.rule,采用ARMCC编译方式,实现通用.o 目标文件以及依赖文件.d 的生成规则,同时支持增量编译。
在Makefile中增添相关头文件和目标文件。
项目入口app.c文件,板级配置bsp_custom.c也会同步运行。
app.c文件添加一个任务,用来进行GPIO配置、输出、中断。
bsp_custom.c中添加按键配置、中断。
2.GPIO配置
外设配置无外乎配置相关结构体赋给相关接口函数。
1.GPIO配置:
gpio_pin_config_t
包含pinDirection: 确定输入、输出
misc:是一个共用体,要么是输入中中断配置;要么是输出初始化值。
2.接口函数
GPIO配置接口:GPIO_PinConfig()
GPIO写入:GPIO_PinWrite()
GPIO读出: GPIO_PinRead()
读取当前GPIO的中断状态标志位:GPIO_GetInterruptFlags()
清除当前GPIO的中断状态标志位:GPIO_ClearInterruptFlags()
禁止所有端口中断防止中断溢出:GPIO_SaveAndSetIRQMask()
恢复端口中断设置:GPIO_RestoreIRQMask()
3.模块休眠、按键唤醒
模块休眠同样是通过配置参数设置完成。
1.设置T3324时间;
appSetEccfgSync()
2.设置休眠前须等待时间;
BSP_SetPlatConfigItemValue();
3.配置省电状态为HIB。
BSP_SetPlatConfigItemValue();
BSP_SetPlatConfigItemValue();
pmuSetDeepestSleepMode(();
按键唤醒
1.按键初始化,设置唤醒方式
PMU_WakeupPadInit
2.打开相应按键的中断
NVIC_EnableIRQ()
测试结果
版权声明:本文为weixin_40401027原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接和本声明。