一区二区三区三上|欧美在线视频五区|国产午夜无码在线观看视频|亚洲国产裸体网站|无码成年人影视|亚洲AV亚洲AV|成人开心激情五月|欧美性爱内射视频|超碰人人干人人上|一区二区无码三区亚洲人区久久精品

0
  • 聊天消息
  • 系統(tǒng)消息
  • 評論與回復(fù)
登錄后你可以
  • 下載海量資料
  • 學(xué)習(xí)在線課程
  • 觀看技術(shù)視頻
  • 寫文章/發(fā)帖/加入社區(qū)
會員中心
創(chuàng)作中心

完善資料讓更多小伙伴認(rèn)識你,還能領(lǐng)取20積分哦,立即完善>

3天內(nèi)不再提示

FreeRTOS_004_FreeRTOSConfig.h配置文件(一) 升級版

黃工的嵌入式技術(shù)圈 ? 來源:黃工的嵌入式技術(shù)圈 ? 2020-03-14 14:06 ? 次閱讀
加入交流群
微信小助手二維碼

掃碼添加小助手

加入工程師交流群

寫在前面

上一篇我文章提供大家可直接運行的代碼,如果測試過的朋友應(yīng)該知道,想要FreeRTOS運行起來其實很簡單,不用修改很多代碼和配置信息,就可以將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é)者,先講述通用的配置。

通用配置

這一章也叫基本配置,反正就是需要我們定義的一些配置,也是比較重要的配置。

提示:帶(*)的為相對理解一點,或者較重要。

FreeRTOSConfig.h配置文件牽涉到許多關(guān)于系統(tǒng)方面的名詞,可能許多初學(xué)者不容易理解。比如:信號量、消息隊列、互斥鎖、事件組······等。

不過不用擔(dān)心,先有個大概了解,我后期會再次有針對性的重點講述。

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)

3.configTICK_RATE_HZ

系統(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),如果太大我們就沒法定義太多全局變量,或分配其他堆??臻g。

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ù)是否具有搶占的機會。

配置為0:不放棄搶占;

配置為1:放棄搶占;

10.configUSE_MUTEXES

是否使用互斥鎖

配置為0:不使用

配置為1:使用

提示:互斥鎖也叫互斥信號量,也就是說對資源“加鎖”。它的作用是實現(xiàn)多任務(wù)間共享資源的獨占式處理。簡單的說,就是某個資源在某一時刻只允許一個任務(wù)處理,處理完之后才允許其他任務(wù)處理該資源。

比如:A任務(wù)優(yōu)先級高,B任務(wù)優(yōu)先級低;AB任務(wù)都會使用一個串口發(fā)送指令數(shù)據(jù),(即每次必須發(fā)送完成,不能發(fā)送到一半就被打斷)。

當(dāng)B任務(wù)正在發(fā)送數(shù)據(jù)時,A任務(wù)處于就緒狀態(tài)(要打斷B任務(wù))。那么B任務(wù)就需要使用互斥鎖占有該串口(加鎖,占有該資源),等發(fā)送完指令,就釋放該串口(開鎖,釋放該資源)。一旦釋放了該資源,A任務(wù)就可以使用該串口(資源)了。

11.configUSE_RECURSIVE_MUTEXES

是否使用遞歸互斥鎖

配置為0:不使用

配置為1:使用

13.configQUEUE_REGISTRY_SIZE(*)

可添加(或登記)隊列名的數(shù)量

這個配置信息不好翻譯,它主要結(jié)合vQueueAddToRegistry與vQueueUnregisterQueue這兩個函數(shù)使用。

直接上函數(shù)接口:

void vQueueAddToRegistry(QueueHandle_t xQueue, const char *pcQueueName);

void vQueueUnregisterQueue(QueueHandle_t xQueue);

從函數(shù)接口可以知道,一個函數(shù)是登記(已經(jīng)創(chuàng)建的)隊列的名稱;一個函數(shù)是注銷隊列的名稱;

其實,主要目的就是給(已經(jīng)創(chuàng)建的)隊列取名,方便調(diào)試查找。

提示:很多初學(xué)者理解為“可創(chuàng)建隊列的最大數(shù)”,這個配置參數(shù)與其完全不一樣的概念。

14.configUSE_QUEUE_SETS(*)

是否使用消息隊列“SET”功能

配置為0:不使用

配置為1:使用

這個配置信息也相對較難理解。

