資料介紹
原文: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





創作
發文章
發帖
提問
發資料
發視頻
上傳資料賺積分
評論