吴忠躺衫网络科技有限公司

0
  • 聊天消息
  • 系統(tǒng)消息
  • 評論與回復(fù)
登錄后你可以
  • 下載海量資料
  • 學(xué)習(xí)在線課程
  • 觀看技術(shù)視頻
  • 寫文章/發(fā)帖/加入社區(qū)
會員中心
創(chuàng)作中心

完善資料讓更多小伙伴認(rèn)識你,還能領(lǐng)取20積分哦,立即完善>

3天內(nèi)不再提示

FreeRTOS|再次移植

玩轉(zhuǎn)單片機(jī) ? 來源:玩轉(zhuǎn)單片機(jī) ? 作者: noah ? 2022-12-06 09:36 ? 次閱讀

FreeRTOS系列推文很久之前就完結(jié)了,最近在GD32進(jìn)行相關(guān)移植,發(fā)現(xiàn)還有更好的移植方案,比起直接修改啟動文件更加實用,這里只簡單做下介紹和總結(jié);

第一步:準(zhǔn)備一個裸機(jī)工程文件,最好配置了GPIO和串口,因為這兩個是最方便查看效果的;

第二步:把FreeRTOS的源碼直接復(fù)制到工程目錄下,這樣就算沒安裝支持包都可以直接使用,也方便相關(guān)管理和維護(hù):

a9fa2714-74b2-11ed-8abf-dac502259ad0.png

第三步:添加分組,然后把相關(guān)源碼添加進(jìn)去:

aa318a24-74b2-11ed-8abf-dac502259ad0.png

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

aa61cc66-74b2-11ed-8abf-dac502259ad0.png

第四步:添加路徑:

aa9b3f28-74b2-11ed-8abf-dac502259ad0.png

第五步:在FreeRTOSConfig.h進(jìn)行適當(dāng)修改:

aabe74e8-74b2-11ed-8abf-dac502259ad0.png

第六步:屏蔽三個中斷函數(shù):

aaf4b526-74b2-11ed-8abf-dac502259ad0.png

第七步:編寫任務(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)先級
#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)先級
#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)先級分組 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)先級
    (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)
  {
    /* 測試精度*/
  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);
  }
}

第八步:看效果:

ab280dd6-74b2-11ed-8abf-dac502259ad0.png

這種移植方案與以前的方案最大的不同就是不修改啟動文件, 對于不懂匯編和啟動文件的讀者比較友好, 也比較推薦這種方案來使用FreeRTOS;解決問題的方法千千萬萬, 選擇自己喜歡的就好, 也沒有什么不可。

審核編輯:湯梓紅

聲明:本文內(nèi)容及配圖由入駐作者撰寫或者入駐合作網(wǎng)站授權(quán)轉(zhuǎn)載。文章觀點僅代表作者本人,不代表電子發(fā)燒友網(wǎng)立場。文章及其配圖僅供工程師學(xué)習(xí)之用,如有內(nèi)容侵權(quán)或者其他違規(guī)問題,請聯(lián)系本站處理。 舉報投訴
  • 移植
    +關(guān)注

    關(guān)注

    1

    文章

    383

    瀏覽量

    28193
  • 源碼
    +關(guān)注

    關(guān)注

    8

    文章

    652

    瀏覽量

    29452
  • FreeRTOS
    +關(guān)注

    關(guān)注

    12

    文章

    484

    瀏覽量

    62395
  • GD32
    +關(guān)注

    關(guān)注

    7

    文章

    413

    瀏覽量

    24469

原文標(biāo)題:FreeRTOS|再次移植

文章出處:【微信號:玩轉(zhuǎn)單片機(jī),微信公眾號:玩轉(zhuǎn)單片機(jī)】歡迎添加關(guān)注!文章轉(zhuǎn)載請注明出處。

