當前位置:首頁 > 公眾號精選 > 嵌入式微處理器
[導讀]在單片機裸機的編程方法中,狀態(tài)機的方法是比較好的,經典的比如按鍵的檢測判斷等。其實,有很多地方可以使用這種思想,比如傳感器的數據采集。因為單片機不可能一直等待著運行,那樣的效率是很低的,通常都是結合fsmtimer的方式來提高CPU的使用率。下面簡單介紹一下傳感器中使用fsm的方...


單片機裸機的編程方法中,狀態(tài)機的方法是比較好的,經典的比如按鍵的檢測判斷等。

其實,有很多地方可以使用這種思想,比如傳感器的數據采集。因為單片機不可能一直等待著運行,那樣的效率是很低的,通常都是結合fsm timer的方式來提高CPU的使用率。

下面簡單介紹一下傳感器中使用fsm的方法。

大家都知道,ds18b20的采集是比較慢的,發(fā)送轉換指令后,最慢需要等待720ms,這個時間有點太長了。簡直不能忍受。

如下所示,我采用了11bit分辨率,0.125的分辨率足夠了,作為溫度參考而已。

9 - bit resolution 93.75 ms 0.5
10 - bit resolution 187.5 0.25
11 - bit resolution 375 0.125
12 - bit resolution 750 0.0625
那么,我肯定不是死等的。死等多浪費cpu,效率太低了,實際工作中根本無法接受。因此,我做了一個狀態(tài)機:

int main(int argc, char const *argv[])
{
while(1)
{
ds18b20_discope();
}
return 0;
}
void ds18b20_discope(void)
{
switch (ds18b20的狀態(tài)機的全局變量)
{
case 發(fā)送命令:
發(fā)送轉換命令
賦值到等待裝態(tài)
break;
case 等待裝態(tài):
判斷是否有超時,
如果有超時,則:讀取,計數器清零,并回到發(fā)送命令狀態(tài)
否則,do nothing
break;
default:
break;
}
}
定時器的基準中斷可以自己細化,我是50ms一個中斷:

void HAL_TIM_PeriodElapsedCallback(TIM_HandleTypeDef *htim)
{
如果ds18b20已經處于等待狀態(tài),
則計數
}
這樣就是一個簡單的傳感器定時采樣的狀態(tài)機思路,不會死等,效率較高,而且穩(wěn)定。

注意:ds18b20的時序性比較嚴格,網上說不能被打斷的,但是后來移植到freertos中,也是可以的,溫度采樣還算穩(wěn)定,但是考慮到后續(xù)程序比較大,因此還是裸機了,狀態(tài)機的思路基本能解決。


END
作者:wdliming原文地址:www.cnblogs.com/CodeWorkerLiMing/p/12501934.html版權歸原作者所有,如有侵權,請聯(lián)系刪除。
嵌入式ARM

掃描二維碼,關注更多精彩內容

本站聲明: 本文章由作者或相關機構授權發(fā)布,目的在于傳遞更多信息,并不代表本站贊同其觀點,本站亦不保證或承諾內容真實性等。需要轉載請聯(lián)系該專欄作者,如若文章內容侵犯您的權益,請及時聯(lián)系本站刪除。
換一批
延伸閱讀

串口作為單片機開發(fā)的一個常用的外設,應用范圍非常廣。大部分時候,串口需要接收處理的數據長度是不定的。那么怎么才能判斷一幀數據是否結束呢,今天就以STM32單片機為例,介紹幾種接收不定長數據的方法。

關鍵字: 單片機 串口 STM32

單片機誕生于1971年,經歷了SCM、MCU、SoC三大階段。單片機由以前的1位、4位、8位、16位,發(fā)展到現在的32位甚至64位。當前國內MCU廠商已有上百家,對標進口芯片的情況非常嚴重,導致國內MCU產品將陷入同質化...

關鍵字: 單片機 MCU 市場

(微控制單元 MCU(Microcontroller Unit),又稱單片機,是把中央處理器(CentralProcess Unit; CPU)的頻率與規(guī)格做適當縮減,并將內存(memory)、計數器(Timer)、US...

關鍵字: 單片機 芯片 CPU

在疫情的影響下,出門后、用餐前使用酒精消毒已成了人們的日常,而酒精噴霧機也因此變得十分熱銷。為了避免交叉感染的風險,自動酒精噴霧器也就應運而生。不同于傳統(tǒng)手動噴霧器不美觀、手部接觸不衛(wèi)生的bug,此款自動感應酒精噴霧器使...

關鍵字: 芯嶺技術 方案開發(fā) 解決方案 單片機

在實際的單片機控制系統(tǒng)中,有時候會使用數字邏輯芯片對單片機和受控元件進行隔離,以保護單片機,或者令單片機更好地對后級進行控制。

關鍵字: 單片機 數字邏輯芯片 受控元件

MH32F103AVET6使用高性能的32位內核,內置了多達2個高級定時器、10個通用定時器、2個基本定時器、3個12位的ADC、2個12位的DAC,還包含標準和先進的通信接口包括:3個SPI接口、2個I2S接口、2個I...

關鍵字: 單片機 MCU

最近由于換季,天氣突然的轉涼,大家也是直呼好冷。天冷了自然是要注意防寒保暖。一個能夠當充電寶用的暖手寶會是你最好的陪伴。暖手寶是一種非常便捷易用的發(fā)熱工具,并且體形小巧,可以隨身攜帶并輕易握在手中,也可以放置在身上的其它...

關鍵字: 芯嶺技術 方案開發(fā) 解決方案 單片機

XL32F003 系列微控制器采用高性能的 32 位 ARM?Cortex?- M0+ 內核,寬電壓工作范圍的MCU。嵌入高達64 Kbytes flash和8 Kbytes SRAM存儲器,最高工作頻率32 MHz。包...

關鍵字: 單片機 MCU

電動洗鼻器是一種全新的鼻腔清潔工具,一般是通過水壓將生理鹽水送進鼻腔,借助于生理鹽水的殺菌作用及水流的沖擊力,將鼻腔內已聚集的致病菌及污洉排出,從而使鼻腔恢復正常的生理環(huán)境,恢復鼻腔的自我排毒功能,達到保護鼻腔的目的。讓...

關鍵字: 芯嶺技術 方案開發(fā) 解決方案 單片機

大家好,我是小舒,今天我?guī)砹艘粋€開源項目。學習單片機的小伙伴,對J-link一定不會陌生。J-link可以使用JATA和SWD接口進行在線Debug和程序的燒錄,曾經一段時間,某寶上J-Link鋪天蓋地,各種各樣,價格...

關鍵字: 開源項目 J-link 單片機

嵌入式微處理器

1170 篇文章

關注

發(fā)布文章

編輯精選

技術子站

關閉