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

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

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

3天內不再提示

FreeRTOS|自定義裁剪

玩轉單片機 ? 來源:玩轉單片機 ? 2022-12-26 10:21 ? 次閱讀

FreeRTOS是支持自定義裁剪的,用戶可用根據實際硬件資源,進行合適裁剪使得占用合適,裁剪主要是通過配置文件實現,本文借鑒了原子的配置,并且根據實際做出的配置,配置文件如下:

#ifndef FREERTOS_CONFIG_H
#define FREERTOS_CONFIG_H


#include "gd32f10x.h"
#include "hal_printf.h"


// 針對不同的編譯器調用不同的stdint.h文件
#if defined(__ICCARM__) || defined(__CC_ARM) || defined(__GNUC__)
#include 
extern uint32_t SystemCoreClock;
#endif


// 斷言
#define vAssertCalled(char, int) usert_printf(USART0, "Error:%s,%d
", char, int)
#define configASSERT(x) 
    if ((x) == 0)       
    vAssertCalled(__FILE__, __LINE__)


/***************************************************************************************************************/
/*                                        FreeRTOS基礎配置配置選項                                              */
/***************************************************************************************************************/
#define configUSE_PREEMPTION 1                         // 1使用搶占式內核,0使用協程
#define configUSE_TIME_SLICING 1                       // 1使能時間片調度(默認式使能的)
#define configUSE_PORT_OPTIMISED_TASK_SELECTION 1      // 1啟用特殊方法來選擇下一個要運行的任務
                                                       // 一般是硬件計算前導零指令,如果所使用的
                                                       // MCU沒有這些硬件指令的話此宏應該設置為0!
#define configUSE_TICKLESS_IDLE 0                      // 1啟用低功耗tickless模式
#define configUSE_QUEUE_SETS 1                         // 為1時啟用隊列
#define configCPU_CLOCK_HZ (SystemCoreClock)           // CPU頻率
#define configTICK_RATE_HZ (1000)                      // 時鐘節拍頻率,這里設置為1000,周期就是1ms
#define configMAX_PRIORITIES (32)                      // 可使用的最大優先級
#define configMINIMAL_STACK_SIZE ((unsigned short)130) // 空閑任務使用的堆棧大小
#define configMAX_TASK_NAME_LEN (16)                   // 任務名字字符串長度


#define configUSE_16_BIT_TICKS 0         // 系統節拍計數器變量數據類型,
                                         // 1表示為16位無符號整形,0表示為32位無符號整形
#define configIDLE_SHOULD_YIELD 1        // 為1時空閑任務放棄CPU使用權給其他同優先級的用戶任務
#define configUSE_TASK_NOTIFICATIONS 1   // 為1時開啟任務通知功能,默認開啟
#define configUSE_MUTEXES 1              // 為1時使用互斥信號量
#define configQUEUE_REGISTRY_SIZE 8      // 不為0時表示啟用隊列記錄,具體的值是可以
                                         // 記錄的隊列和信號量最大數目。
#define configCHECK_FOR_STACK_OVERFLOW 0 // 大于0時啟用堆棧溢出檢測功能,如果使用此功能
                                         // 用戶必須提供一個棧溢出鉤子函數,如果使用的話
                                         // 此值可以為1或者2,因為有兩種棧溢出檢測方法。
#define configUSE_RECURSIVE_MUTEXES 1    // 為1時使用遞歸互斥信號量
#define configUSE_MALLOC_FAILED_HOOK 0   // 1使用內存申請失敗鉤子函數
#define configUSE_APPLICATION_TASK_TAG 0
#define configUSE_COUNTING_SEMAPHORES 1 // 為1時使用計數信號量


/***************************************************************************************************************/
/*                                FreeRTOS與內存申請有關配置選項                                                */
/***************************************************************************************************************/
#define configSUPPORT_DYNAMIC_ALLOCATION 1          // 支持動態內存申請
#define configTOTAL_HEAP_SIZE ((size_t)(20 * 1024)) // 系統所有總的堆大小


/***************************************************************************************************************/
/*                                FreeRTOS與鉤子函數有關的配置選項                                              */
/***************************************************************************************************************/
#define configUSE_IDLE_HOOK 0 // 1,使用空閑鉤子;0,不使用
#define configUSE_TICK_HOOK 0 // 1,使用時間片鉤子;0,不使用


