現在的位置: 首頁 > 技術文章 > 正文

Cortex M 使用FreeRTOS小記

2019年01月10日 技術文章 ⁄ 共 1137字 ⁄ 字號 Cortex M 使用FreeRTOS小記已關閉評論

環境:Keil

芯片:STM32F103

今天只是一次嘗試運行的記錄,包括工程搭建流程及運行演示,具體的FreeRtos的實現細節,博主也是剛剛開始學習,后續會寫一寫碰到的知識點。

1、 從官網下載最新版的FreeRTOS源碼

https://www.freertos.org/

下載包目錄包含兩個子目錄:FreeRTOS和FreeRTOS-Plus。如下所示:

  • FreeRTOS-Plus????????? 包含FreeRTOS+組件和演示例程;
  • FreeRTOS ? ? ? ? ? ? ? ? ? 包含FreeRTOS實時內核源文件和演示例程。

2、將FreeRtos代碼加入到自己工程中

(1)首先按照寫裸機的方式搭建好工程最初的框架:

主要是加入 CMSIS-M3 的標準庫及啟動代碼等

(本文只是初識FreeRtos,所以建的任務比較簡單,使用串口打印字符)

(2)添加rtos核心代碼

將tasks.c和list.c這三個內核代碼加入工程,將port.c和heap_1.c這兩個與處理器相關代碼加入工程。port.c位于FreeRTOS\Source\portable\RVDS\ARM_CM3文件夾下,heap_1.c位于FreeRTOS/Source/portable/MemMang文件夾下。

(3)添加頭文件路徑

  1. ...\FreeRTOS\Source\portable\RVDS\ARM_CM3
  2. ?…\FreeRTOS\Source\include

(4)編寫FreeRTOSConfig.h文件

對于剛接觸FreeRTOS的用戶來說,最簡單方法是找一個類似的Demo工程,復制該工程下的FreeRTOSConfig.h文件,在這個基礎上進行修改。

(5)檢查硬件

為了驗證你的硬件板子是否可靠的工作,首先編寫一個小程序,比如閃爍一個LED燈或者發送一個字符等等,我們這里使用UART發送一個字符。代碼如下所示(假設你已經配置好了啟動代碼,并正確配置了UART):

如果硬件可以正常發送字符,說明硬件以及啟動代碼OK,可以進行下一步。

(6)掛接FreeRTOS的中斷

在Cortex-M3硬件下,FreeRTOS使用SysTick作為系統節拍時鐘,使用SVC和PendSVC進行上下文切換。異常中斷服務代碼位于port.c文件中,FreeRTOS的作者已經為各種架構的CPU寫好了這些代碼,可以直接拿來用,需要用戶做的,僅僅是將這些異常中斷入口地址掛接到啟動代碼中。

在startup_stm32f10x_hd.s中,使用IMPORT關鍵字聲明要掛接的異常中斷服務函數名,然后將:

(7)建立任務測試

這里我建立了6個任務,每個任務發送一個字符,比如任務1發1,任務2發2.........

(8)測試

可以看到6個任務都跑起來了。

二八杠讨论心得
×