FreeRTOS系列推文很久之前就完結了,最近在GD32進行相關移植,發現還有更好的移植方案,比起直接修改啟動文件更加實用,這里只簡單做下介紹和總結;
第一步:準備一個裸機工程文件,最好配置了GPIO和串口,因為這兩個是最方便查看效果的;
第二步:把FreeRTOS的源碼直接復制到工程目錄下,這樣就算沒安裝支持包都可以直接使用,也方便相關管理和維護:

第三步:添加分組,然后把相關源碼添加進去:

注意: 配置文件可以在官方demo中找到:

第四步:添加路徑:

第五步:在FreeRTOSConfig.h進行適當修改:

第六步:屏蔽三個中斷函數:

第七步:編寫任務函數:
#include "hal_led.h" #include "hal_log.h" #include "hal_usart.h" #include "hal_printf.h" #include "FreeRTOS.h" #include "task.h" #define START_TASK_PRIO 1 //任務優先級 #define START_STK_SIZE 128 //任務堆棧大小 TaskHandle_t StartTask_Handler; //任務句柄 void start_task(void *pvParameters);//任務函數 #define LED0_TASK_PRIO 2 //任務優先級 #define LED0_STK_SIZE 50 //任務堆棧大小 TaskHandle_t LED0Task_Handler; //任務句柄 void led0_task(void *p_arg); //任務函數 // 外設初始化 void hal_device_init(void) { hal_led_init(); hal_log_init(); hal_usart_init(); } // 主循環 int main( void ) { // 設置系統中斷優先級分組 4 nvic_priority_group_set(NVIC_PRIGROUP_PRE0_SUB4); // 外設初始化 hal_device_init(); //創建開始任務 xTaskCreate( (TaskFunction_t )start_task, //任務函數 (const char* )"start_task", //任務名稱 (uint16_t )START_STK_SIZE, //任務堆棧大小 (void* )NULL, //傳遞給任務函數的參數 (UBaseType_t )START_TASK_PRIO, //任務優先級 (TaskHandle_t* )&StartTask_Handler //任務句柄 ); vTaskStartScheduler(); //開啟調度 while(1); } //開始任務函數 void start_task(void *pvParameters) { taskENTER_CRITICAL(); //進入臨界區 //創建 LED0 任務 xTaskCreate( (TaskFunction_t )led0_task, (const char* )"led0_task", (uint16_t )LED0_STK_SIZE, (void* )NULL, (UBaseType_t )LED0_TASK_PRIO, (TaskHandle_t* )&LED0Task_Handler ); vTaskDelete(StartTask_Handler); //刪除開始任務 taskEXIT_CRITICAL(); //退出臨界區 } //LED0 任務函數 void led0_task(void *pvParameters) { while(1) { /* 測試精度*/ if(RESET == gpio_input_bit_get(GPIOC, GPIO_PIN_6)){ gpio_bit_write(GPIOC, GPIO_PIN_6, SET); }else{ gpio_bit_write(GPIOC, GPIO_PIN_6, RESET); } usert_printf(USART0, "USART0 "); vTaskDelay(1000); } }
第八步:看效果:

這種移植方案與以前的方案最大的不同就是不修改啟動文件, 對于不懂匯編和啟動文件的讀者比較友好, 也比較推薦這種方案來使用FreeRTOS;解決問題的方法千千萬萬, 選擇自己喜歡的就好, 也沒有什么不可。
審核編輯:湯梓紅
聲明:本文內容及配圖由入駐作者撰寫或者入駐合作網站授權轉載。文章觀點僅代表作者本人,不代表電子發燒友網立場。文章及其配圖僅供工程師學習之用,如有內容侵權或者其他違規問題,請聯系本站處理。
舉報投訴
-
移植
+關注
關注
1文章
414瀏覽量
29410 -
源碼
+關注
關注
8文章
685瀏覽量
31322 -
FreeRTOS
+關注
關注
14文章
499瀏覽量
66945 -
GD32
+關注
關注
7文章
432瀏覽量
27355
原文標題:FreeRTOS|再次移植
文章出處:【微信號:玩轉單片機,微信公眾號:玩轉單片機】歡迎添加關注!文章轉載請注明出處。
發布評論請先 登錄
相關推薦
熱點推薦
FreeRTOS移植到MAPS-資料匯總
FreeRTOS已成功移植于超過35種架構的MCU中運行,本文以MAPS-K22開發板為例,介紹了將FreeRTOS移植于NXP Kientis 系列MCU中的步驟,希望能對想學習RT
發表于 12-24 18:36
?6次下載
嵌入式操作系統FREERTOS的移植.
嵌入式操作系統FREERTOS的移植.(濟南嵌入式開發招聘)-嵌入式操作系統FREERTOS移植? ? ? ? ? ? ? ? ?
發表于 07-30 12:01
?15次下載
STM32移植FreeRTOS(圖文實操)
目錄一、Freertos1、前后臺系統2、可剝奪型內核3、Freertos系統簡介二、FreeRTOS移植1.在基礎工程種新建Freertos
發表于 11-21 19:06
?9次下載
IAR移植FreeRTOS
IAR移植FreeRTOS之前寫了移植在MDK的文章,之后試著移植到IAR上(IAR的在線調試功能用著比MDK順手,在線調試實時查看大型數組也不會卡死,MDK查看數組若是太大會很卡)。
發表于 12-03 10:36
?16次下載
FreeRTOS-stm32f407移植
FreeRTOS-stm32f407移植需要準備的內容FreeRTOS移植步驟1、添加FreeRTOS源碼1)復制源碼內容2)刪除porta
發表于 12-04 13:36
?9次下載
【STM32】FreeRTOS移植
00. 目錄文章目錄00. 目錄01. 簡介02. 預備工作03. FreeRTOS移植04. SYSTEM文件修改05. 測試程序設計06. 附錄07. 參考01. 簡介我們已經了解
發表于 12-04 14:06
?15次下載
FreeRTOS的移植
FreeRTOS包含Demo例程和內核源碼(比較重要,我們就需要提取該目錄下的大部分文件)。
**Source**文件夾里面包含的是FreeRTOS內核的源代碼,我們移植FreeRTOS
FreeRTOS|再次移植
評論