/***************************************************************************************************************/
/*                                FreeRTOS與運行時間和任務狀態收集有關的配置選項                                 */
/***************************************************************************************************************/
#define configGENERATE_RUN_TIME_STATS 0        // 為1時啟用運行時間統計功能
#define configUSE_TRACE_FACILITY 1             // 為1啟用可視化跟蹤調試
#define configUSE_STATS_FORMATTING_FUNCTIONS 1 // 與宏configUSE_TRACE_FACILITY同時為1時會編譯下面3個函數
                                               // prvWriteNameToBuffer(),vTaskList(),
                                               // vTaskGetRunTimeStats()


/***************************************************************************************************************/
/*                                FreeRTOS與協程有關的配置選項                                                  */
/***************************************************************************************************************/
#define configUSE_CO_ROUTINES 0             // 為1時啟用協程,啟用協程以后必須添加文件croutine.c
#define configMAX_CO_ROUTINE_PRIORITIES (2) // 協程的有效優先級數目


/***************************************************************************************************************/
/*                                FreeRTOS與軟件定時器有關的配置選項                                            */
/***************************************************************************************************************/
#define configUSE_TIMERS 1                                          // 為1時啟用軟件定時器
#define configTIMER_TASK_PRIORITY (configMAX_PRIORITIES - 1)        // 軟件定時器優先級
#define configTIMER_QUEUE_LENGTH 5                                  // 軟件定時器隊列長度
#define configTIMER_TASK_STACK_DEPTH (configMINIMAL_STACK_SIZE * 2) // 軟件定時器任務堆棧大小


/***************************************************************************************************************/
/*                                FreeRTOS可選函數配置選項                                                      */
/***************************************************************************************************************/
#define INCLUDE_xTaskGetSchedulerState 1
#define INCLUDE_vTaskPrioritySet 1
#define INCLUDE_uxTaskPriorityGet 1
#define INCLUDE_vTaskDelete 1
#define INCLUDE_vTaskCleanUpResources 1
#define INCLUDE_vTaskSuspend 1
#define INCLUDE_vTaskDelayUntil 1
#define INCLUDE_vTaskDelay 1
#define INCLUDE_eTaskGetState 1
#define INCLUDE_xTimerPendFunctionCall 1


/***************************************************************************************************************/
/*                                FreeRTOS與中斷有關的配置選項                                                  */
/***************************************************************************************************************/
#ifdef __NVIC_PRIO_BITS
#define configPRIO_BITS __NVIC_PRIO_BITS
#else
#define configPRIO_BITS 4
#endif


#define configLIBRARY_LOWEST_INTERRUPT_PRIORITY 15     // 中斷最低優先級
#define configLIBRARY_MAX_SYSCALL_INTERRUPT_PRIORITY 5 // 系統可管理的最高中斷優先級
#define configKERNEL_INTERRUPT_PRIORITY (configLIBRARY_LOWEST_INTERRUPT_PRIORITY << (8 - configPRIO_BITS))
#define configMAX_SYSCALL_INTERRUPT_PRIORITY (configLIBRARY_MAX_SYSCALL_INTERRUPT_PRIORITY << (8 - configPRIO_BITS))


/***************************************************************************************************************/
/*                                FreeRTOS與中斷服務函數有關的配置選項                                          */
/***************************************************************************************************************/
#define vPortSVCHandler SVC_Handler
#define xPortPendSVHandler PendSV_Handler
#define xPortSysTickHandler SysTick_Handler


#endif /* FREERTOS_CONFIG_H */

裁剪的本質就是通過宏來配置,減少編譯后生成文件的占用大小,從而減少RTOS的占用空間!

審核編輯:湯梓紅

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

    關注

    22

    文章

    817

    瀏覽量

    119747
  • FreeRTOS
    +關注

    關注

    12

    文章

    484

    瀏覽量

    62271
  • 裁剪
    +關注

    關注

    0

    文章

    8

    瀏覽量

    7110

原文標題:FreeRTOS|自定義裁剪

文章出處:【微信號:玩轉單片機,微信公眾號:玩轉單片機】歡迎添加關注!文章轉載請注明出處。

