<nobr id="eeyoh"><big id="eeyoh"></big></nobr>

  • <button id="eeyoh"><acronym id="eeyoh"><cite id="eeyoh"></cite></acronym></button>

    <dd id="eeyoh"></dd>
    1. <dd id="eeyoh"><center id="eeyoh"></center></dd>

      <th id="eeyoh"></th>
      1. <span id="eeyoh"></span>
        更多課程 選擇中心

        嵌入式培訓
        達內IT學院

        400-111-8989

        單片機的狀態機框架

        • 發布:嵌入式培訓
        • 來源:嵌入式資訊
        • 時間:2020-03-27 16:13

        在單片機裸機的變成方法中,狀態機的方法是比較好的,經典的比如按鍵的檢測判斷等。其實有很多地方可以使用這種思想。比如傳感器的數據采集,因為單片機不可能一直等待著運行,那樣的效率是很低的,通常都是結合fsm + timer的方式來提高CPU的使用率。

        傳感器中使用fsm的方法大家都知道,ds18b20的采集是比較慢的,發送轉換指令后,最慢需要等待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,效率太低了,實際工作中根本無法接受。

        因此,做了一個狀態機:

        int main(int argc, char const *argv[])

        {

        while(1)

        {

        ds18b20_discope();

        } return 0;

        }

        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中,也是可以的,溫度采樣還算穩定,但是考慮到后續程序比較大,因此還是裸機了,狀態機的思路基本能解決。

        免責聲明:整理文章為相關技術,版權歸原作者所有,如有侵權,請聯系刪除

        預約申請免費試聽課

        填寫下面表單即可預約申請免費試聽!怕錢不夠?可就業掙錢后再付學費! 怕學不會?助教全程陪讀,隨時解惑!擔心就業?一地學習,可全國推薦就業!

        上一篇:ARM到底是馮諾依曼結構還是哈佛結構
        下一篇:做嵌入式憑什么高薪工作是別人?

        單片機:寫1清零,寫0清零,有什么區別?

        嵌入式工程師一定不要亂用全局變量

        嵌入式培訓靠譜嗎?就業怎么樣?

        新手如何學習單片機?

        • 掃碼領取資料

          回復關鍵字:視頻資料

          免費領取 達內課程視頻學習資料

        • 視頻學習QQ群

          添加QQ群:1143617948

          免費領取達內課程視頻學習資料

        Copyright ? 2021 Tedu.cn All Rights Reserved 京ICP備08000853號-56 京公網安備 11010802029508號 達內時代科技集團有限公司 版權所有

        選擇城市和中心
        黑龍江省

        吉林省

        河北省

        湖南省

        貴州省

        云南省

        廣西省

        海南省

        中文第一社区天天射干20191024香蕉视频1024香蕉视频操逼逼网 百度 好搜 搜狗
        <蜘蛛词>| <蜘蛛词>| <蜘蛛词>| <蜘蛛词>| <蜘蛛词>| <蜘蛛词>| <蜘蛛词>| <蜘蛛词>| <蜘蛛词>| <蜘蛛词>| <蜘蛛词>| <蜘蛛词>| <蜘蛛词>| <蜘蛛词>| <蜘蛛词>| <蜘蛛词>| <蜘蛛词>| <蜘蛛词>| <蜘蛛词>| <蜘蛛词>| <蜘蛛词>| <蜘蛛词>| <蜘蛛词>| <蜘蛛词>| <蜘蛛词>| <蜘蛛词>| <蜘蛛词>| <蜘蛛词>| <蜘蛛词>| <蜘蛛词>| <蜘蛛词>| <蜘蛛词>| <蜘蛛词>| <蜘蛛词>| <蜘蛛词>| <蜘蛛词>| <蜘蛛词>| <蜘蛛词>| <蜘蛛词>| <蜘蛛词>| <蜘蛛词>| <文本链> <文本链> <文本链> <文本链> <文本链> <文本链>