vishay欢迎光临。

单片机状态机框架

原文:https://www.cnblogs.com/CodeWorkerLiMing/p/12501934.html在单片机的裸机转换方法中,状态机方法更好,经典方法是按钮的检测和判断。

实际上,在很多地方都可以使用此想法。

例如传感器的数据采集,由于单片机无法一直等待运行,效率非常低,通常采用组合fsm + timer的方法来提高CPU的利用率。

在传感器中使用fsm的方法每个人都知道ds18b20的获取相对较慢。

发送转换命令后,最慢的需要等待720ms,这个时间有点长。

简直难以忍受。

如下图所示:我使用11位分辨率,0.125分辨率就足以作为温度参考。

9位分辨率93.75 ms 0.510位分辨率187.5 0.2511位分辨率375 0.12512位分辨率750 0.0625那么我肯定不是在等待,等待和浪费更多的CPU,效率太低,在实际工作中根本无法接受。

因此,将创建一个状态机:int main(int argc,char const * argv []){while(1){ds18b20_discope();} return 0;} void ds18b20_discope(void){switch(ds18b20状态的全局状态机器变量){case send command:发送转换命令分配以等待安装中断;案例等待安装:判断是否存在超时,如果存在超时,则:读取,清除计数器,并返回发送命令状态,否则,不做任何中断;默认值:break; }}计时器的基准中断可以自己完善,我的中断是50ms:void HAL_TIM_PeriodElapsedCallback(TIM_HandleTypeDef * htim){如果ds18b20已经处于等待状态,请计数++}这是一个简单的传感器状态机定时采样的想法不死,高效稳定。

请注意,ds18b20的时序相对严格。

在互联网上据说它不能被打断,但是也有可能迁移到freertos。

温度采样仍然稳定,但是考虑到后续程序相对较大,因此仍然是裸机。

状态机的思想基本上可以解决。

-END-猜猜你喜欢它。

阅读本文后,您仍然不知道如何制造平衡车。

过来打我为什么中国的电子工程师从事软件更好?谈论指针。

最后,如果您认为本文不错,那么转发和共享也是我们继续更新的动力。

5T资源正在销售中!包括但不限于:C / C ++,Linux,Python,Java,PHP,人工智能,PCB,FPGA,DSP,labview,微控制器等!回复“更多资源”在官方帐户中,您可以免费获得它,并期待您的关注〜长按识别图片中的QR码关注



以上内容来自于网络,不代表本公司本网站同意其观点及内容。

欢迎您的咨询

  • 联想ThinkPad T14s Ryzen Edition笔记本电脑,配备Ryzen 7 PRO 4750U处理器
  • 最好的时间多久更换一次汽车电池?
  • 晋南将建设中国物联网产业示范核心区
  • 据悉,苹果已经开发出折叠机面板样品
  • 40多张最完整的Linux / C / C ++思维导图供您收集!
  • 迷你D1WiFi模块的Arduino开发简介
  • 低频无线通信系统设计
  • 基于Web的通信电源远程监控系统设计
  • 华为商店删除了所有Honor产品
  • 基于GPRS的火灾监控系统设计
  • 三星S21参数配置发现卖点在于图像配置。三星S21国家银行价格从4999开始
  • NVIDIA的同步技术G-Sync放宽了要求
  • 被称为“最美丽的下巴” realme X7系列热身:COP封装成本非常高
  • 哪种UVLED固化机适合高强度UV胶的固化
  • 三星打算在PC芯片领域有所作为,最快在今年年底推出Orion PC芯片
  • 创新发布的Sound Blaster ZE独立声卡:只是一个软更新
  • 2020年我国汽车销量将达到2531万辆,连续12年居世界第一
  • Vectra工业计算机功能的介绍和应用
  • 解决卡车在盲区右转的隐患
  • 英特尔计划在医疗技术领域建立SPAC,以筹集10亿美元的资金