NuMicro M0A23 系列是基于 Arm Cortex -M0 內(nèi)核的 32 位微控制器。它的工作溫度范圍達(dá) -40°C 至 125°C,在小封裝中提供 CAN 功能,豐富的仿真外設(shè)及彈性的引腳分配功能。2.4V 至 5.5V 的工作電壓。NuMicro M0A23 系列針對工控和較高的工作溫度應(yīng)用,如雷達(dá),電池管理系統(tǒng) (BMS),汽車照明,車用控制及工控傳感器等應(yīng)用。
之前我發(fā)過一個帖,移植RTT到NUC029上的帖,這次拿到新的開發(fā)板,我們試試能否輕松移植RTT到這個M0A23開發(fā)板。 準(zhǔn)備工具 Keil V5,在pack里安裝RTOS,如下圖所示

接下來新建工程,工程目錄存放M0A23的Lib文件

然后按照RTE的創(chuàng)建工程方式,添加啟動文件與RTT RTOS文件到工程

在工程創(chuàng)建目錄,添加USER文件和Lib文件

最后對工程配置進(jìn)行修改,因為要用stdio.h 所以在Target選項卡勾選Use MicroLIB,同時選中編譯器為V5版本

在C/C++選項卡設(shè)置頭文件路徑 .LibraryDeviceNuvotonM0A21Include;.LibraryStdDriverinc;.LibraryCMSISInclude 在Linker選項卡設(shè)置Misc controls --map --first=‘startup_M0A21.o(RESET)’ --datacompressor=off --info=inline --entry Reset_Handler 在調(diào)試器設(shè)置對應(yīng)的調(diào)試器,并選擇為自動偵測模式

配置燒錄功能如下

基本配置到此完成,接下來進(jìn)行RTT移植修改。 在board.c文件中進(jìn)行時鐘與串口的初始化配置,同時別忘了將頭文件NUMicro.h包含進(jìn)來。
可以直接將M0A23的BSP中的模板配置復(fù)制來用即可
void SYS_Init(void){ /* Unlock protected registers */ SYS_UnlockReg(); /* Enable HIRC clock (Internal RC 48MHz) */ CLK_EnableXtalRC(CLK_PWRCTL_HIRCEN_Msk); /* Wait for HIRC clock ready */ CLK_WaitClockReady(CLK_STATUS_HIRCSTB_Msk); /* Select HCLK clock source as HIRC and HCLK source divider as 1 */ CLK_SetHCLK(CLK_CLKSEL0_HCLKSEL_HIRC, CLK_CLKDIV0_HCLK(1)); /* Enable UART0 clock */ CLK_EnableModuleClock(UART0_MODULE);
/* Switch UART0 clock source to HIRC */ CLK_SetModuleClock(UART0_MODULE, CLK_CLKSEL1_UART0SEL_HIRC, CLK_CLKDIV0_UART0(1)); /* Update System Core Clock */ SystemCoreClockUpdate(); /* Set PB multi-function pins for UART0 RXD=PB.6 and TXD=PB.4 */ SYS-》GPB_MFP1 = (SYS-》GPB_MFP1 & ~(SYS_GPB_MFP1_PB4MFP_Msk | SYS_GPB_MFP1_PB6MFP_Msk)) | (SYS_GPB_MFP1_PB4MFP_UART0_TXD | SYS_GPB_MFP1_PB6MFP_UART0_RXD); /* Lock protected registers */ SYS_LockReg(); UART_Open(UART0, 115200);} 然后在rt_hw_board_init()
中引用該初始化并刪除該函數(shù)中的時鐘更新函數(shù),因為我們已經(jīng)在上面的函數(shù)完成了該操作。
接下來在該文件末尾添加
void rt_hw_console_output(const char *str){ printf(“%s”,str);} char rt_hw_console_getchar(void){return getchar();} 以實現(xiàn)串口打印與交互輸入。
然后我們發(fā)現(xiàn),工程的啟動文件目錄有重定向文件,我們用庫函數(shù)中的進(jìn)行替換該文件。
然后找到
__asm int32_t HardFault_Handler(void)
該函數(shù),并注釋掉該函數(shù),因為RTT中已經(jīng)實現(xiàn)了該函數(shù),不然就重復(fù)定義了。另外就是通過rtconfig.h啟用某些功能了,支持配置向?qū)J?/p>

接下來保存工程,在main.c添加個簡單的代碼
#include 《stdio.h》#include “NuMicro.h”#include 《rtthread.h》 int main(void){ return 0;} 編譯,一次通過。 “.Objectsdemo.axf” - 0 Error(s), 0 Warning(s)。 下載測試

這里提供工程供大家測試學(xué)習(xí)
編輯:jq
-
微控制器
+關(guān)注
關(guān)注
48文章
8315瀏覽量
163818 -
傳感器
+關(guān)注
關(guān)注
2576文章
54866瀏覽量
789674 -
函數(shù)
+關(guān)注
關(guān)注
3文章
4413瀏覽量
67263 -
RTT
+關(guān)注
關(guān)注
0文章
66瀏覽量
18225 -
RT-Thread
+關(guān)注
關(guān)注
32文章
1594瀏覽量
44552
原文標(biāo)題:我只用了十分鐘:將RT-Thread移植到了新唐新款單片機(jī)上
文章出處:【微信號:gh_c472c2199c88,微信公眾號:嵌入式微處理器】歡迎添加關(guān)注!文章轉(zhuǎn)載請注明出處。
發(fā)布評論請先 登錄
恩智浦亮相RT-Thread 20周年開發(fā)者大會
RISC-V單片機(jī)快速入門02,移植RT_Thread Nano系統(tǒng)
移植最新版的rt-thread nano時程序進(jìn)入到entry就報錯,為什么?
如何在rt-thread studio上開發(fā)STM32H747這類雙核的單片機(jī)?
RT-Thread編譯太慢怎么解決?
恩智浦MCU教程 基于MCUXpresso和FRDM-MCXA346的RT-Thread Nano移植
如何移植 RT-Thread Nano 并創(chuàng)建 2 個線程?
RT-Thread 遇上 Rust:安全內(nèi)核 RusT-Thread 的誕生
RT-Thread Nano硬核移植指南:手把手實現(xiàn)VGLite圖形驅(qū)動適配 | 技術(shù)集結(jié)
RT-Thread榮獲2025優(yōu)秀開源項目 | 新聞速遞
深度剖析 RT-Thread 線程調(diào)度流程
如何在rt-thread studio上開發(fā)STM32H747IIT6?
RT-Thread審核團(tuán)招募: 深度參與開源RTOS社區(qū)治理與演進(jìn)
如何將RT-Thread移植到NXP MCUXPressoIDE上
Deepseek上單片機(jī)?RT-Thread上跑通大語言模型
十分鐘就將RT-Thread移植到了新唐新款單片機(jī)上的小竅門
評論