久久国产成人av_抖音国产毛片_a片网站免费观看_A片无码播放手机在线观看,色五月在线观看,亚洲精品m在线观看,女人自慰的免费网址,悠悠在线观看精品视频,一级日本片免费的,亚洲精品久,国产精品成人久久久久久久

分享

STM32快速用起來FreeRTOS

 rookie 2020-04-11

技能的學習首先就要不求甚解,,先用起來再學習原理。學習RTOS亦是如此,,不能一開始就埋進源碼中,。這篇主要講怎么快速在STM32系列單片機上用起來FreeRTOS,并順帶著說一下自學的方法及資料查找,。

01

說在前面

RTOS為了提高任務調(diào)度效率一般都包含匯編程序,,因此移植起來需要一些匯編知識,就算網(wǎng)上肯定有移植教程,,初次搞起來還是挺費勁的,。初學時對RTOS代碼不熟悉,一開始就打擊了積極性可不好,。因此本篇不講怎么移植,,介紹使用ST“懶人神器”CubeMX來快速移植配置FreeRTOS。

02

RTOS介紹

目前嵌入式主流RTOS有uCOS,、FreeRTOS,,之所以很多第三方庫都有在FreeRTOS上的應用Demo,是因為FreeRTOS免費,。不要錢是真的厲害呀,!然而說實話,論源碼規(guī)范,,我還是喜歡uCOS,。FreeRTOS的匈牙利命名法真是讓我難受呀~~~

03

配置CubeMX

設計實驗:配置CubeMX移植FreeRTOS,建立兩個任務,,一個讓LED0以500ms亮滅,,一個讓LED1以200ms亮滅。

比較本實驗和前面《消除硬延時函數(shù)Delay》的編程方式,,體會引入操作系統(tǒng)后軟件編程架構的變化,。

第一步

首先如1處勾選使用FreeRTOS的enable。然后將HAL庫的1ms定時中斷采用的定時器改為TIM1,,因為Systick要用作FreeRTOS的時基定時,。第三步配置IO口。忘記怎么配置的溫故《STM32CubeMX入門教程(一)》,。

第二步

配置FreeRTOS,。點擊FREERTOS按鈕。

配置界面如下,,通過配置界面可以實現(xiàn)操作系統(tǒng)的配置,、任務的配置、隊列、信號量及內(nèi)存管理的配置,。

ConfigParameters:配置操作系統(tǒng)功能,,就像手動移植時修改Config文件一樣,基本上可以按默認值,。具體每個配置的功能,,可以點擊該條目,底部會有相關介紹,。

IncludeParameters:配置操作系統(tǒng)API,,一些API不常用可以不使能編譯,減小系統(tǒng)大小,。這個也對應與移植時的Config文件,。例如刪除任務函數(shù)vTaskDelete()是否使能就在此配置。具體如下圖:

UserConstants:添加一些用戶使用的常量,,很少用,。

TaskAndQueues:任務及隊列的配置。首先說任務配置,,點擊ADD,,彈出配置對話框。TaskName是任務名稱,,一個字符串而已。下面是優(yōu)先級配置,,再往下是任務堆棧大小,。EntryFunction是任務函數(shù)名。CodeGenerationOption是選擇自動生成代碼是否聲明成weak,。Allocation是配置內(nèi)存是否動態(tài)分配,,此處CUbeMX默認動態(tài)分配不給更改。

之后再看一下隊列的創(chuàng)建,。如下圖,,點擊ADD,彈出配置對話框,。首先是隊列名稱,。QueueSize是隊列長度,即包含的隊列項個數(shù),。ItemSIze是隊列項類型,。

TimersAndSemaphores:即軟件定時器及信號量的配置,界面如下圖,。Timer處的ADD按鈕不能點擊,,因為我們在配置時未使能軟件定時器功能。從上到下依次是:軟件定時器、互斥信號量,、遞歸信號量,、二值信號量、計數(shù)信號量,。

最后看一下堆棧及內(nèi)存管理,。

FreeRTOS Heap Usage:界面如下,這里會根據(jù)前面配置顯示出動態(tài)內(nèi)存使用情況,。用戶可配置內(nèi)存管理大小,,但不能比已配置使用了的小。所謂操作系統(tǒng)的內(nèi)存管理,,就是它自己先定義一個超大的數(shù)組,,把內(nèi)存坑全占了。你在應用開發(fā)時要拉屎,,你要用哪個坑你說的不算,,你告訴操作系統(tǒng),“我這邊四個哥們,,給我來四個坑”,,操作系統(tǒng)會找到一個連續(xù)的四個坑,并把首地址以指針的方式告訴你,,如果沒坑了,,就反饋申請內(nèi)存失敗。當然,,拉完要釋放內(nèi)存~之所以用FreeRTOS內(nèi)存管理,,是因為該操作系統(tǒng)提供5種內(nèi)存管理方案,有內(nèi)存碎片回收功能,,很強大,。

04

編程

配置完后生成代碼,打開freertos.c文件,,編寫任務函數(shù)代碼,。

osDelay()函數(shù)并不是FreeRTOS的原版API函數(shù),而是加上了CMSIS-RTOS封裝后的函數(shù),。

05

CMSIS-RTOS

我們知道,,大多數(shù)RTOS的原理都差不多的,都是任務調(diào)度,、延時函數(shù),、信號量、隊列等等東西,。Keil有自己的RTX操作系統(tǒng),。后來ARM收購了Keil,。CMSIS-RTOS相當于將不同廠家的RTOS封裝一下,形成了一個標準的API函數(shù)庫,。FreeRTOS的匈牙利命名法實在讓我難受,,我更喜歡用這個封裝庫。有時候想輸入一個函數(shù),,知道是Task的API,,就因為想不起來前面匈牙利縮寫是什么,硬是敲不出來,,編輯器也不提醒,,因為函數(shù)開頭就不知道是啥~~~~~

06

授之以魚不如授之以漁

最后說一下自學方法。

通過本篇,,你至少可以寫出個非同步LED閃爍程序了吧,。體驗一下就好了。

然后,,學習CMSIS-RTOS有哪些API,,以及怎么用這些API。官網(wǎng)http://www./pack/doc/cmsis/RTOS/html/index.html ,。每個API函數(shù),,都有在線例程代碼,看起來非常爽,。當然你如果喜歡原版API,,這步就算了。

最后,,當用熟了之后再去學習源碼,。

最后的最后,有了操作系統(tǒng),,你就會知道項目怎么劃分任務了?你就可以做到全局變量不滿天飛了,?你就能編寫出好看的代碼了,?

    本站是提供個人知識管理的網(wǎng)絡存儲空間,所有內(nèi)容均由用戶發(fā)布,,不代表本站觀點,。請注意甄別內(nèi)容中的聯(lián)系方式、誘導購買等信息,,謹防詐騙,。如發(fā)現(xiàn)有害或侵權內(nèi)容,請點擊一鍵舉報,。
    轉(zhuǎn)藏 分享 獻花(0

    0條評論

    發(fā)表

    請遵守用戶 評論公約

    類似文章 更多