|
在MCU裸机轮询开发中,CPU若处理不当,确实会很难弄的,干不了正事。 分享两个优化案例。
状态机切分任务 曾开发一款智能传感器,涉及数据采集、处理、传输多个任务。最初全靠轮询,CPU忙不过来,常出现数据丢失。后来采用状态机切分任务,将整个流程分为多个状态,如空闲、采集、处理、传输等。在每个状态中只执行特定任务,完成后通过标志位切换到下一状态。例如采集状态完成数据读取后,设置处理标志,主循环检测到标志进入处理状态。这样CPU在不同状态间有序切换,任务执行更有条理,效率大幅提升,数据丢失问题解决。
定时器分时偷闲 开发一款低功耗设备时,因无RTOS,轮询导致CPU一直运行,功耗高。采用定时器分时偷闲策略,设置定时器每隔一段时间触发中断,在中断服务函数中执行关键任务,如读取传感器数据。主循环大部分时间处于低功耗模式,仅在定时器中断到来时唤醒执行相应操作。通过合理设置定时器周期,既保证了任务及时处理,又大幅降低CPU运行时间,设备功耗显著降低,延长了电池续航。
|