@EFM32JG移植FreeRTOS
低功耗Tickless
FreeRTOS 提供了一个叫做 Tickless 的低功耗模式,此模式下需要解决两个问题:
1)低功耗下系统滴答计数关闭,则开启低功耗定时器继续计数保证系统节拍
2)获得下一个任务要唤醒的时间,开启定时器去在中断唤醒它。
在EFM32中,其已经定义了EM1 EM2 EM3 EM4,所以为了使用该函数,可以在空闲函数的勾子函数进入低功耗,在其他任务执行完后,进入空闲任务,进入低功耗模式。再利用事件去触发唤醒,切换任务。
空闲任务
1、保证系统中至少有一个任务运行
2、将在任务中删除的自身的任务,在空闲任务中释放
3、进入低功耗(通用低功耗模式)
空闲任务创建
1、判断是否有任务要删除自己,释放缓存。
2、使用抢占式调度,则尝试切换为同优先级的其他任务。
3、执行用户定义的空闲任务钩子函数,注意!钩子函数里面不能使用任何可以引起阻塞空闲任务的 API 函数。
4、如果使能了 Tickless 模式的话就执行相关的处理代码