使用跳频例程做无线键鼠时需要休眠功能,但是调用LowPower_Sleep()函数后,可以触发GPIO中断唤醒,但是唤醒后键鼠无法通过RF发送数据

调用LowPower_Sleep()函数时,选择了 (RB_PWR_RAM2K|RB_PWR_RAM14K|RB_PWR_EXTEND) ,并且唤醒后重新调用了

SystemInit()函数恢复时钟。

经过测试发现除了RF无法发送外,键盘扫描和鼠标扫描任务也不运行了。(不知道是不是死机)。

我想请教下:

(1)唤醒后需要重新初始化所用的外设吗?需要怎样恢复运行?

(2)系统进入Sleep模式后,TMOS还会继续运行任务吗?

这是官方提供的Sleep模式函数。image.png



您好,右键左边栏的工程名,在最后一项工程属性(Properties)中增加预编译宏,HAL_SLEEP,置1即可启用休眠,由协议栈管理休眠,在没有TMOS时间执行的期间会自动休眠,不能手动调用LowPower_Sleep,手动调用是协议栈无法预期的休眠,不好管理。


@TECH_JW,您好,使用了HAL_SLEEP宏后,发现程序不运行了。可以请您解答一下吗,万分感激!

图片上是主函数和全局宏配置:

1690101562461676.png

1690101562283360.png



您好,仅用EVT中的RF_PHY_HOP例程,添加HAL_SLEEP宏,复位之后有如下打印吗。检查一下CLK_OSC32K宏是否为0,表示使用外部32K晶振;可以将CLK_OSC32K宏改成1来测试,表示使用内部32K。

image.png


@TECH_JW,您好,使用官方的RF_PHY_HOP例程,全局定义了宏HAL_SLEEP,并且确保了CLK_OSC32K宏为1,但是程序在串口终端打印了"RAM Config error..."。image.pngimage.png


只有登录才能回复,可以选择微信账号登录