Wonder Gecko& freeRTOS:无滴答模式下的断言

时间:2017-04-06 09:22:43

标签: embedded microcontroller freertos

我正在使用EFM32WG360 MCU。我使用Gecko 5.0.0 SDK与FreeRTOS 9.0.0一起使用无滴答模式(演示2)。这意味着我使用RTC进行无人值守。

我没有修改演示版的low_power_tick_management_RTC.c而不是

  • 将RTC时钟修改为LFRCO
  • 定时器频率为4Khz(而不是4096Hz)
  • 没有测试计时器

//#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.

其他变量:

  • xModifiableIdleTime是4
  • ulReloadValue(修改前)为3

接下来发生的事情是,在下一个vPortSuppressTicksAndSleep函数条目中,ulCountBeforeSleep(第225行)得到一些大值,然后在vTaskStepTick中断言失败。

有关这怎么可能发生的任何想法? RTC可以不及时中断或进行早期中断吗?

我很感激帮助

0 个答案:

没有答案