首页 文章

Cortex M3 - Systick NVIC禁用 - 节能FreeRTOS

提问于
浏览
0

我在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 回答

  • 1
    SysTick->CTRL = SysTick_CTRL_CLKSOURCE_Msk | SysTick_CTRL_ENABLE_Msk
    

    您没有清除 CTRL 中的任何位 . 这条线应该是这样的

    SysTick->CTRL &= ~(SysTick_CTRL_CLKSOURCE_Msk | SysTick_CTRL_ENABLE_Msk)
    

    清除 CLKSOURCEENABLE 的所有位 .

相关问题