本帖最后由 liao6 于 2025-11-7 15:04 编辑
简介
在没有RTOS实时系统的情况下,我们都知道MCU只能逻辑运行,每个函数只能轮询的执行,那么,怎么设计才能更加高效呢?下面我们从几个方面探讨一下。
一、主循环分时轮询
在while主循环中,一般都有很多模块运行,我们可以采用分时运行的方法,根据每个模块交互的周期,我们可以在定时器设计一个时间,每间隔一个时间去运行一次,比如:像传感器类是模块,实时性要求没那么高的,我们可以2秒获取一次数据;像有些串口通信类的数据,我们可以3s下发一次。这样MCU就不会时时刻刻一直在运行,只有在有需要的时候才去运行一下某个模块,效率大大提升。
示例可以参考下图:
二、前后台系统
前后台系统,也就是while+中断的方式,中断服务函数就是前台部分,while(1)轮询是后台部分。如果没有中断请求,软件按照顺序执行while(1)轮询中的各个业务,如果有中断请求。先暂停while(1)中的业务,转去处理中断服务函数内容。处理完成中断后,再继续轮询执行while(1)中的业务。
系统运行,如下图:
三、有条件运行
系统有很多模块组成,有些模块我们可以加一个if()条件,当条件达到了,再去执行,条件没达到就直接跳过去,执行下面的程序,这样就可以避免MCU没必要的资源消耗。
四、总结
总而言之,紧急的放前台中断,不紧急的分时运行,某些模块满足条件再运行,这样就能最大的节约MCU的损耗,让MCU轻轻松松完成任务。
|
本帖子中包含更多资源
您需要 登录 才可以下载或查看,没有账号?注册
×
|