收藏 人收藏

    評論

    相關推薦

    HarmonyOS開發實例:【自定義Emitter】

    使用[Emitter]實現事件的訂閱和發布,使用[自定義彈窗]設置廣告信息。
    的頭像 發表于 04-14 11:37 ?1025次閱讀
    HarmonyOS開發實例:【<b class='flag-5'>自定義</b>Emitter】

    自定義函數測試學習工程

    自定義函數測試學習工程
    發表于 07-01 16:37 ?5次下載

    SOPC中自定義外設和自定義指令性能分析

    SOPC中自定義外設和自定義指令性能分析 NiosII是一個建立在FPGA上的嵌入式軟核處理器,靈活性很強。作為體現NiosII靈活性精髓的兩個最主要方面,自
    發表于 03-29 15:12 ?1620次閱讀
    SOPC中<b class='flag-5'>自定義</b>外設和<b class='flag-5'>自定義</b>指令性能分析

    1602自定義字符

    1602液晶能夠顯示自定義字符,能夠根據讀者的具體情況顯示自定義字符。
    發表于 01-20 15:43 ?1次下載

    JAVA教程之自定義光標

    JAVA教程之自定義光標,很好的學習資料。
    發表于 03-31 11:13 ?7次下載

    C#教程之自定義屏保

    C#教程之自定義屏保,很好的C#資料,快來學習吧。
    發表于 04-20 09:59 ?7次下載

    RTWconfigurationguide基于模型設計—自定義

    基于模型設計—自定義目標系統配置指南,RTW自動代碼生成相關資料。
    發表于 05-17 16:41 ?3次下載

    PDH網管盤 自定義字節

    PDH網管盤 自定義字節
    發表于 12-26 22:13 ?0次下載

    如何在android設備上安裝自定義rom

    完成后,請執行相同的操作,但不要選擇自定義rom,而是選擇間隙。安裝間隙之前需要使用一些自定義rom,您可以從自定義rom的開發人員網頁上了解,如果他們沒有提及任何相關內容,只需在自定義
    的頭像 發表于 11-05 10:48 ?5182次閱讀

    自定義視圖組件教程案例

    自定義組件 1.自定義組件-particles(粒子效果) 2.自定義組件- pulse(脈沖button效果) 3.自定義組件-progress(progress效果) 4.
    發表于 04-08 10:48 ?14次下載

    ArkUI如何自定義彈窗(eTS)

    自定義彈窗其實也是比較簡單的,通過CustomDialogController類就可以顯示自定義彈窗。
    的頭像 發表于 08-31 08:24 ?2239次閱讀

    自定義特性能做什么?

    今天跟大家分享的主題是基于自定義特性實現DataGridView全自動生成。
    的頭像 發表于 02-22 16:20 ?843次閱讀
    <b class='flag-5'>自定義</b>特性能做什么?

    labview自定義控件

    labview自定義精美控件
    發表于 05-15 16:46 ?17次下載

    自定義算子開發

    一個完整的自定義算子應用過程包括注冊算子、算子實現、含自定義算子模型轉換和運行含自定義op模型四個階段。在大多數情況下,您的模型應該可以通過使用hb_mapper工具完成轉換并順利部署到地平線芯片上……
    的頭像 發表于 04-07 16:11 ?2832次閱讀
    <b class='flag-5'>自定義</b>算子開發

    labview超快自定義控件制作和普通自定義控件制作

    labview超快自定義控件制作和普通自定義控件制作
    發表于 08-21 10:32 ?13次下載
    主站蜘蛛池模板: 国产精品久久女同磨豆腐| 免费看大尺度视频在线观看| 日日操夜夜操天天操| 狠狠色狠狠色综合网| 日韩欧美一卡二区| 亚洲嫩草影院在线观看| 五月天婷婷在线观看高清| 九色97| 欧美色图综合| 三级网址在线| 亚洲国产成a人v在线观看| 色噜噜狠狠大色综合| 性欧美1819| 黑色丝袜美美女被躁视频| 天天操夜夜操视频| 亚洲福利视频网站| www.青草视频| 丁香花在线观看免费观看| 久久久久久久久综合| 女人张腿让男子桶免费动态图| 色香视频一sxmv首页| 天堂在线视频精品| 综合色久| 不卡一区在线观看| 污污视频在线免费看| 中国一级生活片| 91大神在线看| 亚洲一区二区中文| 中文字幕一区二区精品区| 1024免费看片| 国产黄在线观看| 91成人免费| 中文字幕天堂| 欧洲色| 欧美成人精品一区二区| 免费恐怖片| 777奇米影视一区二区三区| 午夜影视免费观看| 色综合图片二区150p| 2018国产精品| 亚洲最大成人在线|