FreeRTOS系列推文很久之前就完結了,最近在GD32進行相關移植,發(fā)現還有更好的移植方案,比起直接修改啟動文件更加實用,這里只簡單做下介紹和總結;
第一步:準備一個裸機工程文件,最好配置了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 //任務優(yōu)先級 #define START_STK_SIZE 128 //任務堆棧大小 TaskHandle_t StartTask_Handler; //任務句柄 void start_task(void *pvParameters);//任務函數 #define LED0_TASK_PRIO 2 //任務優(yōu)先級 #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(); } // 主循環(huán) int main( void ) { // 設置系統(tǒng)中斷優(yōu)先級分組 4 nvic_priority_group_set(NVIC_PRIGROUP_PRE0_SUB4); // 外設初始化 hal_device_init(); //創(chuàng)建開始任務 xTaskCreate( (TaskFunction_t )start_task, //任務函數 (const char* )"start_task", //任務名稱 (uint16_t )START_STK_SIZE, //任務堆棧大小 (void* )NULL, //傳遞給任務函數的參數 (UBaseType_t )START_TASK_PRIO, //任務優(yōu)先級 (TaskHandle_t* )&StartTask_Handler //任務句柄 ); vTaskStartScheduler(); //開啟調度 while(1); } //開始任務函數 void start_task(void *pvParameters) { taskENTER_CRITICAL(); //進入臨界區(qū) //創(chuàng)建 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(); //退出臨界區(qū) } //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文章
385瀏覽量
28314 -
源碼
+關注
關注
8文章
656瀏覽量
29786 -
FreeRTOS
+關注
關注
12文章
484瀏覽量
62778 -
GD32
+關注
關注
7文章
416瀏覽量
24661
原文標題:FreeRTOS|再次移植
文章出處:【微信號:玩轉單片機,微信公眾號:玩轉單片機】歡迎添加關注!文章轉載請注明出處。
發(fā)布評論請先 登錄
相關推薦
FreeRTOS移植到MAPS-資料匯總
嵌入式操作系統(tǒng)FREERTOS的移植.

STM32移植FreeRTOS(圖文實操)

IAR移植FreeRTOS

FreeRTOS-stm32f407移植

【STM32】FreeRTOS移植

Freertos 的移植中 “FreeRTOSConfig.h“ 的配置

FreeRTOS的移植

評論