我在EFM32GG380F1024上使用FreeRTOS . Cortex M SysTick用于RTOS滴答,低功耗rtc(BURTC)在睡眠期间用于生成定时唤醒呼叫 . 能量模式是EM3(仅超低频仍在运行) .
一旦Freertos用“suppressTicksAndSleep”回调给我打电话,我就会这样做:
-
通过调用"__disable_irq()"输入Critical Section(全局禁用IRQ)
-
我通过调用寄存器"SysTick->CTRL = SysTick_CTRL_CLKSOURCE_Msk | SysTick_CTRL_ENABLE_Msk;"禁用(至少我尝试; WONT当前工作)Systick中断
-
我设置并启动LowEnergy RTC(BURTC)
-
输入EM3
问题是,在能量模式进入之后,SysTick中断开始唤醒设备:
这不应该是可能的原因:
- 能量模式3禁用HF和LF时钟,因此Systick计数器甚至不应递增
有人可以帮忙吗?为什么这不能正确暂停Systick?
看看我的tracealyzer的截图:https://imgur.com/a/8PQ9SSb
1 回答
您没有清除
CTRL
中的任何位 . 这条线应该是这样的清除
CLKSOURCE
和ENABLE
的所有位 .