ch583 通过 sysTick 唤醒 LowPower_Idle ?

平台:CH583EVT

原始代码:


Screenshot_2023-11-03_16-06-00.png


设置 PB4 (Key 按键) 作为唤醒IO,结果正常,按下后,系统唤醒,进入 while(1) 循环。


但如果启用第 14 行

SysTick_Config(GetSysClock()/60);

使能了 SysTick 滴答中断,则未按下 PB4 ,程序也直接被唤醒,进入 while(1) 循环。


按照手册来说,sysTick 滴答中断并不是手册上说明的唤醒事件(I/O、RTC、BAT、USB),如何解释这一现象?


代码链接:https://github.com/aguegu/ch583/blob/15818b57c2a7e0cc06e893f6cd4256254b98e313/examples/power/main.c

你好,使用systick后,则会一直生效的, 除非遇到①系统时钟停止;②手动关闭systick。

idle模式下,系统时钟还在开启的,因此systick还处于生效的状态。


感谢确认。systick 中断生效没有问题。


但是它可以唤醒 idle 模式的话, 也无视 PWR_PeriphWakeUpCfg 的话,手册是不是可以修订一下。


实测发现,sysTick 中断可以唤醒 idle,但不会唤醒 halt 以及更深层次的 sleep。


经过进一步测试,一般中断(如串口中断)都能将单片机从 idle 模式唤醒,不需要 PWR_PeriphWakeUpCfg,这与正常认知里对 wfi() 的应用是一致的。但不知道为什么数据手册里面把唤醒 idle 的事件局限得那么小。


好的,因为idle模式下时钟是保持运转的。该点我们会反馈注意在手册中标注。


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