資料介紹
原文:https://www.cnblogs.com/CodeWorkerLiMing/p/12501934.html
在單片機裸機的編程方法中,狀態(tài)機的方法是比較好的,經(jīng)典的比如按鍵的檢測判斷等。
其實有很多地方可以使用這種思想。比如傳感器的數(shù)據(jù)采集,因為單片機不可能一直等待著運行,那樣的效率是很低的,通常都是結(jié)合fsm + timer的方式來提高CPU的使用率。
傳感器中使用fsm的方法
大家都知道,ds18b20的采集是比較慢的,發(fā)送轉(zhuǎn)換指令后,最慢需要等待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,效率太低了,實際工作中根本無法接受。
因此,做了一個狀態(tài)機:
int main(int argc, char const *argv[])
{
while(1)
{
ds18b20_discope();
}
return0;
}
void ds18b20_discope(void)
{
switch (ds18b20的狀態(tài)機的全局變量)
{
case 發(fā)送命令:
發(fā)送轉(zhuǎn)換命令
賦值到等待裝態(tài)
break;
case 等待裝態(tài):
判斷是否有超時,
如果有超時,則:讀取,計數(shù)器清零,并回到發(fā)送命令狀態(tài)
否則,do nothing
break;
default:
break;
}
}
定時器的基準中斷可以自己細化,我是50ms一個中斷:
void HAL_TIM_PeriodElapsedCallback(TIM_HandleTypeDef *htim)
{
如果ds18b20已經(jīng)處于等待狀態(tài),
則計數(shù)++
}
這樣就是一個簡單的傳感器定時采樣的狀態(tài)機思路,不會死等,效率較高,而且穩(wěn)定。
注意ds18b20的時序性比較嚴格,網(wǎng)上說不能被打斷的,但是后來移植到freertos中,也是可以的,溫度采樣還算穩(wěn)定,但是考慮到后續(xù)程序比較大,因此還是裸機了,狀態(tài)機的思路基本能解決。
本文系網(wǎng)絡(luò)轉(zhuǎn)載,版權(quán)歸原作者所有。
- labview狀態(tài)機分享 15次下載
- 單片機之狀態(tài)機淺談
- 單片機編程技巧—狀態(tài)機編程
- 基于單片機的極簡圖形化狀態(tài)機框架NorthFrame
- 一個應(yīng)用在單片機上的極簡圖形化狀態(tài)機框架NorthFrame
- 當單片機遇到狀態(tài)機 入門QP
- 51中斷系統(tǒng)與vhdl狀態(tài)機
- LABVIEW的狀態(tài)機實現(xiàn)資料合集 47次下載
- 當單片機遇到狀態(tài)機(一) QP框架的入門
- [單片機筆記]使用狀態(tài)機掃描矩陣鍵盤
- 單片機C語言 -- 基于條件選擇的狀態(tài)機編程技巧
- 狀態(tài)機原理及用法 0次下載
- 狀態(tài)機代碼生成工具 9次下載
- 單片機鍵盤掃描之狀態(tài)機實現(xiàn)
- 如何寫好狀態(tài)機
- 狀態(tài)機該怎么監(jiān)控 439次閱讀
- Spring狀態(tài)機的實現(xiàn)原理和使用方法 2170次閱讀
- SaberRD狀態(tài)機建模工具介紹(一)什么是狀態(tài)機建模 1775次閱讀
- 如何利用Linux下的工具來自動生成實用的狀態(tài)機框架? 1415次閱讀
- 什么是狀態(tài)機?狀態(tài)機的種類與實現(xiàn) 9880次閱讀
- 嵌入式之狀態(tài)機編程 856次閱讀
- 基于事件驅(qū)動的有限狀態(tài)機介紹 1066次閱讀
- 如何構(gòu)建基于狀態(tài)機的軟件系統(tǒng) 1567次閱讀
- 狀態(tài)機到底是什么 3811次閱讀
- 狀態(tài)機概述 如何理解狀態(tài)機 1w次閱讀
- 狀態(tài)機和組合邏輯的冒險競爭淺析 3995次閱讀
- 基于狀態(tài)機的單片機按鍵短按長按功能的實現(xiàn) 1.9w次閱讀
- 初學(xué)者對有限狀態(tài)機(FSM)的設(shè)計的認識 4339次閱讀
- 利用狀態(tài)機的狀態(tài)機實現(xiàn)層次結(jié)構(gòu)化設(shè)計 3337次閱讀
- 使用ModelSim自動生成狀態(tài)機FSM的狀態(tài)轉(zhuǎn)換圖 1.5w次閱讀
下載排行
本周
- 1TC358743XBG評估板參考手冊
- 1.36 MB | 330次下載 | 免費
- 2開關(guān)電源基礎(chǔ)知識
- 5.73 MB | 6次下載 | 免費
- 3100W短波放大電路圖
- 0.05 MB | 4次下載 | 3 積分
- 4嵌入式linux-聊天程序設(shè)計
- 0.60 MB | 3次下載 | 免費
- 5基于FPGA的光纖通信系統(tǒng)的設(shè)計與實現(xiàn)
- 0.61 MB | 2次下載 | 免費
- 6基于FPGA的C8051F單片機開發(fā)板設(shè)計
- 0.70 MB | 2次下載 | 免費
- 751單片機窗簾控制器仿真程序
- 1.93 MB | 2次下載 | 免費
- 8基于51單片機的RGB調(diào)色燈程序仿真
- 0.86 MB | 2次下載 | 免費
本月
- 1OrCAD10.5下載OrCAD10.5中文版軟件
- 0.00 MB | 234315次下載 | 免費
- 2555集成電路應(yīng)用800例(新編版)
- 0.00 MB | 33564次下載 | 免費
- 3接口電路圖大全
- 未知 | 30323次下載 | 免費
- 4開關(guān)電源設(shè)計實例指南
- 未知 | 21548次下載 | 免費
- 5電氣工程師手冊免費下載(新編第二版pdf電子書)
- 0.00 MB | 15349次下載 | 免費
- 6數(shù)字電路基礎(chǔ)pdf(下載)
- 未知 | 13750次下載 | 免費
- 7電子制作實例集錦 下載
- 未知 | 8113次下載 | 免費
- 8《LED驅(qū)動電路設(shè)計》 溫德爾著
- 0.00 MB | 6653次下載 | 免費
總榜
- 1matlab軟件下載入口
- 未知 | 935054次下載 | 免費
- 2protel99se軟件下載(可英文版轉(zhuǎn)中文版)
- 78.1 MB | 537796次下載 | 免費
- 3MATLAB 7.1 下載 (含軟件介紹)
- 未知 | 420026次下載 | 免費
- 4OrCAD10.5下載OrCAD10.5中文版軟件
- 0.00 MB | 234315次下載 | 免費
- 5Altium DXP2002下載入口
- 未知 | 233046次下載 | 免費
- 6電路仿真軟件multisim 10.0免費下載
- 340992 | 191185次下載 | 免費
- 7十天學(xué)會AVR單片機與C語言視頻教程 下載
- 158M | 183278次下載 | 免費
- 8proe5.0野火版下載(中文版免費下載)
- 未知 | 138040次下載 | 免費
評論