在线观看www成人影院-在线观看www日本免费网站-在线观看www视频-在线观看操-欧美18在线-欧美1级

0
  • 聊天消息
  • 系統消息
  • 評論與回復
登錄后你可以
  • 下載海量資料
  • 學習在線課程
  • 觀看技術視頻
  • 寫文章/發帖/加入社區
會員中心
創作中心

完善資料讓更多小伙伴認識你,還能領取20積分哦,立即完善>

3天內不再提示

如何創建RT-Thread Nano工程

GD32MCU ? 來源:GD32MCU ? 作者:GD32MCU ? 2022-03-19 12:13 ? 次閱讀

GD32L233C-START評測系列

兆易創新GD32L233系列全新低功耗MCU的最高主頻為64MHz,集成了64-256KB的嵌入式eFlash和16-32KB的SRAM,以及連接到兩條APB總線的各類增強型I/O和外設資源。芯片持續采用行業領先的Arm Cortex-M23內核,通過精簡強大的Armv8-M指令集和全面優化的總線設計帶來高效處理能力,包含獨立的乘法器和除法器,廣泛適用于工業表計、小型消費電子設備、便攜式醫療設備、電池管理系統、數據采集與傳輸等典型市場。

評測主角:GD32L233C-START 評估板 使用 GD32L233CCT6 作為主控制器,使用 GD-Link Mini USB 接口提供 5V 電源,提供包括擴展引腳在內的及Reset、Boot、Button key、LED、USB、USART 轉 USB 接口等外設資源。下載程序到評估板需要使用 GD-Link 工具,所有例程提供了Keil 和IAR 兩個版本。

移植RT-Thread至GD32L233

本文將嘗試使用國產的嵌入式實時操作系統RT-Thread,相比較于FreeRTOS,RT-Thread還是有很多有點的,比如有Fish命令行界面,國產開源免費,Nano版本代碼量極小,移植起來非常簡單(比freeRTOS移植還簡單)等,本文將講解如何將RT-Thread Nano移植到GD32L233C。

一、獲取RT-Thread基于KEIL的離線安裝包

https://www.rt-thread.org/download/mdk/RealThread.RT-Thread.3.1.5.pack

下載之后雙擊安裝即可。

二、添加RT-Thread Nano到工程

1. 打開我們自己的工程,在我的GD32L233C的第二篇帖子中,講解了如何創建一個全新的工程,本文將會在上一篇創建的工程的基礎上添加RT-Thread OS,觀看上一篇帖子請移步:http://bbs.eeworld.com.cn/thread-1192155-1-1.html

2. 點擊 Manage Run-Time Environment,展開RTOS,勾上kernel

06c78c94-a69f-11ec-952b-dac502259ad0.png

3. 點擊OK,我們可以看到KEIL已經自動為我們添加了Cortex-M23相關的內核源碼,這點還是很方便,很人性化的,不用我們在手動修改了。

06e40658-a69f-11ec-952b-dac502259ad0.png

查看官方的文檔堆各個文件都有具體的描述:

06fd03b0-a69f-11ec-952b-dac502259ad0.png

三、修改文件適配Rt-Thread

我們需要修改HardFault_Handler()和 PendSV_Handler(),這兩個文件是由RT-Thread實現的,所以我們工程里面原來的這兩個函數都需要刪除掉,屏蔽掉這兩個函數的申明和定義:

0714259a-a69f-11ec-952b-dac502259ad0.png

072e032a-a69f-11ec-952b-dac502259ad0.png

四、修改系統時鐘

RT-Thread已經為我們寫好了時鐘節拍函數rt_os_tick_callback(), 在board.c文件中,我們只需要將這個函數放置到SysTick_Handler()中即可,注意需要刪除SysTick_Handler()中的原有內容。

075c43a2-a69f-11ec-952b-dac502259ad0.png

刪除rt_hw_board_init()函數中的#error信息,這個函數在board.c文件中,其目的是提醒用戶移植的時候不要忘了心跳節拍的移植,這點還是很人性化的,免得移植了半天發現不工作。

0791d828-a69f-11ec-952b-dac502259ad0.png

五、修改時鐘節拍

RT-Thread為我們提供的配置文件的時鐘節拍是1000,也就是1ms,如果你想要修改心跳節拍,可以在rtconfig.h中修改這個宏RT_TICK_PER_SECOND,目前是1000,如果想修改節拍為10ms,則修改該值為10000,修改的時候最好不要直接修改rtconfig.h這個文件,因為KEIL提供了配置界面修改,在配置界面修改安全可靠。

07cf2584-a69f-11ec-952b-dac502259ad0.png

六、創建線程測試移植是否成功