收藏 人收藏

    評論

    相關(guān)推薦

    FreeRTOS下對lwIP的移植程序

    FreeRTOS下對 lwIP的移植程序。
    發(fā)表于 10-29 10:58 ?11次下載

    FreeRTOS移植到MAPS-資料匯總

    FreeRTOS已成功移植于超過35種架構(gòu)的MCU中運行,本文以MAPS-K22開發(fā)板為例,介紹了將FreeRTOS移植于NXP Kientis 系列MCU中的步驟,希望能對想學(xué)習(xí)RT
    發(fā)表于 12-24 18:36 ?6次下載

    freertos移植教程_freertos任務(wù)調(diào)度原理

    移植之前,我們首先要獲取到FreeRTOS的官方的源碼包。
    發(fā)表于 04-16 09:16 ?1.2w次閱讀
    <b class='flag-5'>freertos</b><b class='flag-5'>移植</b>教程_<b class='flag-5'>freertos</b>任務(wù)調(diào)度原理

    嵌入式操作系統(tǒng)FREERTOS移植.

    嵌入式操作系統(tǒng)FREERTOS移植.(濟(jì)南嵌入式開發(fā)招聘)-嵌入式操作系統(tǒng)FREERTOS移植? ? ? ? ? ? ? ? ?
    發(fā)表于 07-30 12:01 ?15次下載
    嵌入式操作系統(tǒng)<b class='flag-5'>FREERTOS</b>的<b class='flag-5'>移植</b>.

    轉(zhuǎn)發(fā):stm32 移植 freertos

    轉(zhuǎn)發(fā):stm32 移植 freertos
    發(fā)表于 11-20 12:36 ?14次下載
    轉(zhuǎn)發(fā):stm32 <b class='flag-5'>移植</b> <b class='flag-5'>freertos</b>

    STM32移植FreeRTOS(圖文實操)

    目錄一、Freertos1、前后臺系統(tǒng)2、可剝奪型內(nèi)核3、Freertos系統(tǒng)簡介二、FreeRTOS移植1.在基礎(chǔ)工程種新建Freertos
    發(fā)表于 11-21 19:06 ?9次下載
    STM32<b class='flag-5'>移植</b><b class='flag-5'>FreeRTOS</b>(圖文實操)

    IAR移植FreeRTOS

    IAR移植FreeRTOS之前寫了移植在MDK的文章,之后試著移植到IAR上(IAR的在線調(diào)試功能用著比MDK順手,在線調(diào)試實時查看大型數(shù)組也不會卡死,MDK查看數(shù)組若是太大會很卡)。
    發(fā)表于 12-03 10:36 ?15次下載
    IAR<b class='flag-5'>移植</b><b class='flag-5'>FreeRTOS</b>

    freeRTOS使用筆記一(移植篇)

    freeRTOS使用筆記一(移植篇)
    發(fā)表于 12-03 14:06 ?18次下載
    <b class='flag-5'>freeRTOS</b>使用筆記一(<b class='flag-5'>移植</b>篇)

    英飛凌infineon-XMC4500,移植FreeRTOS

    英飛凌infineon-XMC4500,移植FreeRTOS
    發(fā)表于 12-03 16:06 ?14次下載
    英飛凌infineon-XMC4500,<b class='flag-5'>移植</b><b class='flag-5'>FreeRTOS</b>

    FreeRTOS移植—基于STM32

    FreeRTOS移植—基于STM32
    發(fā)表于 12-04 12:51 ?18次下載
    <b class='flag-5'>FreeRTOS</b><b class='flag-5'>移植</b>—基于STM32

    FreeRTOS-stm32f407移植

    FreeRTOS-stm32f407移植需要準(zhǔn)備的內(nèi)容FreeRTOS移植步驟1、添加FreeRTOS源碼1)復(fù)制源碼內(nèi)容2)刪除porta
    發(fā)表于 12-04 13:36 ?9次下載
    <b class='flag-5'>FreeRTOS</b>-stm32f407<b class='flag-5'>移植</b>

    【STM32】FreeRTOS移植

    00. 目錄文章目錄00. 目錄01. 簡介02. 預(yù)備工作03. FreeRTOS移植04. SYSTEM文件修改05. 測試程序設(shè)計06. 附錄07. 參考01. 簡介我們已經(jīng)了解
    發(fā)表于 12-04 14:06 ?14次下載
    【STM32】<b class='flag-5'>FreeRTOS</b><b class='flag-5'>移植</b>

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

    Freertos移植中 “FreeRTOSConfig.h“ 的配置
    發(fā)表于 12-04 14:06 ?10次下載
    <b class='flag-5'>Freertos</b> 的<b class='flag-5'>移植</b>中 “FreeRTOSConfig.h“ 的配置

    FreeRTOS操作系統(tǒng)移植文件

    FreeRTOS操作系統(tǒng)移植文件,不會官網(wǎng)下載的,可以這里下載
    發(fā)表于 08-28 14:58 ?1次下載

    FreeRTOS移植

    FreeRTOS包含Demo例程和內(nèi)核源碼(比較重要,我們就需要提取該目錄下的大部分文件)。 **Source**文件夾里面包含的是FreeRTOS內(nèi)核的源代碼,我們移植FreeRTOS
    的頭像 發(fā)表于 02-14 09:34 ?1227次閱讀
    <b class='flag-5'>FreeRTOS</b>的<b class='flag-5'>移植</b>
    百家乐官网必赢法冯耘| 娱乐城百家乐规则| 娱乐百家乐下载| 百家乐官网筹码样式| 伟博百家乐现金网| 久盛娱乐城| 做生意办公桌摆放风水| 金花娱乐城注册| 金三角百家乐官网的玩法技巧和规则| 大发888登陆器下载| 百家乐官网稳赢秘诀教学| 大发888网页| 澳门百家乐官网骗人| 金沙百家乐的玩法技巧和规则| 百家乐官网视频聊天软件| 百家乐在线娱乐平台| 网上百家乐官网辅助软件| 贝博百家乐的玩法技巧和规则| 塑料百家乐官网筹码| 全讯网xb112| 黄金百家乐官网的玩法技巧和规则 | 博士百家乐官网现金网| 百家乐威尼斯人| 波音百家乐官网自动投注| 大发888为什么打不开| 888百家乐官网的玩法技巧和规则| 188金宝博备用网址| 百家乐赢新全讯网| 赌场里的美少年| 百家乐1326投注| 财神百家乐官网娱乐城| 百家乐筹码套装包邮| 广州百家乐官网赌场娱乐网规则 | 太阳城百家乐官网作弊| 大发888游戏在线客服| 24山是什么意思| 百家乐官网斗视频游戏| 御匾会百家乐的玩法技巧和规则| 大丰收百家乐官网的玩法技巧和规则| 六合彩官网| e世博百家乐攻略|