在线观看www成人影院-在线观看www日本免费网站-在线观看www视频-在线观看操-欧美18在线-欧美1级

0
  • 聊天消息
  • 系統消息
  • 評論與回復
登錄后你可以
  • 下載海量資料
  • 學習在線課程
  • 觀看技術視頻
  • 寫文章/發帖/加入社區
會員中心
創作中心

完善資料讓更多小伙伴認識你,還能領取20積分哦,立即完善>

3天內不再提示

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

黃工的嵌入式技術圈 ? 來源:黃工的嵌入式技術圈 ? 2020-03-14 14:06 ? 次閱讀

寫在前面

上一篇我文章提供大家可直接運行的代碼,如果測試過的朋友應該知道,想要FreeRTOS運行起來其實很簡單,不用修改很多代碼和配置信息,就可以將FreeRTOS添加到自己的工程中并成功跑起來。

從本文開始講述FreeRTOS中的代碼,為了照顧大部分朋友,還是以簡單,基礎為原則。

FreeRTOS中“FreeRTOSConfig.h”配置的內容隨著版本(功能)的增加而增加,也就是說隨著系統功能的增加,對應需要的配置信息也響應增加了。但是系統為了兼容之前的代碼,系統自身做了兼容處理。

比如:configUSE_QUEUE_SETS是屬于“FreeRTOSConfig.h”中定義的選項,如果用戶沒有定義,則在“FreeRTOS.h”中有類似如下定義。

#ifndefconfigUSE_QUEUE_SETS

#defineconfigUSE_QUEUE_SETS0

#endif

開始設計FreeRTOS系統時,工程師們肯定會想到,要盡量減少開發者的開發難度。我們初學移植FreeRTOS時,“FreeRTOSConfig.h”中的大部分配置都選擇默認即可。只有后期熟悉了,開發需要使用較多功能的時候,里面各項的配置就必須要熟透。

對英文不反感的朋友建議參考官網的內容,畢竟官網的資料才是最權威的。

官網地址:

http://www.freertos.org/a00110.html

從官網提供的資料,可以看得出“FreeRTOSConfig.h”將配置信息劃分為10大類,但是很多配置信息我們都可以選擇不用(或者不定義)。

微信公眾號中技術文章篇幅不易過長,本文針對初學者,先講述通用的配置。

通用配置

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

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

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

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

1.configUSE_PREEMPTION

調度模式配置

配置為0:合作式調度,即時間片輪流執行;

配置為1:搶占式調度,即優先級高的任務搶先執行;

由于我們要求實時響應,就配置為1,使用搶占式調度方式。否則就發揮不到實時操作系統的作用。

2.configCPU_CLOCK_HZ

CPU時鐘,就是我們常說的主頻。注意:單位是Hz。

如:STM32F407主頻為168M:

#define configCPU_CLOCK_HZ (168000000)

3.configTICK_RATE_HZ

系統滴答,即系統每秒鐘滴答的次數,可以說是系統的心跳,但需要和主頻區分開來。系統滴答的值要根據CPU主頻來看,一般主頻越高,取值相對越大,一般在100至1000之間。

簡單舉例:系統滴答決定vTaskDelay。

比如:

#define configTICK_RATE_HZ (1000)

則:

vTaskDelay(1000),表示延時1S。

4.configMAX_PRIORITIES

系統最大優先級值

我們創建任務是,配置的優先級值不能超過這個最大值。

xTaskCreate(vAppTask1, "Task1", TASK1_STACK_SIZE, NULL,TASK1_PRIORITY, NULL);

提示:

a.系統優先級和中斷優先級原理類似,高優先級的會搶在低優先級的前面,但需要區分系統和中斷優先級的應用場景。

b.FreeRTOS中優先級數值越大,優先級越高。而UCOS則相反。

5.configMINIMAL_STACK_SIZE

最小堆棧值

在系統中,一般用于空閑、定時等一些系統任務中,當然,我們有些地方也可以使用這個定義的堆棧值。

注意數值的單位,一般在ARM中為4個字節。

6.configTOTAL_HEAP_SIZE

系統總共堆(棧)大小

我們需要根據需要使用的情況定義這個值。不能定義太小,太小內存容易溢出;也不能定義太大,有些芯片RAM本身就不大(有些就只有幾K),如果太大我們就沒法定義太多全局變量,或分配其他堆棧空間。

7.configMAX_TASK_NAME_LEN

任務名稱最大長度

也就是創建任務定義任務名稱的字符串長度

xTaskCreate(vAppTask1, "Task1", TASK1_STACK_SIZE, NULL, TASK1_PRIORITY, NULL);

提示:結束符 '\0'也包含在內。

8.configUSE_16_BIT_TICKS

是否使用16位滴答計數值

配置為0:則使用32位的滴答計數值,一般在32位處理器中都是配置為0;

配置為1:則使用16位的滴答計數值,一般8位或者16位處理器中配置為1。

9.configIDLE_SHOULD_YIELD

是否讓空閑任務“放棄”搶占

也就是說在執行與空閑任務相同優先級的任務過程中,空閑任務是否具有搶占的機會。

配置為0:不放棄搶占;

配置為1:放棄搶占;

10.configUSE_MUTEXES

是否使用互斥鎖

配置為0:不使用

配置為1:使用

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

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

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

11.configUSE_RECURSIVE_MUTEXES

是否使用遞歸互斥鎖

配置為0:不使用

配置為1:使用

13.configQUEUE_REGISTRY_SIZE(*)

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

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

