各位大佬好,STM32F103RE使用FreeRTOS的Tickless低功耗模式(sleep模式)时遇到一个问题:就是每隔1ms单片机就会从sleep模式下唤醒一次。 程序中共有2个任务,第一个任务每隔500ms翻转一次IO口(PB12)电平;第二个任务每隔1000ms唤醒执行一次,2个任务如图1所示。 我的理解正常的逻辑是:单片机进入tickless模式(sleep模式)后,应该500ms左右唤醒一次是正常的,可是试验结果无情的打了我的脸,1ms竟然就唤醒一次,测量波形如图2所示测得的PA2脚电平翻转(PA2的电平在这个PostSleepProcessing(uint32_t *ulExpectedIdleTime)函数内部进行翻转,如图3。这个函数是单片机从Sleep模式醒来后就会执行一次)。 程序中没有开启其他外设中断,请各位大佬帮忙分析一下原因,感激不尽。 |
图1:程序中的2个任务
图2:单片机为何1ms唤醒一次??
图3:单片机唤醒后执行的函数
收到,谢谢版主的回复。