【学习笔记】《一个比较靠谱的单片机裸奔通用程序框架》

P31

疑问

事件驱动

1.事件的变化主动去通知(回调)应用的变更;
2.POLLING用法是 应用定时地查询事件是否发生变化;

事件和消息的区别?

对事件进行加工,把它们变成标准统一的数据格式提交程序(状态机化了的程序)处理。 把事件变成消息,用消息驱动单片机程序就是这种思想

  • 消息就是一段存储着特定数据的内存 块,数据的存储格式是设计者预先约定好的,只要按照约定的格式读取这段内存,就能获得消
    息所承载的有用信息。

为了不至于丢失事件,我们可以先在事件相关的 ISR 中把事件加工成消息并把它存储在消 息缓冲区里,ISR
做完这些后立即退出。主程序忙完了别的事情之后,去查看消息缓冲区,把 刚才 ISR
存储的消息读出来,分析出事件的有关信息,再转去执行相应的响应代码,最终完成
对本次事件的响应。只要整个过程的时间延迟在系统功能容许的范围之内,这样处理就没有问 题。 将事件转化为消息,体现了以空间换时间的思想。

我的理解:
事件:定性
消息:定量

事件驱动和观察者模式的区别?

一个输入更新,观察者模式可通过链表的形式直接通知到观察者

动作的理解,动作是在转换是执行的;那进入和退出?

动作:在状态机的迁移过程中,状态机会做出一些其它的行为,这些行为就是动作,动作 是状态机对事件的响应。

带箭头的直线或弧线代表状态迁移,起于初态,止于次态。
图中的文字内容是对迁移的说明,格式是:事件[条件]/动作列表(后两项可选)。

“事件[条件]/动作列表”要说明的意思是:如果在某个状态下发生了“事件”,并且状态机
满足“[条件]”,那么就要执行此次状态转移,同时要产生一系列“动作”,以响应事件。在这 个例子里,我用“KEY”表示击键事件。

状态机的逻辑完备性

状态机就能解决逻辑完备性的问题。
状态机是一种以系统状态为中心,以事件为变量的设计方法,它专注于各个状态的特点以
及状态之间相互转换的关系。状态的转换恰恰是事件引起的,那么在研究某个具体状态的时候,
我们自然而然地会考虑任何一个事件对这个状态有什么样的影响。这样,每一个状态中发生的
每一个事件都会在我们的考虑之中,

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值