開啟keil工程,新建資料夾freertos_core
、freertos_portable
將原始碼根目錄下所有c檔案新增進freertos_core
將portable\rvds\arm_cm4f
下的prot.c
、portable\memmang\
的heap_4.c
檔案新增進去
新增include
、portable\rvds\arm_cm4f
、portable\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_handler
、pendsv_handler
、systick_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採集一次溫濕度資料 不考慮硬體情況,僅寫出整個...