FreeRTOS系列推文很久之前就完結(jié)了,最近在GD32進(jìn)行相關(guān)移植,發(fā)現(xiàn)還有更好的移植方案,比起直接修改啟動(dòng)文件更加實(shí)用,這里只簡單做下介紹和總結(jié);
第一步:準(zhǔn)備一個(gè)裸機(jī)工程文件,最好配置了GPIO和串口,因?yàn)檫@兩個(gè)是最方便查看效果的;
第二步:把FreeRTOS的源碼直接復(fù)制到工程目錄下,這樣就算沒安裝支持包都可以直接使用,也方便相關(guān)管理和維護(hù):
第三步:添加分組,然后把相關(guān)源碼添加進(jìn)去:
注意: 配置文件可以在官方demo中找到:
第四步:添加路徑:
第五步:在FreeRTOSConfig.h進(jìn)行適當(dāng)修改:
第六步:屏蔽三個(gè)中斷函數(shù):
第七步:編寫任務(wù)函數(shù):
#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 //任務(wù)優(yōu)先級(jí)
#define START_STK_SIZE 128 //任務(wù)堆棧大小
TaskHandle_t StartTask_Handler; //任務(wù)句柄
void start_task(void *pvParameters);//任務(wù)函數(shù)
#define LED0_TASK_PRIO 2 //任務(wù)優(yōu)先級(jí)
#define LED0_STK_SIZE 50 //任務(wù)堆棧大小
TaskHandle_t LED0Task_Handler; //任務(wù)句柄
void led0_task(void *p_arg); //任務(wù)函數(shù)
// 外設(shè)初始化
void hal_device_init(void)
{
hal_led_init();
hal_log_init();
hal_usart_init();
}
// 主循環(huán)
int main( void )
{
// 設(shè)置系統(tǒng)中斷優(yōu)先級(jí)分組 4
nvic_priority_group_set(NVIC_PRIGROUP_PRE0_SUB4);
// 外設(shè)初始化
hal_device_init();
//創(chuàng)建開始任務(wù)
xTaskCreate(
(TaskFunction_t )start_task, //任務(wù)函數(shù)
(const char* )'start_task', //任務(wù)名稱
(uint16_t )START_STK_SIZE, //任務(wù)堆棧大小
(void* )NULL, //傳遞給任務(wù)函數(shù)的參數(shù)
(UBaseType_t )START_TASK_PRIO, //任務(wù)優(yōu)先級(jí)
(TaskHandle_t* )&StartTask_Handler //任務(wù)句柄
);
vTaskStartScheduler(); //開啟調(diào)度
while(1);
}
//開始任務(wù)函數(shù)
void start_task(void *pvParameters)
{
taskENTER_CRITICAL(); //進(jìn)入臨界區(qū)
//創(chuàng)建 LED0 任務(wù)
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); //刪除開始任務(wù)
taskEXIT_CRITICAL(); //退出臨界區(qū)
}
//LED0 任務(wù)函數(shù)
void led0_task(void *pvParameters)
{
while(1)
{
/* 測(cè)試精度*/
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);
}
}
第八步:看效果:
這種移植方案與以前的方案最大的不同就是不修改啟動(dòng)文件, 對(duì)于不懂匯編和啟動(dòng)文件的讀者比較友好, 也比較推薦這種方案來使用FreeRTOS;解決問題的方法千千萬萬, 選擇自己喜歡的就好, 也沒有什么不可。
上一篇:FreeRTOS移植+點(diǎn)亮OLED任務(wù)線程
下一篇:Jlink.exe(Jlink commander)的常用命令
- 熱門資源推薦
- 熱門放大器推薦
設(shè)計(jì)資源 培訓(xùn) 開發(fā)板 精華推薦
- 英飛凌微控制器:以全新實(shí)惠套件和強(qiáng)大開發(fā)環(huán)境為開發(fā)者提供支持
- iTOP-i.MX6開發(fā)板設(shè)備數(shù)驅(qū)動(dòng)Menuconfig的用法
- 迅為IMX6ULL開發(fā)板Qt for Android搭建開發(fā)環(huán)境
- 迅為i.MX8M mini開發(fā)板Windots QT系統(tǒng)開發(fā)環(huán)境搭建
- 迅為IMX8MM開發(fā)板Yocto系統(tǒng)使用Gstarwmra(一)
- 迅為IMX8M mini開發(fā)板Linix系統(tǒng)修改默認(rèn)屏幕
- iTOP-4412開發(fā)板支持4G以上文件系統(tǒng)擴(kuò)展
- 迅為IMX8MM開發(fā)板Yocto系統(tǒng)設(shè)置開機(jī)自啟動(dòng)
- 迅為IMX6Q開發(fā)板 Buildroot文件系統(tǒng)mqtt測(cè)試
- LT1376HVCS8 1.5A、500kHz 降壓型開關(guān)穩(wěn)壓器的典型應(yīng)用電路
- 智能臺(tái)燈
- L7809C 光控制器穩(wěn)壓器的典型應(yīng)用 (Vo(min) = Vxx + VBE)
- STEVAL-ILL048V1,基于 ALED6001 和 STM32F103C6T6 的演示板 用于汽車日間行車燈 (DTRL) 和前燈的單通道 LED 驅(qū)動(dòng)器
- DC1524A-A,用于 LTC5588-1、6GHz 超高 OIP3 正交調(diào)制器的演示板
- LT3990HMSE 3.3V 降壓轉(zhuǎn)換器的典型應(yīng)用
- 適用于低占空比應(yīng)用的 LT3007ETS8-3.3 低壓差線性穩(wěn)壓器的典型應(yīng)用電路
- MC78M05ABTG 5V 電流調(diào)節(jié)器的典型應(yīng)用
- 十六路異形循跡模塊
- NCP1562-100WGEVB,NCP1562 評(píng)估板,100W,48V 電信磚
- 【玩轉(zhuǎn)+顯擺】C2000 Launchpad!!!
- 快來應(yīng)援吧!投票選出你最愛的TI培訓(xùn)課程
- 有獎(jiǎng)直播|TI 芯技術(shù)助力電機(jī)開發(fā)
- 有獎(jiǎng)?wù)魑模貉痪€汽車VCU/MCU開發(fā)工程師,分享開發(fā)經(jīng)驗(yàn)、難題、成長之路等
- 預(yù)約有禮:預(yù)約理想配電網(wǎng)絡(luò)的電源完整性設(shè)計(jì)等直播,漲知識(shí)贏好禮
- 【已結(jié)束】TI 有獎(jiǎng)直播|使用低成本 MSPM0 MCU 快速開發(fā)
- 看視頻贏京東卡 | PI無刷直流電機(jī)學(xué)習(xí)中心正式上線
- 醫(yī)用/工業(yè)CT醫(yī)療影像探測(cè)器芯片應(yīng)用與解決方案
- TI有獎(jiǎng)創(chuàng)意征集,CC3200開發(fā)套件等100份禮品等你來
- 意法半導(dǎo)體數(shù)字隔離器采用新型厚氧化物電流隔離技術(shù)
- 聚積科技以mini-LED技術(shù)正面對(duì)決傳統(tǒng)背光源/傳統(tǒng)LED顯示技術(shù)
- 廣汽埃安新能源采用日本電產(chǎn)(尼得科/Nidec)驅(qū)動(dòng)馬達(dá)系統(tǒng)
- 愛馳汽車攜手藍(lán)谷智慧能源探索換電新模式
- 中國數(shù)字化制造轉(zhuǎn)型機(jī)遇在哪里?仙工智能(SEER)在NEPCON China 2021 說與你聽
- 曾經(jīng)的軍事大殺器,現(xiàn)在的汽車高科技
- “鋰電池之父”研制新型電池 容量為鋰電池3倍
- 電池開發(fā)商Enovix研發(fā)新3D硅鋰離子電池,明顯提升電池容量和壽命
- 一場(chǎng)關(guān)于氫燃料電池的拉鋸戰(zhàn)(上)
- 中國智能駕駛第一大收購案:濰柴6.6億買下商用ADAS入場(chǎng)券