<output id="qn6qe"></output>

    1. <output id="qn6qe"><tt id="qn6qe"></tt></output>
    2. <strike id="qn6qe"></strike>

      亚洲 日本 欧洲 欧美 视频,日韩中文字幕有码av,一本一道av中文字幕无码,国产线播放免费人成视频播放,人妻少妇偷人无码视频,日夜啪啪一区二区三区,国产尤物精品自在拍视频首页,久热这里只有精品12

      FreeRTOS學習筆記


      在STM32CubeMX下配置FreeRTOS工程

      一、 選擇 CMSIS 接口

      CMSIS(Cortex Microcontroller Software Interface Standard)是一種面向 ARM Cortex-M 處理器的軟件接口標準。它提供了一組一致的軟件接口,使得針對 Cortex-M 處理器的軟件開發更加簡化和標準化。CMSIS 包含了許多組件,包括設備外設驅動程序、RTOS 抽象層、內核接口等,旨在為開發者提供一致的編程接口,簡化嵌入式軟件開發流程,提高軟件的可移植性和可維護性。
      選擇CMSIS-V2可以獲得更多功能和更廣泛的兼容性。

      二、 配置HAL庫時基

      因為FreeRTOS的時基使用的是Systick,用CubeMX生成的HAL庫使用的默認時基也是Systick,為了避免沖突,需要把HAL庫的時基重新配置

      三、 配置FreeRTOS參數

      使用STM32CubeMX可以直接添加任務、隊列、信號量、互斥鎖、軟件定時器等,有一個默認任務,此任務無法刪除,只能修改其名稱和函數類型

      Kernel settings

      • USE_PREEMPTION: Enabled:RTOS使用搶占式調度器;Disabled:RTOS使用協作式調度器(時間片)。
      • TICK_RATE_HZ: 值設置為1000,即周期就是1ms。RTOS系統節拍中斷的頻率,單位為HZ。
      • MAX_PRIORITIES: 可使用的最大優先級數量。設置好以后任務就可以使用從0到(MAX_PRIORITIES - 1)的優先級,其中0位最低優先級,(MAX_PRIORITIES - 1)為最高優先級。
      • MINIMAL_STACK_SIZE: 設置空閑任務的最小任務堆棧大小,以字為單位,而不是字節。如該值設置為128 Words,那么真正的堆棧大小就是 128*4 = 512 Byte。
      • MAX_TASK_NAME_LEN: 設置任務名最大長度。
      • IDLE_SHOULD_YIELD: Enabled: 空閑任務放棄CPU使用權給其他同優先級的用戶任務。
        USE_MUTEXES: 為1時使用互斥信號量,相關的API函數會被編譯。
      • USE_RECURSIVE_MUTEXES: 為1時使用遞歸互斥信號量,相關的API函數會被編譯。
      • USE_COUNTING_SEMAPHORES: 為1時啟用計數型信號量, 相關的API函數會被編譯。
      • QUEUE_REGISTRY_SIZE: 設置可以注冊的隊列和信號量的最大數量,在使用內核調試器查看信號量和隊列的時候需要設置此宏,而且要先將消息隊列和信號量進行注冊,只有注冊了的隊列和信號量才會在內核調試器中看到,如果不使用內核調試器的話次宏設置為0即可。
      • USE_APPLICATION_TASK_TAG: 為1時可以使用vTaskSetApplicationTaskTag函數。
      • ENABLE_BACKWARD_COMPATIBILITY: 為1時可以使V8.0.0之前的FreeRTOS用戶代碼直接升級到V8.0.0之后,而不需要做任何修改。
      • USE_PORT_OPTIMISED_TASK_SELECTION: FreeRTOS有兩種方法來選擇下一個要運行的任務,一個是通用的方法,另外一個是特殊的方法,也就是硬件方法,使用MCU自帶的硬件指令來實現。STM32有計算前導零指令碼,所以這里強制置1
      • USE_TICKLESS_IDLE: 置1:使能低功耗tickless模式;置0:保持系統節拍(tick)中斷一直運行。假設開啟低功耗的話可能會導致下載出現問題,因為程序在睡眠中,可用ISP下載辦法解決。
      • USE_TASK_NOTIFICATIONS: 為1時使用任務通知功能,相關的API函數會被編譯。開啟了此功能,每個任務會多消耗8個字節
      • RECORD_STACK_HIGH_ADDRESS: 為1時棧開始地址會被保存到每個任務的TCB中(假如棧是向下生長的)。

      Memory management settings

      • Memory Allocation: Dynamic/Static 支持動態/靜態內存申請
      • TOTAL_HEAP_SIZE: 設置堆大小,如果使用了動態內存管理,FreeRTOS在創建 task, queue, mutex, software timer or semaphore的時候就會使用heap_x.c(x為1~5)中的內存申請函數來申請內存。這些內存就是從堆ucHeap[configTOTAL_HEAP_SIZE]中申請的
      • Memory Management scheme: 內存管理策略 heap_4
        • heap1: 使用靜態數組作為內存池,任務只能分配固定大小的內存塊。這種策略適用于系統資源受限的嵌入式系統,但是不支持動態內存分配和釋放。

        • heap2: 同樣使用靜態數組作為內存池,但是與 heap1 不同的是,heap2 支持動態內存分配和釋放。分配的內存塊大小可以動態變化,但是內存池的大小是固定的

        • heap3: 使用 malloc 和 free 函數進行內存分配和釋放,可以使用標準的 C 庫函數對內存進行操作。內存池的大小是動態的,可以根據需求動態調整。

        • heap4: 類似于 heap3,但是使用了鎖來保護內存分配和釋放操作,以防止多任務并發訪問時發生沖突。這種策略適用于多任務并發環境。

        • heap5: 類似于 heap4,但是使用了更高級的內存管理算法,以提高內存的利用率和性能。這種策略適用于對內存利用率和性能有較高要求的系統。

      • USE_IDLE_HOOK: 置1:使用空閑鉤子(Idle Hook類似于回調函數);置0:忽略空閑鉤子。
      • USE_TICK_HOOK: 置1:使用時間片鉤子(Tick Hook);置0:忽略時間片鉤子。
      • USE_MALLOC_FAILED_HOOK: 使用內存申請失敗鉤子函數。
      • CHECK_FOR_STACK_OVERFLOW: 大于0時啟用堆棧溢出檢測功能,如果使用此功能用戶必須提供一個棧溢出鉤子函數,如果使用的話此值可以為1或者2,因為有兩種棧溢出檢測方法。
      • GENERATE_RUN_TIME_STATS:啟用運行時間統計功能。
      • USE_TRACE_FACILITY: 啟用可視化跟蹤調試。
      • USE_STATS_FORMATTING_FUNCTIONS: 與宏configUSE_TRACE_FACILITY同時為1時會編譯下面3個函數prvWriteNameToBuffer()、vTaskList()、vTaskGetRunTimeStats()。
      • USE_CO_ROUTINES: 啟用協程。
      • MAX_CO_ROUTINE_PRIORITIES: 協程的有效優先級數目。

      Software timer definitions

      • USE_TIMERS: 啟用軟件定時器。

      Interrupt nesting behaviour configuration:

      • LIBRARY_LOWEST_INTERRUPT_PRIORITY: 中斷最低優先級。
      • LIBRARY_LOWEST_INTERRUPT_PRIORITY: 系統可管理的最高中斷優先級。

      參考:https://blog.csdn.net/w237838/article/details/133965647

      創建任務

      TimerHandle_t icnTimer;
      const osThreadAttr_t ledTask_attributes = {
          .name       = "ledTask",
          .stack_size = 128 * 4,
          .priority   = (osPriority_t)osPriorityNormal,
      };
      
      void LedTask(void *argument) {
          for (;;) {
              osDelay(1);
          }
      }
      

      串口收發

      參考:https://www.yii666.com/blog/484474.html

      posted @ 2024-02-24 00:07  D·Kingson.Mo  閱讀(233)  評論(0)    收藏  舉報
      主站蜘蛛池模板: 色猫咪av在线观看| 久久精品一本到99热免费| 亚洲成人av免费一区| 中国少妇无码专区| 蜜芽久久人人超碰爱香蕉| 免费VA国产高清大片在线| 亚洲精品福利一区二区三区蜜桃 | 欧美日韩综合网| 骚虎视频在线观看| 人妻少妇偷人精品一区| bt天堂新版中文在线| 高清一区二区三区不卡视频| 9999国产精品欧美久久久久久| 中文字幕日韩有码第一页| 99久久无色码中文字幕| 国产婷婷精品av在线| 亚洲高清成人av在线| 香港日本三级亚洲三级| 亚洲中文字幕人妻系列| 91久久夜色精品国产网站| 中文字幕久区久久中文字幕| 国产人与禽zoz0性伦多活几年| 日韩欧美aⅴ综合网站发布| 中文丰满岳乱妇在线观看| 久久一日本道色综合久久| 72种姿势欧美久久久久大黄蕉| 少妇私密会所按摩到高潮呻吟| 91福利一区福利二区| 亚洲国产精品高清线久久| 久久国产乱子伦免费精品无码| 国产成年码av片在线观看| 日韩在线观看 一区二区| 中文字幕有码日韩精品| 国产一区二区黄色在线观看| 日本一区二区精品色超碰| 国产成人亚洲日韩欧美| 国产福利深夜在线播放| 色欲国产精品一区成人精品| 久热这里有精品视频在线| 理论片午午伦夜理片影院99| 久久88香港三级台湾三级播放|