FreeRTOS入門 FreeRTOS移植

2022-09-10 17:12:26 字數 2862 閱讀 5864

開啟keil工程,新建資料夾freertos_corefreertos_portable

將原始碼根目錄下所有c檔案新增進freertos_core

portable\rvds\arm_cm4f下的prot.cportable\memmang\heap_4.c檔案新增進去

新增includeportable\rvds\arm_cm4fportable\memmang\三個標頭檔案路徑

將官方歷程中的freertosconfig.h拖入頭檔案目錄

同時將新增標頭檔案介面的c99 mode給勾上(右邊偏中)

freertosconfig.h最上面的

#ifdef __iccarm__

#include extern uint32_t systemcoreclock;

#endif

替換為

#if defined (__iccarm__)||defined(__cc_arm)||defined(__gnuc__)

#include extern uint32_t systemcoreclock;

#endif

stm32f4xx_it.c中的幾個中斷svc_handlerpendsv_handlersystick_handler遮蔽掉

freertosconfig.h的巨集定義中的鉤子hook和溢位檢測給關掉

...

#define configuse_idle_hook 0

#define configuse_tick_hook 0

...#define configcheck_for_stack_overflow 0

...#define configuse_malloc_failed_hook 0

此時編譯就不再報錯了

//0,不支援ucos

//1,支援ucos

#define system_support_os 1 //定義系統資料夾是否支援ucos

#if system_support_os

#include "includes.h" //ucos 使用

#endif

改為

#if system_support_os

#include "freertos.h" //ucos 使用

#endif

將串列埠中斷中關於系統的語句注釋掉

#include "delay.h"

#include "sys.h"

//

//如果使用os,則包括下面的標頭檔案即可

#if system_support_os

#include "freertos.h" //freertos使用

#include "task.h"

#endif

static u8 fac_us=0; //us延時倍乘數

static u16 fac_ms=0; //ms延時倍乘數,在os下,代表每個節拍的ms數

extern void xportsystickhandler(void);

//systick中斷服務函式,使用os時用到

void systick_handler(void)

}

//初始化延遲函式

//systick的時鐘固定為ahb時鐘,基礎例程裡面systick時鐘頻率為ahb/8

//這裡為了相容freertos,所以將systick的時鐘頻率改為ahb的頻率!

//sysclk:系統時鐘頻率

void delay_init(u8 sysclk)

//延時nus

//nus:要延時的us數.

//nus:0~204522252(最大值即2^32/fac_us@fac_us=168)

void delay_us(u32 nus)

};

} //延時nms

//nms:要延時的ms數

//nms:0~65535

void delay_ms(u32 nms)

nms%=fac_ms; //os已經無法提供這麼小的延時了,採用普通方式延時

} delay_us((u32)(nms*1000)); //普通方式延時}

//延時nms,不會引起任務排程

//nms:要延時的ms數

void delay_xms(u32 nms)

//開始任務任務函式

void start_task(void *pvparameters)

//led0任務函式

void led0_task(void *pvparameters)

}

//led1任務函式

void led1_task(void *pvparameters)

}//浮點測試任務

void float_task(void *pvparameters)

}

FreeRTOS入門實驗

二 freertos的移植 stm32開發板 三 freertos的多工程序 小結rtos 類系統有很多,比如 uc os,資料很多,尤其是中文資料,那為什麼要選擇 freertos 呢?freertos 是乙個可裁剪的小型 rtos 系統,其特點包括 2 然後找到freertos的原始碼 3 然後...

FreeRTOS從入門到摔倒 List

在差不多熟練運用完stm32f103微控制器的基本功能之後,比如gpio口配置 iic spi pwm波等,想繼續深入系統進行學習,當然學習階段最終的目標是arm linux,為了學習這些輕量級的作業系統,將開發板從f103換成了f429,因為後續想結合gui一起學習。去年了解過一些freertos...

嵌入式學習 FreeRTOS入門

在stm32下完成乙個基於freertos的多工程式,執行3個週期性task。task1,每間隔500ms閃爍 變化 一次led task2,每間隔2000ms,向串列埠傳送一次指令資料 helloworld task3,每間隔5000ms,從aht20採集一次溫濕度資料 不考慮硬體情況,僅寫出整個...