RTX筆記1 - 創建RTX5工程


  創建RTX5項目工程比較簡單,RTX5源碼已經內置在keil安裝目錄下。下面一步一步創建工程。

  1.Create a new project,選擇一個器件,在Manage Run-TIme Environment 窗口選擇 CMSIS::CORE and CMSIS::RTOS2 (API)::Keil RTX5,可以選擇添加LIB庫到工程,也可以選擇將Source源碼添加到工程。如果選中RTX5之后,下方輸出欄提示需要其他的組件,可以點擊Resolve一鍵處理,自動添加需要的組件到工程中。

  2.在RTX_Config.h中配置RTX5。注意:全局動態內存大小是RTX所能使用的內存大小,不能超過所選器件的RAM大小,不然編譯不通過。

 

 

  3.Cortex-M的中斷使用

  在Cortex-M處理器中,RTX5使用下面三個中斷。

Handler Priority Interrupt/Exception
SysTick lowest Kernel system timer interrupt to generate periodic timer ticks
PendSV lowest PendSV (request for system-level service) when calling certain RTX functions from Handler mode
SVC lowest+1 Supervisor Call used to enter the RTOS kernel from Thread mode

  其他設備中斷用戶可以正常使用,對於 Cortex-M3/M4/M7 /M23/M33/M35P 處理器,RTX內核不會關閉中斷

Usage of interrupt priority grouping

  • 中斷優先級分組應該在調用osKernelStart()函數之前使用CMSIS-Core函數NVIC_SetPriorityGrouping進行配置。RTX內核使用優先級組的值來設置SysTick和PendSV中斷的優先級
  • RTX內核為上表中列出的中斷/異常設置優先級,並使用最低的兩個優先級級別。
  • 不要改變RTX內核使用的優先級。如果無法避免,請確保SysTick/PendSV的搶占優先級低於SVC。
  • 允許的優先級組值為0 ~ 6。優先級組值7將導致RTX失敗,因為只有一個優先級級別可用。
  • 主堆棧用於運行RTX功能。因此,需要為RTX內核執行配置足夠的堆棧。

Code Example

osKernelInitialize();                            // initialize RTX
NVIC_SetPriorityGrouping (3);                    // setup priority grouping
tread_id = osThreadNew(tread_func, NULL, NULL);  // create some threads
osKernelStart ();                                // start RTX kernel

 RTX5教程:RTX教程已內置在keil安裝目錄中,../Keil_v5/ARM/Pack/ARM/CMSIS/5.8.0/CMSIS/Documentation/RTOS2/html/rtx5_impl.html


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM