資料介紹
原文: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狀態機分享 11次下載
- 單片機之狀態機淺談
- 單片機編程技巧—狀態機編程
- 基于單片機的極簡圖形化狀態機框架NorthFrame
- 一個應用在單片機上的極簡圖形化狀態機框架NorthFrame
- 當單片機遇到狀態機 入門QP
- 51中斷系統與vhdl狀態機
- LABVIEW的狀態機實現資料合集 41次下載
- 當單片機遇到狀態機(一) QP框架的入門
- [單片機筆記]使用狀態機掃描矩陣鍵盤
- 單片機C語言 -- 基于條件選擇的狀態機編程技巧
- 狀態機原理及用法 0次下載
- 狀態機代碼生成工具 9次下載
- 單片機鍵盤掃描之狀態機實現
- 如何寫好狀態機
- 狀態機該怎么監控 310次閱讀
- Spring狀態機的實現原理和使用方法 1680次閱讀
- SaberRD狀態機建模工具介紹(一)什么是狀態機建模 1249次閱讀
- 如何利用Linux下的工具來自動生成實用的狀態機框架? 1084次閱讀
- 什么是狀態機?狀態機的種類與實現 7941次閱讀
- 嵌入式之狀態機編程 718次閱讀
- 基于事件驅動的有限狀態機介紹 941次閱讀
- 如何構建基于狀態機的軟件系統 1417次閱讀
- 狀態機到底是什么 3671次閱讀
- 狀態機概述 如何理解狀態機 1w次閱讀
- 狀態機和組合邏輯的冒險競爭淺析 3876次閱讀
- 利用74LS161實現復雜狀態機 9057次閱讀
- 基于狀態機的單片機按鍵短按長按功能的實現 1.8w次閱讀
- 初學者對有限狀態機(FSM)的設計的認識 4142次閱讀
- 利用狀態機的狀態機實現層次結構化設計 3248次閱讀
下載排行
本周
- 1TC358743XBG評估板參考手冊
- 1.36 MB | 330次下載 | 免費
- 2開關電源基礎知識
- 5.73 MB | 6次下載 | 免費
- 3100W短波放大電路圖
- 0.05 MB | 4次下載 | 3 積分
- 4嵌入式linux-聊天程序設計
- 0.60 MB | 3次下載 | 免費
- 5基于FPGA的光纖通信系統的設計與實現
- 0.61 MB | 2次下載 | 免費
- 6基于FPGA的C8051F單片機開發板設計
- 0.70 MB | 2次下載 | 免費
- 751單片機窗簾控制器仿真程序
- 1.93 MB | 2次下載 | 免費
- 8基于51單片機的RGB調色燈程序仿真
- 0.86 MB | 2次下載 | 免費
本月
- 1OrCAD10.5下載OrCAD10.5中文版軟件
- 0.00 MB | 234315次下載 | 免費
- 2555集成電路應用800例(新編版)
- 0.00 MB | 33564次下載 | 免費
- 3接口電路圖大全
- 未知 | 30323次下載 | 免費
- 4開關電源設計實例指南
- 未知 | 21548次下載 | 免費
- 5電氣工程師手冊免費下載(新編第二版pdf電子書)
- 0.00 MB | 15349次下載 | 免費
- 6數字電路基礎pdf(下載)
- 未知 | 13750次下載 | 免費
- 7電子制作實例集錦 下載
- 未知 | 8113次下載 | 免費
- 8《LED驅動電路設計》 溫德爾著
- 0.00 MB | 6653次下載 | 免費
總榜
- 1matlab軟件下載入口
- 未知 | 935054次下載 | 免費
- 2protel99se軟件下載(可英文版轉中文版)
- 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十天學會AVR單片機與C語言視頻教程 下載
- 158M | 183278次下載 | 免費
- 8proe5.0野火版下載(中文版免費下載)
- 未知 | 138040次下載 | 免費
評論
查看更多