资料介绍
原文:https://www.cnblogs.com/CodeWorkerLiMing/p/12501934.html
在单片机裸机的编程方法中,状态机的方法是比较好的,经典的比如按键的检测判断等。
其实有很多地方可以使用这种思想。比如传感器的数据采集,因为单片机不可能一直等待着运行,那样的效率是很低的,通常都是结合fsm + timer的方式来提高CPU的使用率。
传感器中使用fsm的方法
大家都知道,ds18b20的采集是比较慢的,发送转换指令后,最慢需要等待720ms,这个时间有点太长了。简直不能忍受。
如下所示:我采用了11bit分辨率,0.125的分辨率足够了,作为温度参考而已。
9 - bit resolution 93.75 ms 0.5
10 - bit resolution 187.50.25
11 - bit resolution 3750.125
12 - bit resolution 7500.0625
那么我肯定不是死等的,死等,多浪费cpu,效率太低了,实际工作中根本无法接受。
因此,做了一个状态机:
int main(int argc, char const *argv[])
{
while(1)
{
ds18b20_discope();
}
return0;
}
void ds18b20_discope(void)
{
switch (ds18b20的状态机的全局变量)
{
case 发送命令:
发送转换命令
赋值到等待装态
break;
case 等待装态:
判断是否有超时,
如果有超时,则:读取,计数器清零,并回到发送命令状态
否则,do nothing
break;
default:
break;
}
}
定时器的基准中断可以自己细化,我是50ms一个中断:
void HAL_TIM_PeriodElapsedCallback(TIM_HandleTypeDef *htim)
{
如果ds18b20已经处于等待状态,
则计数++
}
这样就是一个简单的传感器定时采样的状态机思路,不会死等,效率较高,而且稳定。
注意ds18b20的时序性比较严格,网上说不能被打断的,但是后来移植到freertos中,也是可以的,温度采样还算稳定,但是考虑到后续程序比较大,因此还是裸机了,状态机的思路基本能解决。
本文系网络转载,版权归原作者所有。
- labview状态机分享 20次下载
- 单片机之状态机浅谈
- 单片机编程技巧—状态机编程
- 基于单片机的极简图形化状态机框架NorthFrame
- 一个应用在单片机上的极简图形化状态机框架NorthFrame
- 当单片机遇到状态机 入门QP
- 51中断系统与vhdl状态机
- LABVIEW的状态机实现资料合集 51次下载
- 当单片机遇到状态机(一) QP框架的入门
- [单片机笔记]使用状态机扫描矩阵键盘
- 单片机C语言 -- 基于条件选择的状态机编程技巧
- 状态机原理及用法 0次下载
- 状态机代码生成工具 9次下载
- 单片机键盘扫描之状态机实现
- 如何写好状态机
- 状态机该怎么监控 987次阅读
- Spring状态机的实现原理和使用方法 3.1k次阅读
- SaberRD状态机建模工具介绍(一)什么是状态机建模 2.9k次阅读
- 如何利用Linux下的工具来自动生成实用的状态机框架? 2.4k次阅读
- 什么是状态机?状态机的种类与实现 1.3w次阅读
- 嵌入式之状态机编程 1.5k次阅读
- 基于事件驱动的有限状态机介绍 1.6k次阅读
- 如何构建基于状态机的软件系统 2.2k次阅读
- 状态机到底是什么 4.6k次阅读
- 状态机概述 如何理解状态机 1.1w次阅读
- 状态机和组合逻辑的冒险竞争浅析 4.3k次阅读
- 利用74LS161实现复杂状态机 1.1w次阅读
- 基于状态机的单片机按键短按长按功能的实现 2.1w次阅读
- 初学者对有限状态机(FSM)的设计的认识 4.7k次阅读
- 利用状态机的状态机实现层次结构化设计 3.7k次阅读
下载排行
本周
- 1冷柜-电气控制系统讲解
- 13.68 MB | 4次下载 | 10 积分
- 2安川A1000变频器中文版说明书
- 20.16 MB | 3次下载 | 3 积分
- 3直流电路的组成和基本定律
- 1.67 MB | 2次下载 | 免费
- 4丹佛斯2800系列变频器说明书
- 8.00 MB | 1次下载 | 5 积分
- 5PC8011同步开关型降压3.5A单节锂电池充电管理电路技术手册
- 0.74 MB | 1次下载 | 免费
- 6ES7243E+ES8311音频录制与播放电路资料
- 0.06 MB | 1次下载 | 5 积分
- 7SDM02 激光测距模块产品手册
- 0.43 MB | 1次下载 | 免费
- 8SDFM 激光测距模块模组手册
- 0.54 MB | 1次下载 | 免费
本月
- 1CH341编程器软件NeoProgrammer_2.2.0.10
- 20.47 MB | 170次下载 | 1 积分
- 22025智能家居传感器市场分析及创新应用
- 3.11 MB | 43次下载 | 免费
- 3RV1126B系列开发板产品资料
- 4.19 MB | 18次下载 | 免费
- 4CH341编程软件下载
- 2.50 MB | 16次下载 | 5 积分
- 5全志系列-米尔基于T153核心板开发板 四核异构、3路千兆网,赋能多元化工业场景
- 3.05 MB | 12次下载 | 免费
- 6【开源】60余套STM32单片机、嵌入式Linux、物联网、人工智能项目案例及入门学习资源包
- 10.55 MB | 8次下载 | 免费
- 7冷柜-电气控制系统讲解
- 13.68 MB | 4次下载 | 10 积分
- 8特斯拉MODEL S车载充电机主电路回路原理图
- 0.81 MB | 4次下载 | 3 积分
总榜
- 1matlab软件下载入口
- 未知 | 935137次下载 | 10 积分
- 2开源硬件-PMP21529.1-4 开关降压/升压双向直流/直流转换器 PCB layout 设计
- 1.48MB | 420064次下载 | 10 积分
- 3Altium DXP2002下载入口
- 未知 | 233094次下载 | 10 积分
- 4电路仿真软件multisim 10.0免费下载
- 340992 | 191448次下载 | 10 积分
- 5十天学会AVR单片机与C语言视频教程 下载
- 158M | 183356次下载 | 10 积分
- 6labview8.5下载
- 未知 | 81604次下载 | 10 积分
- 7Keil工具MDK-Arm免费下载
- 0.02 MB | 73824次下载 | 10 积分
- 8LabVIEW 8.6下载
- 未知 | 65991次下载 | 10 积分
电子发烧友App





创作
发文章
发帖
提问
发资料
发视频
上传资料赚积分
评论