之前大致写过一篇状态机比较粗糙的博文,写了:状态机的方式比较适合裸机编程,但是不够深入,这里在深入一点,起因是美敦力medtronic公开了PB560呼吸机完整设计资料,里面用到了ST10F276的芯片,就是用的状态机的思想,所以状态机的思想肯定是比较好的,不然大公司不会使用这个框架来做呼吸机 ...
许多嵌入式应用领域,软件都是基于输入响应的组织方式,也叫反应式系统。把输入信息进行归类有:离散的事件 如二值开关信号 可以表示某个外部信号引发的中断或者例如发生了定时器溢出等。而数值信号则用于传递例如一次A D采样的结果。有限状态机正是利用了这些输入的事件做为状态变更的依据,每一种状态对应执行一组操作。 个人观点 所以这种方式最好是执行在一个由中断建立起来的硬件环境。例如键盘的输入是与中断相结和的 ...
2019-07-31 09:59 0 943 推荐指数:
之前大致写过一篇状态机比较粗糙的博文,写了:状态机的方式比较适合裸机编程,但是不够深入,这里在深入一点,起因是美敦力medtronic公开了PB560呼吸机完整设计资料,里面用到了ST10F276的芯片,就是用的状态机的思想,所以状态机的思想肯定是比较好的,不然大公司不会使用这个框架来做呼吸机 ...
在单片机裸机的编程方法中,状态机的方法是比较好的,经典的比如按键的检测判断等。 其实有很多地方可以使用这种思想。比如传感器的数据采集,因为单片机不可能一直等待着运行,那样的效率是很低的,通常都是结合fsm + timer的方式来提高CPU的使用率 一、传感器中使用fsm的方法 ...
前端时间要用按键,搞了个状态机(如图): main.c data.h data.c interrupt.h interrupt.c button.h button.c ...
1. 简单按键检测 记得开始学习单片机的时候,写的按键扫描是这样的: 一看,有个20ms消除抖动时间,就是说我要在这里死等20ms,还有等待按键释放,我就是不放,你能怎么样?没办法只能做超时。那我想做长按1s呢?细思极恐,对于实际项目上的应用来说是很糟糕的事情,这不仅会拖慢你整个系统,还会 ...
今天在练习51单片机的嵌套中断时,发现了一个奇怪的点,就是中断服务函数在执行的时候,无论优先级的高低,都不能被打断。嗯,就是外部中断0和外部中断1都不能打断定时器0的中断服务函数。(优先级:外部中断0>定时器0>外部中断1). 我本来想开启定时器 ...
队列是一种先进先出(first infirst out,缩写为FIFO)的线性表。它只允许在标的一端进行插入,而在另一 ...
单片机实现AT调试命令 实现目的 对于日常开发过程,我们经常需要借助串口调试设备,所以增加调试指令并且易于扩展是有必要的 思路 1、串口使用中断接收用户参数到接收缓冲区,定义0x0d作为结束标志 2、调用命令类型解析回调函数AT_DeviceHandle,对命令消息进行分流,然后进 ...
设计思路:(1)在main函数中不停的控制数码管显示时、分、秒 (2)用定时器0控制时间的递增 (3)用外部中断0(KEY3)实现秒表的暂停/开始 (4)用外部中断1(KEY4)实现秒表的停止 开发板:普中科技开发板 代码如下: ...