提示:網(wǎng)上很多解釋為:使能/禁止消息隊列。這個理解太籠統(tǒng),與消息隊列配置相關(guān)的信息比較多,我個人覺得不正確。

15.configUSE_TIME_SLICING

是否使用時間片進(jìn)行調(diào)度

這個參數(shù)結(jié)合上面第1各配置參數(shù)configUSE_PREEMPTION一起使用。

這個配置參數(shù)是在后面新版本增加的,好像在V7版本之前是沒有這個配置參數(shù)。所以,在FreeRTOSConfig.h配置文件中默認(rèn)是沒有的,而是定義在FreeRTOS.h中。

#ifndef configUSE_TIME_SLICING

#define configUSE_TIME_SLICING 1

#endif

精華部分

之前推出的電子書版本反應(yīng)的效果不錯。因此,堅持為大家整理FreeRTOS系列教程的PDF版本電子書。

【提示:微信公眾號不支持外鏈接】

FreeRTOS系列教程PDF電子書下載地址:

http://pan.baidu.com/s/1nuHFF5n

網(wǎng)上很多教程都沒有配套的Demo例程,希望我這結(jié)合Demo例程講述的一系列教程,能讓大家更加容易學(xué)會。

FreeRTOS_STM32F0_Demo下載地址:

http://pan.baidu.com/s/1qYbmfy0

FreeRTOS_STM32F1_Demo下載地址:

http://pan.baidu.com/s/1jHDHRPc

FreeRTOS_STM32F2_Demo下載地址:

http://pan.baidu.com/s/1mi3eIdq

FreeRTOS_STM32F3_Demo下載地址:

http://pan.baidu.com/s/1kUZu5G7

FreeRTOS_STM32F4_Demo下載地址:

http://pan.baidu.com/s/1bplLZ7x

聲明:本文內(nèi)容及配圖由入駐作者撰寫或者入駐合作網(wǎng)站授權(quán)轉(zhuǎn)載。文章觀點僅代表作者本人,不代表電子發(fā)燒友網(wǎng)立場。文章及其配圖僅供工程師學(xué)習(xí)之用,如有內(nèi)容侵權(quán)或者其他違規(guī)問題,請聯(lián)系本站處理。 舉報投訴
  • FreeRTOS
    +關(guān)注

    關(guān)注

    12

    文章

    492

    瀏覽量

    64295
  • 程序互斥
    +關(guān)注

    關(guān)注

    0

    文章

    3

    瀏覽量

    6219
  • config
    +關(guān)注

    關(guān)注

    0

    文章

    15

    瀏覽量

    4824
收藏 人收藏
加入交流群
微信小助手二維碼

掃碼添加小助手

