那曲檬骨新材料有限公司

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游戏交易平台| 百家乐园鼎盛娱乐场| 打百家乐的技术| 汉百家乐官网春| 百家乐官网8点直赢| 百家乐官网获胜秘决| bet365娱乐平台| 大发888娱乐能借钱| 威尼斯人娱乐城官方网| 百家乐赚钱方| 怎么玩百家乐呀| 网络百家乐网站| 百家乐有人赢过吗| 属马做生意坐向| 太阳百家乐官网网| 澳门百家乐官网赢钱公式不倒翁| 乌拉特后旗| 兰州市| 千亿娱乐网| 利来国际网址| 娱乐城注册送金| 延川县| 百家乐官网博彩博彩网| 最新棋牌游戏| 金榜娱乐城| 台中市| 利高百家乐官网娱乐城| 澳门百家乐官网赢技巧| 澳门百家乐官网游戏说明书|