CH579M RTC唤醒问题

问题是:第二次调用 void RTC_SetTignTime( uint32_t time ) 函数不进入RTC中断

对第二次调用进行Debug,发现问题在 R16_RTC_TRIG寄存器不更新,如下图:

image.png


程序以及运行环境:

程序是参考CH579\EVT\EXAM\BLE\RunningSensor范例工程,移植到我的RT-Thread 4.0.3操作系统里

1. 首先按照例程初始化好RTC,如下图:

image.png


不同处是改用了内部LSI时钟,并注释了和TMOS相关函数:

image.png


2. 初始化后参考HAL库SLEEP.c的u32 CH57X_LowPower( u32 time ) 函数配置RTC唤醒

image.png

主程序如下:

image.png

第一次调用rtc_timer_start()可以正常进入RTC中断,第二次则不行(R16_RTC_TRIG寄存器不更新),如有表述不清请联系我

上述问题解决!打扰各位了,原因是

image.png

此函数的入口参数是RTC绝对值,而不是相对值,导致37行的判断直接return,若是相对值应改为:

在36和37行间插入 time+=tmp;


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