經過了上面的步驟,我們的移植已經算是完成了,接下來就是寫程序驗證了,像上一篇帖子一樣,我們寫兩個LED動作的線程,LED1 100ms閃爍一次,LED2500ms閃爍一次來做對比,別忘了修改LED燈的引腳,上一篇帖子已經說明白了,引腳不對,需要我們自己修改,如下:

08049e3a-a69f-11ec-952b-dac502259ad0.png

在main.c中寫兩個線程,如下:

#include "gd32l23x.h"#include "systick.h"#include #include "main.h"#include "gd32l233r_eval.h"#include 

static rt_thread_t led1_thr = RT_NULL;static rt_thread_t led2_thr = RT_NULL;
static void thread_led1_entry(void *parameter);static void thread_led2_entry(void *parameter);
/*!    rief      main function    param[in]  none    param[out] none    
etval     none*/
int main(void){    /* configure systick */    systick_config();    /* initilize the LEDs, USART and key */    gd_eval_led_init(LED1);    gd_eval_led_init(LED2);
    led1_thr = rt_thread_create( "led1",     /*線程名字*/                                                      thread_led1_entry,/*線程入口函數*/                                  RT_NULL,/*線程入口函數參數*/                                  256,    /*線程棧大小*/                                  4 ,    /*線程優先級*/                                  20);   /*線程時間片*/    led2_thr = rt_thread_create( "led2",     /*線程名字*/                                                      thread_led2_entry,/*線程入口函數*/                                  RT_NULL,/*線程入口函數參數*/                                  256,    /*線程棧大小*/                                  3 ,    /*線程優先級*/                                  20);   /*線程時間片*/        rt_thread_startup (led1_thr);    rt_thread_startup (led2_thr);
    while(1)     {        rt_thread_mdelay(100);    }}
static void thread_led1_entry(void *parameter){    while (1)    {        gd_eval_led_toggle(LED1);        rt_thread_mdelay(100);    }}
static void thread_led2_entry(void *parameter){    while (1)    {        gd_eval_led_toggle(LED2);        rt_thread_mdelay(500);    }}

編譯成功下載,發現程序并不運行,這是為什么呢?通過堆問題的查找,發現是main函數線程的堆棧空間分配的太小了,因為相比較于其他嵌入式系統,RT-Thread將main函數也做為了一個線程,我們在main函數中創建線程需要較大的空間,而RT-Thread給的默認配置的main線程的堆棧空間為256,修改為512即可:

081b858c-a69f-11ec-952b-dac502259ad0.png

再次編譯下載,成功,后期可以使用RT-Thread來開發多線程任務了。

七、演示

原文標題:GD32L233開發板評測 | RT-Thread操作系統移植

文章出處:【微信公眾號:GD32MCU】歡迎添加關注!文章轉載請注明出處。

審核編輯:彭菁

聲明:本文內容及配圖由入駐作者撰寫或者入駐合作網站授權轉載。文章觀點僅代表作者本人,不代表電子發燒友網立場。文章及其配圖僅供工程師學習之用,如有內容侵權或者其他違規問題,請聯系本站處理。 舉報投訴
  • 芯片
    +關注

    關注

    456

    文章

    51004

    瀏覽量

    425209
  • 乘法器
    +關注

    關注

    8

    文章

    206

    瀏覽量

    37129
  • RT-Thread
    +關注

    關注

    31

    文章

    1299

    瀏覽量

    40258

原文標題:GD32L233開發板評測 | RT-Thread操作系統移植

文章出處:【微信號:GD32MCU,微信公眾號:GD32MCU】歡迎添加關注!文章轉載請注明出處。

