最美情侣中文字幕电影,在线麻豆精品传媒,在线网站高清黄,久久黄色视频

歡迎光臨散文網(wǎng) 會員登陸 & 注冊

FreeRTOS 操作系統(tǒng)移植(MDK)

2023-07-05 17:34 作者:自閉選手的Z23  | 我要投稿

1.?開發(fā)環(huán)境使用 MDK,用 MDK4.7X 或者 MDK5.XX 均可,保證支持 STM32F103,F(xiàn)407 和 F429 即可。

(不可以使用 MDK4.7X 以下版本,一方面是不支持 F429,另外就是 FreeRTOS V8.2.3 要用到 C 代碼中嵌套匯編代碼,MDK4.7X 以下版本是不支持的)。

2. 找一個簡單的工程,最好是跑馬燈之類的,越簡單越好,我們就在這個簡單的工程上面移植即可。

3. 大家使用的簡單工程里面不能有 SysTick,PendSV 和 SVC 三個系統(tǒng)中斷的使用,因?yàn)?FreeRTOS 系統(tǒng)要使用這三個中斷。

?

首先準(zhǔn)備好一個簡單的裸機(jī)工程模板

◆ 第 1 步:從網(wǎng)址 https://sourceforge.net/projects/freertos/files/FreeRTOS/V8.2.3/

下載 V8.2.3 版本

FreeRTOSV8.2.3.zip 和 FreeRTOSV8.2.3.exe 內(nèi)容是一樣的,只是后綴為 exe 的壓縮率更高些。下載后 解壓出來。?

?

◆ 第 2 步:在工程模板創(chuàng)建 FreeRTOS 文件夾?


?

◆ 第 3 步:添加源碼文件到相應(yīng)文件夾

將 FreeRTOSV8.2.3 軟件包中路徑:FreeRTOSV8.2.3\FreeRTOS\Source 里面如下所有文復(fù)制到剛剛創(chuàng)建的 FreeRTOS 文件夾下。

?

文件夾 User 中還需要添加如下文件:

?

文件 FreeRTOSConfig.h 文件在 FreeRTOSV8.2.3 軟件包中的中的路徑:

FreeRTOSV8.2.3\FreeRTOS\Demo\CORTEX_STM32F103_Keil,

其實(shí)就是官方整理好的配置文件

?

?

將源碼文件添加到 MDK 的工程項目中,添加后的效果如下:

?


其中 heap_4.c 文件路徑: FreeRTOS\Source\portable\MemMang

?

port.c 和 portmacro.h 文件的路徑:FreeRTOS\Source\portable\RVDS\ARM_CM3,由于 STM32F103 是 M3 內(nèi)核的,所以移植文件也要添加 M3 內(nèi)核的。

?

◆ 第 4 步:新創(chuàng)建一個 includes.h 文件,將所有的頭文件都集中到這個頭文件下。

?

這樣做的好處是引用頭文件的時候,只添加這個頭文件就可以了。includes.h 文件放在了 User 文件夾中。然后再將這個文件也添加到 MDK 工程項目中(將.h 文件添加到工程的好處是方便查看和修改)

?

includes.h 文件中的內(nèi)容如下:

?


◆ 第 5 步:添加相應(yīng)的頭文件路徑,在原來工程模板的基礎(chǔ)上新添加的兩個路徑:?

?

?

第 6 步:最后一步,同時也是最重要的一步,修改 FreeRTOSConfig.h 配置文件

(用戶根據(jù)自己的配置進(jìn)行修改,不修改也是沒問題的,進(jìn)行修改是為了方便初學(xué)者學(xué)習(xí)),主要兩個方面:

1.添加宏定義__NVIC_PRIO_BITS,STM32 系列產(chǎn)品優(yōu)先級僅使用 4 位。?

2.修改優(yōu)先級相關(guān)的幾個宏定義,具體修改了哪個可以對比原始文件查看。?

?

修改后在這個文件的末尾加上 Systick,PendSV 和 SVC 中斷函數(shù)的宏定義,

目的是將 FreeRTOS 移植文件 port.c 文件里面的中斷服務(wù)程序映射到 CMSIS 定義的標(biāo)準(zhǔn)名稱,這樣就不需要用戶去修改工程啟動代碼中這幾個中斷的名字了,很方便就實(shí)現(xiàn)了兩個函數(shù)的統(tǒng)一。

其中 vPortSVCHandler,xPortPendSVHandler 和 xPortSysTickHandler 是在 port.c 文件里面定義的。

SVC_Handler,PendSV_Handler 和SysTick_Handler startup_stm32f10x_hd.s 文件里面進(jìn)行了定義。

?

下面是 FreeRTOSConfig.h 配置文件的完整內(nèi)容:?


FreeRTOS 操作系統(tǒng)應(yīng)用實(shí)例

FreeRTOSConfig.h 配置文件里面幾個重要選項說明:?

◆ #define configUSE_PREEMPTION ?1

使能搶占式調(diào)度器

?

◆ #define configCPU_CLOCK_HZ ( ( unsigned long ) 72000000 )

系統(tǒng)主頻 72MHz。

?

◆ #define configTICK_RATE_HZ ( ( TickType_t ) 1000 )

系統(tǒng)時鐘節(jié)拍 1KHz,即 1ms。


◆ #define configMAX_PRIORITIES ( 5 )?

????定義可供用戶使用的最大優(yōu)先級數(shù),如果這個定義的是 5,那么用戶可以使用的優(yōu)先級號是 0,1,2,3,4, 不包含 5,對于這一點(diǎn),初學(xué)者要特別的注意。?


◆ #define configTOTAL_HEAP_SIZE ( ( size_t ) ( 17 * 1024 ) )?

????定義堆大小,F(xiàn)reeRTOS 內(nèi)核,用戶動態(tài)內(nèi)存申請,任務(wù)棧等都需要用這個空間。?


????經(jīng)過上面的移植和配置之后,在 main.c 文件中添加如下代碼,代碼中簡單地創(chuàng)建了四個用戶任務(wù):

vTaskTaskUserIF 任務(wù):接口消息處理,這里用作 LED 閃爍。

AppTaskLED 任務(wù) :LED 閃爍。?

vTaskMsgPro 任務(wù) :消息處理,這里用作 LED 閃爍。?

AppTaskStart 任務(wù) :啟動任務(wù),也是最高優(yōu)先級任務(wù),這里實(shí)現(xiàn) LED 閃爍。



?

?

?

?



FreeRTOS 操作系統(tǒng)移植(MDK)的評論 (共 條)

分享到微博請遵守國家法律
陈巴尔虎旗| 泾川县| 凭祥市| 开封市| 界首市| 仁化县| 平阳县| 木里| 伊宁县| 宁城县| 内丘县| 林芝县| 洮南市| 南岸区| 寿光市| 云霄县| 延川县| 出国| 宿松县| 兴山县| 左云县| 郧西县| 肥东县| 汪清县| 准格尔旗| 郴州市| 辽中县| 鹤庆县| 怀化市| 丹阳市| 黎川县| 温宿县| 治县。| 香格里拉县| 中卫市| 平南县| 弥渡县| 石家庄市| 聂拉木县| 兴宁市| 平南县|