Ⅰ
寫在前面
上一篇我文章提供大家可直接運(yùn)行的代碼,如果測試過的朋友應(yīng)該知道,想要FreeRTOS運(yùn)行起來其實很簡單,不用修改很多代碼和配置信息,就可以將FreeRTOS添加到自己的工程中并成功跑起來。
從本文開始講述FreeRTOS中的代碼,為了照顧大部分朋友,還是以簡單,基礎(chǔ)為原則。
FreeRTOS中“FreeRTOSConfig.h”配置的內(nèi)容隨著版本(功能)的增加而增加,也就是說隨著系統(tǒng)功能的增加,對應(yīng)需要的配置信息也響應(yīng)增加了。但是系統(tǒng)為了兼容之前的代碼,系統(tǒng)自身做了兼容處理。
比如:configUSE_QUEUE_SETS是屬于“FreeRTOSConfig.h”中定義的選項,如果用戶沒有定義,則在“FreeRTOS.h”中有類似如下定義。
#ifndefconfigUSE_QUEUE_SETS
#defineconfigUSE_QUEUE_SETS0
#endif
開始設(shè)計FreeRTOS系統(tǒng)時,工程師們肯定會想到,要盡量減少開發(fā)者的開發(fā)難度。我們初學(xué)移植FreeRTOS時,“FreeRTOSConfig.h”中的大部分配置都選擇默認(rèn)即可。只有后期熟悉了,開發(fā)需要使用較多功能的時候,里面各項的配置就必須要熟透。
對英文不反感的朋友建議參考官網(wǎng)的內(nèi)容,畢竟官網(wǎng)的資料才是最權(quán)威的。
官網(wǎng)地址:
http://www.freertos.org/a00110.html
從官網(wǎng)提供的資料,可以看得出“FreeRTOSConfig.h”將配置信息劃分為10大類,但是很多配置信息我們都可以選擇不用(或者不定義)。
微信公眾號中技術(shù)文章篇幅不易過長,本文針對初學(xué)者,先講述通用的配置。
Ⅱ
通用配置
這一章也叫基本配置,反正就是需要我們定義的一些配置,也是比較重要的配置。
1.configUSE_PREEMPTION
調(diào)度模式配置
配置為0:合作式調(diào)度,即時間片輪流執(zhí)行;
配置為1:搶占式調(diào)度,即優(yōu)先級高的任務(wù)搶先執(zhí)行;
由于我們要求實時響應(yīng),就配置為1,使用搶占式調(diào)度方式。否則就發(fā)揮不到實時操作系統(tǒng)的作用。
2.configCPU_CLOCK_HZ
CPU時鐘,就是我們常說的主頻。注意:單位是Hz。
如:STM32F407主頻為168M:
#define configCPU_CLOCK_HZ (168000000)
系統(tǒng)滴答,即系統(tǒng)每秒鐘滴答的次數(shù),可以說是系統(tǒng)的心跳,但需要和主頻區(qū)分開來。系統(tǒng)滴答的值要根據(jù)CPU主頻來看,一般主頻越高,取值相對越大,一般在100至1000之間。
簡單舉例:系統(tǒng)滴答決定vTaskDelay。
比如:
#define configTICK_RATE_HZ (1000)
則:
vTaskDelay(1000),表示延時1S。
4.configMAX_PRIORITIES
系統(tǒng)最大優(yōu)先級值
我們創(chuàng)建任務(wù)是,配置的優(yōu)先級值不能超過這個最大值。
xTaskCreate(vAppTask1, "Task1", TASK1_STACK_SIZE, NULL,TASK1_PRIORITY, NULL);
提示:
a.系統(tǒng)優(yōu)先級和中斷優(yōu)先級原理類似,高優(yōu)先級的會搶在低優(yōu)先級的前面,但需要區(qū)分系統(tǒng)和中斷優(yōu)先級的應(yīng)用場景。
b.FreeRTOS中優(yōu)先級數(shù)值越大,優(yōu)先級越高。而UCOS則相反。
5.configMINIMAL_STACK_SIZE
最小堆棧值
在系統(tǒng)中,一般用于空閑、定時等一些系統(tǒng)任務(wù)中,當(dāng)然,我們有些地方也可以使用這個定義的堆棧值。
注意數(shù)值的單位,一般在ARM中為4個字節(jié)。
6.configTOTAL_HEAP_SIZE
系統(tǒng)總共堆(棧)大小
我們需要根據(jù)需要使用的情況定義這個值。不能定義太小,太小內(nèi)存容易溢出;也不能定義太大,有些芯片RAM本身就不大(有些就只有幾K),如果太大我們就沒法定義太多全局變量,或分配其他堆棧空間。
7.configMAX_TASK_NAME_LEN
任務(wù)名稱最大長度
也就是創(chuàng)建任務(wù)定義任務(wù)名稱的字符串長度
xTaskCreate(vAppTask1, "Task1", TASK1_STACK_SIZE, NULL, TASK1_PRIORITY, NULL);
提示:結(jié)束符 '\0'也包含在內(nèi)。
8.configUSE_16_BIT_TICKS
是否使用16位滴答計數(shù)值
配置為0:則使用32位的滴答計數(shù)值,一般在32位處理器中都是配置為0;
配置為1:則使用16位的滴答計數(shù)值,一般8位或者16位處理器中配置為1。
9.configIDLE_SHOULD_YIELD
是否讓空閑任務(wù)“放棄”搶占
也就是說在執(zhí)行與空閑任務(wù)相同優(yōu)先級的任務(wù)過程中,空閑任務(wù)是否具有搶占的機(jī)會。
配置為0:不放棄搶占;
配置為1:放棄搶占;
10.configUSE_MUTEXES
是否使用互斥鎖
配置為0:禁能
配置為1:使能
-
cpu
+關(guān)注
關(guān)注
68文章
10951瀏覽量
213945 -
FreeRTOS
+關(guān)注
關(guān)注
12文章
484瀏覽量
62811 -
config
+關(guān)注
關(guān)注
0文章
15瀏覽量
4717
發(fā)布評論請先 登錄
相關(guān)推薦
Web Bluetooth SPP(串行端口配置文件)示例
如何導(dǎo)出交換機(jī)的配置文件
linux網(wǎng)卡配置文件
springboot的項目如何既要用jar包啟動,同時還可以為不同的機(jī)房設(shè)置不同的配置文件

HID over GATT配置文件(HOGP)低功耗藍(lán)牙

確定LDO的任務(wù)配置文件兼容性

freertos最多支持多少個任務(wù)
InModbus2配置文件的注意事項
如何完成編輯配置文件來采集數(shù)據(jù)
在Nucleo-H743ZI2板上運(yùn)行wifi_scan示例,啟用FreeRTOS時堆部分被禁用,為什么?
鴻蒙開發(fā)Ability Kit程序框架服務(wù):FA模型應(yīng)用配置文件

鴻蒙開發(fā):【Stage模型應(yīng)用配置文件】

評論