新聞中心

        EEPW首頁 > 嵌入式系統 > 設計應用 > 基于STM32的FreeRTOS應用問題解答

        基于STM32的FreeRTOS應用問題解答

        作者: 時間:2016-11-18 來源:網絡 收藏

        1、如何將 FreeRTOS移植到不同的Cortex-M 內核?
        答:如果要將 FreeRTOS 移植到正確的Cortex-M 產品,你必須從正確的目錄導入 “port.c”文件。例如,若微控制器是帶有IAR 工具的 Cortex-M0 內核,則您必須從“FreeRTOSSourceportableIARARM_CM0” 獲取 port.c。

        本文引用地址:http://www.104case.com/article/201611/315716.htm

        2、FreeRTOS使用需要ROM/RAM?
        答:這取決于您的編譯器、代碼架構,以及RTOS 內核配置。一般來說, RTOS 內核本身需要大約 5到 10 K 字節 ROM 空間。
        如果創建的線程或隊列數增加,RAM 使用量就會上升。

        3、怎樣設置 CPU 時鐘?
        答:CPU 時鐘由 FreeRTOSConfig.h 中的 configCPU_CLOCK_HZ 定義,比如在STM32CubeF4">STM32CubeF4固件內它由 SystemCoreClock 提供,表示 HCLK 時鐘 (AHB 總線),通過調用SystemClock_Config() 函數配置 RCC 時鐘時會設置此值。

        4、怎樣設置中斷優先級?
        答:任何使用 RTOS API 函數的中斷服務程序,其優先級必須手動設置為大于等于FreeRTOSConfig.h 文件中configMAX_SYSCALL_INTERRUPT_PRIORITY 的設置值。這確保其中斷的邏輯優先級低于等于configMAX_SYSCALL_INTERRUPT_PRIORITY設置的優先級。

        5、怎樣使用非 SysTick 時鐘生成時間片中斷?
        答:用戶可選擇性地自己提供時間片中斷源,方法是使用非SysTick 的定時器生成中斷:
        • 提供 vPortSetupTimerInterrupt() 的實現,它會以FreeRTOSConfig.h文件中定義的configTICK_RATE_HZ常量指定的頻率產生中斷。
        • 將 xPortSysTickHandler() 配置為定時器中斷的處理程序,確保xPortSysTickHandler()在FreeRTOSConfig.h 中未映射至 SysTick_Handler(),或在 port.c 中未被命名為SysTick_Handler()。

        6、怎樣啟用無時間片空閑模式?
        答:FreeRTOS無時間片模式 (低功耗)通過進入睡眠模式并停止周期性的時間片中斷來降低MCU 功耗。在 FreeRTOSConfig.h 中,將 configUSE_TICKLESS_IDLE 定義為 1,即可啟用此功能。
        當使用非 SysTick 定時器生成時間片中斷時,也可啟用無時間片空閑模式。用戶必須添加下列動作至上一個問題所述內容:
        • 在 FreeRTOSConfig.h 中,將 configUSE_TICKLESS_IDLE 設為 2。
        • 根據 FreeRTOS 相關文檔說明,定義portSUPPRESS_TICKS_AND_SLEEP()。

        7、在做基于STM32的FREERTOS應用中出現比較頻繁的問題是什么?
        答:應屬STACK溢出和中斷優先級相關的問題。

        以為內容取自于ST官方的一篇關于具有RTOS的STM32Cube開發應用的用戶手冊UM1722,該手冊較為詳細了介紹了如下內容。本文內容只是其中的FAQ部分



        評論


        技術專區

        關閉
        主站蜘蛛池模板: 汨罗市| 贡嘎县| 鹤岗市| 济源市| 十堰市| 舞阳县| 隆化县| 久治县| 略阳县| 兰西县| 冷水江市| 芮城县| 绥德县| 浏阳市| 永寿县| 阿拉善左旗| 开鲁县| 永泰县| 巨野县| 潜山县| 乐山市| 衡东县| 古田县| 佛山市| 济阳县| 辽宁省| 日土县| 砀山县| 大同县| 炉霍县| 哈尔滨市| 江城| 宝清县| 揭阳市| 霍邱县| 永仁县| 呼伦贝尔市| 永宁县| 太仓市| 塔河县| 临桂县|