娇小w搡bbbb搡bbb,《第一次の人妻》,中国成熟妇女毛茸茸,边啃奶头边躁狠狠躁视频免费观看

FreeRTOS|再次移植

發(fā)布者:心靈的旅程最新更新時(shí)間:2024-11-13 來源: elecfans關(guān)鍵字:FreeRTOS  移植  GD32 手機(jī)看文章 掃描二維碼
隨時(shí)隨地手機(jī)看文章

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ù):

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

第六步:屏蔽三個(gè)中斷函數(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)先級(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);

  }

}


第八步:看效果:

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

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


關(guān)鍵字:FreeRTOS  移植  GD32 引用地址:FreeRTOS|再次移植

上一篇:FreeRTOS移植+點(diǎn)亮OLED任務(wù)線程
下一篇:Jlink.exe(Jlink commander)的常用命令

小廣播
設(shè)計(jì)資源 培訓(xùn) 開發(fā)板 精華推薦

最新單片機(jī)文章

 
EEWorld訂閱號(hào)

 
EEWorld服務(wù)號(hào)

 
汽車開發(fā)圈

 
機(jī)器人開發(fā)圈

電子工程世界版權(quán)所有 京ICP證060456號(hào) 京ICP備10001474號(hào)-1 電信業(yè)務(wù)審批[2006]字第258號(hào)函 京公網(wǎng)安備 11010802033920號(hào) Copyright ? 2005-2025 EEWORLD.com.cn, Inc. All rights reserved
主站蜘蛛池模板: 松溪县| 永年县| 公主岭市| 米林县| 平乐县| 洪湖市| 扬州市| 张家口市| 利津县| 托克逊县| 上高县| 广南县| 乐山市| 兰州市| 万安县| 东海县| 略阳县| 鄄城县| 区。| 榆树市| 兴业县| 内丘县| 利辛县| 仁寿县| 小金县| 沙田区| 江孜县| 闽侯县| 且末县| 大洼县| 福建省| 东至县| 富裕县| 乾安县| 南京市| 佛冈县| 隆子县| 广水市| 县级市| 轮台县| 耒阳市|