STM32平台下的FreeRTOS移植

2021-10-11 02:46:29 字數 2161 閱讀 9323

本文目的是在keil uvision5(mdk)上把freertos移植到stm32平台上去,並練習使用freertos的任務排程功能

(二)freertos移植到stm32

(三)基於freertos的多工程式

(四)總結

特點

freertos核心檔案

可以看出source資料夾下有include資料夾和portable資料夾以及一些c原始檔,include資料夾主要是移植所需標頭檔案,portable資料夾是連線軟硬體的橋梁。freertos**的核心包含在三個檔案中:tasks.c、queue.c、list.c。除此之外還包含三個可選的檔案:timers.c、event_groups.c、croutine.c,分別實現軟體定時、事件組和協程功能。

freertos移植到stm32f103步驟與注意事項

import  xportpendsvhandler

import xportsystickhandler

import vportsvchandler

dcd     vportsvchandler            ;由freertos管理                         

dcd xportpendsvhandler ;由freertos管理

dcd xportsystickhandler ;由freertos管理

移植結果

編譯一下工程,結果如下:

0 error(s),0 warning(s),表明程式移植成功。接下來就是使用freertos的時候了,讓我們去體驗一下剛移植好的freertos吧。

基於剛移植好的freertos作業系統實現乙個多工程式,執行4個週期性的任務,具體任務如下:

task1:每間隔500ms閃爍(變化)一次led0;

task2:每間隔1000ms閃爍(變化)一次led1;

task3,每間隔2000ms,向串列埠傳送一次指令資料hello lyj!!!

task4,每間隔5000ms,從aht20採集一次溫濕度資料(不考慮硬體情況,僅寫出整個多工框架模擬**)

/*led0週期性閃爍任務*/

void

led0task

(void

*pvparameters)

}/*led1週期性閃爍任務*/

void

led1task

(void

*pvparameters)

}/*串列埠週期性傳送任務*/

void

usarttask

(void

*pvparameters)

}/*溫濕度週期性採集任務*/

從結果可以看出,led0每500ms亮一次,led1每1000ms亮一次,串列埠每2000ms發一次,溫濕度每5000ms採集一次。

在這次實驗之前,我都用的是裸機程式設計,但是通過freertos嵌入式作業系統的移植實驗,使我感覺彷彿找到了新大陸。對我來說,使用乙個十分小巧的作業系統就能實現多個任務之間的排程執行是一件非常棒的事情,這也讓我想去更加深入的了解這一方面的內容。

2.freertos應用開發筆記之一:freertos在stm32的移植

3.freertos移植到stm32上的移植過程

4.freertos移植stm32 步驟分析

5.stm32f1 freertos開發手冊_v1.1

12864移植到STM32平台

利用串列埠方式將原本51微控制器上的串列埠程式移植到stm32上,除錯了兩天終於可以顯示了 1.排查io的初始化是否有問題,在stm32平台上需要對io口時鐘使能,io口模式配置,一些特殊的管腳還需要做特殊的配置。2.檢查延時函式,一般來說移植到51的程式到了stm32的話時序會發生比較大的改變,這...

Win32平台下Apache ssl配置指南

本文源自 http raibledesigns.wiki wiki.jsp?page apachessl,並作了必要的修改,補充和簡化。在我的winxp apache1.3.31下面測試通過 假定 你已經熟悉apache的安裝和配置 你對ssl安全連線的基本常識有一定了解 你對php有一定了解 不要...

Picoc C語言直譯器的STM32平台移植

picoc c語言直譯器的stm32平台移植 picoc是google開源 專案中看到的乙個專案,其初衷貌似是要做乙個在小的嵌入裝置上的c直譯器。它的核心 只有3500行左右,可讀性不錯,雖然沒有實現完整的iso c標準,基本的c執行庫還是具備了。picoc 上看,基本有如下幾塊 lex詞法解析,t...