我正在使用EFM32WG360 MCU。我使用Gecko 5.0.0 SDK与FreeRTOS 9.0.0一起使用无滴答模式(演示2)。这意味着我使用RTC进行无人值守。
我没有修改演示版的low_power_tick_management_RTC.c而不是
//#define lpINCLUDE_TEST_TIMER 1
我所看到的是RTC比较在以下代码中被设置为某个较大的值(第304行):
if( ulTickFlag != pdFALSE )
{
/* The tick interrupt has already executed, although because this
function is called with the scheduler suspended the actual tick
processing will not occur until after this function has exited.
Reset the reload value with whatever remains of this tick period. */
ulReloadValue = ulReloadValueForOneTick - ulCountAfterSleep;
RTC_CompareSet( 0, ulReloadValue );
ulReloadValueForOneTick的值为4,ulCountAfterSleep的值为13.
其他变量:
接下来发生的事情是,在下一个vPortSuppressTicksAndSleep函数条目中,ulCountBeforeSleep(第225行)得到一些大值,然后在vTaskStepTick中断言失败。
有关这怎么可能发生的任何想法? RTC可以不及时中断或进行早期中断吗?
我很感激帮助