标签:feed highlight nas 系统架构 nan cap 数组 队列 消息
状态机与时间触发是其中的两个方向(不一定准确,仅供参考):
1. 时间触发
建议你看一下下面这本书:
时间触发嵌入式系统设计模式 (豆瓣)
很久前读的是英文版,1000多页,易读,且有source code,因此结合使用proteus仿真验证。另外这本书有许多构建冗余与健壮性嵌入式系统的诸多讨论。
2. 状态机
可以看一下CS专业的自动机相关图书,例如《自动机理论与应用》。另外可以看看傻的一些文章,如果你有amobbs的账号的话:
[FSM]状态机实践入门——程咬金只要三斧头厉害 (amoBBS 阿莫电子论坛)
[学海拾贝]状态机思路在单片机程序设计中的应用 (amoBBS 阿莫电子论坛)
QP?状态机框架学习之菜鸟范例(一):闪灯(MDK,STM32F10x) (amoBBS 阿莫电子论坛)
如果你的系统不复杂,你的所有问题就简单的是一个如何设计状态机的问题,你构造你的状态机模型就可以了。这个有很多书可以看,状态机就三个要素:状态,跃迁条件和Action,剩下的问题只是代码组织,那是个独立主题。
如果你的系统较复杂,你的问题根本就是“如何设计一个嵌入式操作系统”,这个,你按这个题目去查资料就好了。
你想问题想得太高了,什么串口处理放在哪里处理什么的,根本不着边际。你有问题解决问题,想你的CPU现在应该干什么才是正道。Practical UML Statecharts in C/C++, Second Edition: Event-Driven Programming for Embedded Systems
神书,网上可以找到电子版的中文版和英文版。我觉得还是看英文版好点。确定执行的框架:
一个while循环里面检查串口是否有输入,在判断每个字符的时候,执行 switch_job(),
switch_job()里面做如下工作:
1. 定时处理,检查定时器是否到期,到期则定时处理。
2. 消息处理,检查消息队列是否有数据,(消息队列里的数据会在中断里面写入)有则处理。
其实重要的是架构。
一个典型的项目包括按键输入,显示输出,通讯。恰好我就是这种。
模块的组织以数据为核心,以状态来判断。按键输入改变数据,显示输出提取数据。同一个按键同一个显示在不同情况下功能不同,我通过状态来分别。
存在问题是全局变量满天飞,状态很多,但是我目前找不到更好的方法。
标签:feed highlight nas 系统架构 nan cap 数组 队列 消息
原文地址:https://www.cnblogs.com/tianqiang/p/9175650.html