直接上函數接口:

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

void vQueueUnregisterQueue(QueueHandle_t xQueue);

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

其實,主要目的就是給(已經創建的)隊列取名,方便調試查找。

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

14.configUSE_QUEUE_SETS(*)

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

配置為0:不使用

配置為1:使用

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

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

15.configUSE_TIME_SLICING

是否使用時間片進行調度

這個參數結合上面第1各配置參數configUSE_PREEMPTION一起使用。

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

#ifndef configUSE_TIME_SLICING

#define configUSE_TIME_SLICING 1

#endif

精華部分

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

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

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

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

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

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

聲明:本文內容及配圖由入駐作者撰寫或者入駐合作網站授權轉載。文章觀點僅代表作者本人,不代表電子發燒友網立場。文章及其配圖僅供工程師學習之用,如有內容侵權或者其他違規問題,請聯系本站處理。 舉報投訴
  • FreeRTOS
    +關注

    關注

    12

    文章

    484

    瀏覽量

    62398
  • 程序互斥
    +關注

    關注

    0

    文章

    3

    瀏覽量

    6172
  • config
    +關注

    關注

    0

    文章

    15

    瀏覽量

    4661
收藏 人收藏

    評論

    相關推薦

    如何導出交換機的配置文件

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

    linux網卡配置文件

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

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

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

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

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

    確定LDO的任務配置文件兼容性

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

    freertos最多支持多少個任務

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

    InModbus2配置文件的注意事項

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

    在Nucleo-H743ZI2板上運行wifi_scan示例,啟用FreeRTOS時堆部分被禁用,為什么?

    設備或上下文兼容性問題" 。 此外,當我嘗試生成代碼時,些重要文件丟失了,包括 lwipopts.hFreeRTOSConfig.h. 您能否告訴我解決這些問題的必
    發表于 07-03 08:17

    鴻蒙開發Ability Kit程序框架服務:FA模型應用配置文件

    應用配置文件中包含應用配置信息、應用組件信息、權限信息、開發者自定義信息等,這些信息在編譯構建、分發和運行解決分別提供給編譯工具、應用市場和操作系統使用。
    的頭像 發表于 06-24 14:49 ?411次閱讀
    鴻蒙開發Ability Kit程序框架服務:FA模型應用<b class='flag-5'>配置文件</b>

    鴻蒙開發:【Stage模型應用配置文件

    應用配置文件中包含應用配置信息、應用組件信息、權限信息、開發者自定義信息等,這些信息在編譯構建、分發和運行解決分別提供給編譯工具、應用市場和操作系統使用。
    的頭像 發表于 06-15 09:15 ?1779次閱讀
    鴻蒙開發:【Stage模型應用<b class='flag-5'>配置文件</b>】

    請問如何修改FreeRTOS的configTICK_RATE_HZ?

    /esp_additions/include/freertos/FreeRTOSConfig.h\", \"owner\": \"cpp\"
    發表于 06-12 06:34

    CYW4373是否支持SPP和GATT配置文件

    CYW4373 是否支持 SPP 和 GATT 配置文件
    發表于 05-31 06:13

    BlueRNG-M2SA運用FreeRTOS空間不足怎么解決?

    溢出1788bytes FreeRTOSConfig.h 其中的參數有牽扯到空間大小,所以我進行調整尺寸后即可以編譯過,但燒錄完后并不會有動作,請問有人有試過合拼FreeRTOS成功的案例嗎?
    發表于 03-22 07:26

    支持CiA402驅動器配置文件的示例程序用于通過EtherCAT?通信進行電機控制

    電子發燒友網站提供《支持CiA402驅動器配置文件的示例程序用于通過EtherCAT?通信進行電機控制.pdf》資料免費下載
    發表于 02-21 14:21 ?2次下載
    支持CiA402驅動器<b class='flag-5'>配置文件</b>的示例程序用于通過EtherCAT?通信進行電機控制

    Linux系統中的配置文件

    系統文件,用于配置主機名與 IP 地址的映射關系。當系統需要解析主機名時,會首先查找 /etc/hosts 文件,如果在該文件中找到了相應的映射關系,則直接使用對應的 IP 地址進行通
    發表于 02-19 17:36 ?1393次閱讀
    主站蜘蛛池模板: 97理论三级九七午夜在线观看 | 久久骚| 欧美黑人黄色片 | 亚洲爱婷婷色婷婷五月 | 午夜三级毛片 | 操夜夜 | 97av免费视频 | 四虎影院com | 五月婷婷丁香久久 | susu成人影院| 天堂ww| 在线观看高清视频 | 激情六月天 | 女人张开腿让男人桶免费最新 | 国产chinesetube| 天堂在线中文无弹窗全文阅读 | 中文三 级 黄 色 片 | 性欧美高清短视频免费 | 人人添| 日本成人免费网站 | 成人狠狠色综合 | 青草青草视频2免费观看 | 在线免费视频网站 | 在线播放免费 | 午夜久久免影院欧洲 | 黄色网址 在线播放 | 噜噜影院无毒不卡 | 国久久 | 中文字幕天堂 | 在线aa | 四虎中文 | 欧美高清一区二区 | аⅴ天堂中文在线网 | 国产精品三级a三级三级午夜 | 亚洲国产毛片aaaaa无费看 | a级黄视频| 亚洲视频www | 天天干天天做天天操 | 一级片在线播放 | 伊人狼人综合网 | 日本一区二区在线视频 |