单片机 裸机 架构

        以前是【while(1)+ 软件定时器 + 中断标志】的框架,现在的项目我想尝试一下新的框架,简单来说是【主状态机+大量子状态机+软件定时器】的方式,这其中状态机和软定时的控制权有点冲突,状态机更加外部变量来决定走向,而软定时是根据指定的周期来决定是否执行,怎么解决两者的交叉的痛点呢,状态机决定方向,软定时决定频率或者说周期,感觉软定时的角色要弱化一下,因为后天while也是无形的软定时(频率最高),状态机配合while分割任务,而软定时只需要充当普通的周期执行动作,或者定时执行某个动作就可以。

        状态机解决的痛点问题是,程序的裸机清晰,结构化。

        软定时解决的痛点问题是,逻辑的异步操作(即你在什么时间去做某个事情吧,或者你去做每件事吧什么时候停止,等我通知)。

        软定时不再充当时间片/任务调度的核心------------不合理

        系统总是要有个优先前后的,各个外设模块对应各个子状态机,把整个状态机放进软定时的调度才可以有效使用MCU。

        痛点是,哪些状态机放在while,哪些状态机放在软定时?

        由于还是不涉及到优先级,那么如果按照处理事情的顺序【1紧急/主要---2紧急/不主要---3不紧急/主要---4不紧急/不主要】来安排状态机的话,来自中断的标志位属于1,适合放在while(1),而RTC每1秒更新一次属于4,适合放在软定时的长定时周期里面。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值