加入工程師交流群

    評論

    相關(guān)推薦
    熱點推薦

    CYW920820M2EVB-01開發(fā)套件可以與藍(lán)牙的免提配置文件起使用嗎?

    我有英飛凌 CYW920820M2EVB-01 開發(fā)套件,我想將它與藍(lán)牙的免提配置文件起使用。 是否可以。 該套件是否支持該配置文件? 我無法在任何地方找到該套件支持的配置文件。 如
    發(fā)表于 06-30 06:15

    如何才能知道英飛凌Bluetooth?產(chǎn)品支持哪種Bluetooth?配置文件和版本?

    如何才能知道英飛凌Bluetooth?產(chǎn)品支持哪種Bluetooth?配置文件和版本? A2DP、AVRCP、HSP、HFP 等 是否有個網(wǎng)頁或文檔解釋每個設(shè)備支持哪些配置文件和版本? 目前我想了解以下設(shè)備特別支持的
    發(fā)表于 06-27 06:04

    配置文件的差異介紹

    配置文件的差異 FA模型應(yīng)用在config.json文件中描述應(yīng)用的基本信息,個應(yīng)用工程中可以創(chuàng)建多個Module,每個Module中都有份config.json
    發(fā)表于 06-05 06:50

    Profibus DP主站轉(zhuǎn)Modbus TCP網(wǎng)關(guān)配置文件制作

    Profibus DP主站轉(zhuǎn)Modbus TCP網(wǎng)關(guān)配置文件制作
    的頭像 發(fā)表于 04-02 13:06 ?277次閱讀
    Profibus DP主站轉(zhuǎn)Modbus TCP網(wǎng)關(guān)<b class='flag-5'>配置文件</b>制作

    嵌入式開發(fā)避坑指南|FreeRTOS的5個\"反直覺\"小技巧

    512B,但因接收NMEA語句時緩沖區(qū)溢出,最終導(dǎo)致系統(tǒng)崩潰。修復(fù)后堆棧擴容至1KB 技巧5:配置文件藏著\"隱藏技能\" 冷知識: 修改configTICK_RATE_HZ
    發(fā)表于 03-20 13:57

    Web Bluetooth SPP(串行端口配置文件)示例

    電纜替代(Cable Replacement)通常指的是通過無線技術(shù),如低功耗藍(lán)牙(Bluetooth LE)替代傳統(tǒng)的有線連接,例如串行端口配置文件(Serial Port Profile,簡稱SPP)。
    的頭像 發(fā)表于 02-28 09:40 ?633次閱讀

    DLPC3478怎么去做ini配置文件和firmware呢 ?

    你好我們現(xiàn)在是用其他廠商的芯片做的開發(fā)板加上dlpc3478 2005dmd3010,我們不是官網(wǎng)那個evm,我們要自己開發(fā)我們怎么去做ini配置文件 和firmware呢 ?之后我們是用特殊
    發(fā)表于 02-24 06:35

    如何導(dǎo)出交換機的配置文件

    在網(wǎng)絡(luò)管理中,導(dǎo)出交換機的配置文件項關(guān)鍵任務(wù),它有助于備份、審計、遷移或恢復(fù)網(wǎng)絡(luò)配置。本文將詳細(xì)介紹如何導(dǎo)出交換機配置文件,涵蓋多種方法,適用于不同場景和需求。文章內(nèi)容將圍繞幾種常
    的頭像 發(fā)表于 02-02 17:20 ?3463次閱讀

    linux網(wǎng)卡配置文件

    網(wǎng)卡配置文件 ? ? 網(wǎng)卡目錄[root@localhost opt]# ls /etc/sysconfig/network-scripts/網(wǎng)卡文件名字,和我們ifconfig看到的
    的頭像 發(fā)表于 12-10 10:09 ?813次閱讀

    springboot的項目如何既要用jar包啟動,同時還可以為不同的機房設(shè)置不同的配置文件

    作者:京東科技 李意文 1、首先先把配置文件從jar中抽離 示例代碼: ? org.apache.maven.plugins maven-jar-plugin 3.2.0
    的頭像 發(fā)表于 10-19 16:48 ?869次閱讀
    springboot的項目如何既要用jar包啟動,同時還可以為不同的機房設(shè)置不同的<b class='flag-5'>配置文件</b>

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

    電子發(fā)燒友網(wǎng)站提供《HID over GATT配置文件(HOGP)低功耗藍(lán)牙.pdf》資料免費下載
    發(fā)表于 09-26 11:01 ?3次下載
    HID over GATT<b class='flag-5'>配置文件</b>(HOGP)低功耗藍(lán)牙

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

    電子發(fā)燒友網(wǎng)站提供《確定LDO的任務(wù)配置文件兼容性.pdf》資料免費下載
    發(fā)表于 09-24 10:44 ?0次下載
    確定LDO的任務(wù)<b class='flag-5'>配置文件</b>兼容性

    freertos最多支持多少個任務(wù)

    以下幾個因素: 系統(tǒng)資源 :FreeRTOS能夠支持的任務(wù)數(shù)量受到系統(tǒng)硬件資源的限制,特別是處理器的RAM大小和性能。RAM用于存儲任務(wù)的控制塊(TCB)和任務(wù)堆棧,因此RAM越大,理論上可以支持的任務(wù)數(shù)量就越多。 配置選項 :Free
    的頭像 發(fā)表于 09-02 14:21 ?2252次閱讀

    InModbus2配置文件的注意事項

    大家好,由于最近經(jīng)常有人問我InModbus2的配置文件如何編輯來達(dá)到想要的結(jié)果,所以發(fā)布些關(guān)于InModbus2的配置文件注意事項,后期我還會發(fā)布些示例來供大家參考讓大家都掌握
    發(fā)表于 07-26 07:21

    如何完成編輯配置文件來采集數(shù)據(jù)

    今天通過給大家做個路由器采集PLC地址為00001數(shù)據(jù)類型為bit的寄存器數(shù)值的配置文件來介紹下如何完成編輯配置文件來采集數(shù)據(jù)。controllers:- controller:i
    發(fā)表于 07-26 06:50