收藏 人收藏

    評論

    相關推薦

    從安裝到使用,RT-Thread Nano最全教程看完不信你還不會使用

    RT-Thread Nano發布以來,小編收到不少開發者詢問RT-Thread Nano的配套教程實例,幸得RT-Thread開發者燕十三
    的頭像 發表于 09-26 06:39 ?5.7w次閱讀
    從安裝到使用,<b class='flag-5'>RT-Thread</b> <b class='flag-5'>Nano</b>最全教程看完不信你還不會使用

    RT-Thread Nano入門:獨立看門狗(IWDT)

    本文主要介紹怎么用RT-Thread Nano實現獨立看門狗IWDT驅動,創建一個喂狗線程,實現定時喂狗功能。
    的頭像 發表于 11-22 11:04 ?2395次閱讀
    <b class='flag-5'>RT-Thread</b> <b class='flag-5'>Nano</b>入門:獨立看門狗(IWDT)

    基于 Keil MDK 移植 RT-Thread Nano

    基于 Keil MDK 移植 RT-Thread Nano 本文介紹如何基于 Keil MDK 移植 RT-Thread Nano ,并以一個 stm32f103 的基礎
    發表于 03-29 06:58

    如何基于CubeMX移植RT-Thread Nano

    本文介紹了如何基于 CubeMX 移植 RT-Thread Nano,并說明生成代碼工程的步驟。RT-Thread Nano 已集成在 Cu
    發表于 03-29 06:56

    RT-Thread Nano 簡介

    基于 Nano 創建工程直接使用。以下是使用不同開發環境時,可以選擇移植或使用 Nano 的方法:在 RT-Thread Studio 上使用 RT
    發表于 05-14 10:22

    基于 Keil MDK 移植 RT-Thread Nano

    本文介紹如何基于 Keil MDK 移植 RT-Thread Nano ,并以一個 stm32f103 的基礎工程作為示例進行講解。RT-Thread
    發表于 05-14 10:32

    基于 CubeMX 移植 RT-Thread Nano

    本文介紹了如何基于 CubeMX 移植 RT-Thread Nano,并說明生成代碼工程的步驟。RT-Thread Nano 已集成在 Cu
    發表于 05-14 16:09

    基于 IAR 移植 RT-Thread Nano

    本文介紹了如何基于 IAR 移植 RT-Thread Nano,并以一個 stm32f103 的基礎工程作為示例進行講解。移植 Nano 的主要步驟:準備一個基礎的 IAR
    發表于 05-18 15:40

    RT-Thread Studio 上使用 RT-Thread Nano

    本文介紹了如何在 RT-Thread Studio 上使用 RT-Thread Nano,并以創建 stm32f103RB 的 Nano
    發表于 05-18 15:59

    基于 Keil MDK 移植 RT-Thread Nano

    本文介紹如何基于 Keil MDK 移植 RT-Thread Nano ,并以一個 stm32f103 的基礎工程作為示例進行講解。RT-Thread
    發表于 05-19 18:15

    【國產MCU系列】在 HK32F030 上移植 RT-Thread Nano

    如需下載相關開源資料請點擊閱讀原文這是一個航順 HK32F030 的 RT-Thread Nano 移植示例,記錄了在 Keil 裸機工程的基礎上進行 RT-Thread
    發表于 11-21 18:51 ?42次下載
    【國產MCU系列】在 HK32F030 上移植 <b class='flag-5'>RT-Thread</b> <b class='flag-5'>Nano</b>

    RT-Thread Nano入門學習筆記

    RT-Thread Nano入門學習筆記
    發表于 11-26 12:36 ?20次下載
    <b class='flag-5'>RT-Thread</b> <b class='flag-5'>Nano</b>入門學習筆記

    STM32 RT-Thread Nano(1)基于 Keil MDK 移植

    本文介紹如何基于 Keil MDK 移植 RT-Thread Nano ,并以一個 stm32f103 的基礎工程作為示例進行講解。開發平臺:Keil MDK硬件平臺:XNUCLEO-F103RB
    發表于 12-02 16:06 ?13次下載
    STM32 <b class='flag-5'>RT-Thread</b> <b class='flag-5'>Nano</b>(1)基于 Keil MDK 移植

    HC32F460移植RT-Thread Nano+FinSh工程源碼下載

    HC32F460移植RT-Thread Nano+FinSh工程源碼下載
    發表于 01-05 10:30 ?6次下載

    基于 Keil MDK 移植 RT-Thread Nano

    本文介紹如何基于 Keil MDK 移植 RT-Thread Nano ,并以一個 stm32f103 的基礎工程作為示例進行講解。 RT-Thread
    發表于 01-26 17:04 ?16次下載
    基于 Keil MDK 移植 <b class='flag-5'>RT-Thread</b> <b class='flag-5'>Nano</b>
    主站蜘蛛池模板: 99久久久精品| 国产一级aaa全黄毛片| 性欧美精品久久久久久久| 国产精品高清久久久久久久| 欧美人成一本免费观看视频| 老师受年下高h男| 曰本在线| 色综合视频在线观看| 日本黄色a级| 久久青草视频| 丁香婷婷亚洲六月综合色| 最新看片网址| 男女性gif抽搐出入| 2017天天干| 日本不卡视频一区二区| 亚洲综合第一区| 日韩三级精品| 国内真实实拍伦视频在线观看| 丁香花高清在线观看| 日日操夜夜操天天操| 午夜啪啪片| 白嫩少妇激情无码| 色色色爱| 国产人成高清视频观看| 婷婷综合网站| 操她射她| 激情九月婷婷| 日韩亚| 国产亚洲3p一区二区三区| 亚洲国产成人久久午夜| 狠狠干天天色| 色女人综合| 色综合激情网| 国产三级影院| 奇米精品| 亚洲欧洲无码一区二区三区| 亚洲五月婷| 久久精品免费观看视频| 午夜大片免费完整在线看| 1024手机看片欧美日韩| 自拍你懂的|