NuMicro M0A23 系列是基于 Arm Cortex -M0 内核的 32 位微控制器。它的工作温度范围达 -40°C 至 125°C,在小封装中提供 CAN 功能,丰富的仿真外设及弹性的引脚分配功能。2.4V 至 5.5V 的工作电压。NuMicro M0A23 系列针对工控和较高的工作温度应用,如雷达,电池管理系统 (BMS),汽车照明,车用控制及工控传感器等应用。
之前我发过一个帖,移植RTT到NUC029上的帖,这次拿到新的开发板,我们试试能否轻松移植RTT到这个M0A23开发板。 准备工具 Keil V5,在pack里安装RTOS,如下图所示

接下来新建工程,工程目录存放M0A23的Lib文件

然后按照RTE的创建工程方式,添加启动文件与RTT RTOS文件到工程

在工程创建目录,添加USER文件和Lib文件

最后对工程配置进行修改,因为要用stdio.h 所以在Target选项卡勾选Use MicroLIB,同时选中编译器为V5版本

在C/C++选项卡设置头文件路径 .LibraryDeviceNuvotonM0A21Include;.LibraryStdDriverinc;.LibraryCMSISInclude 在Linker选项卡设置Misc controls --map --first=‘startup_M0A21.o(RESET)’ --datacompressor=off --info=inline --entry Reset_Handler 在调试器设置对应的调试器,并选择为自动侦测模式

配置烧录功能如下

基本配置到此完成,接下来进行RTT移植修改。 在board.c文件中进行时钟与串口的初始化配置,同时别忘了将头文件NUMicro.h包含进来。
可以直接将M0A23的BSP中的模板配置复制来用即可
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()
中引用该初始化并删除该函数中的时钟更新函数,因为我们已经在上面的函数完成了该操作。
接下来在该文件末尾添加
void rt_hw_console_output(const char *str){ printf(“%s”,str);} char rt_hw_console_getchar(void){return getchar();} 以实现串口打印与交互输入。
然后我们发现,工程的启动文件目录有重定向文件,我们用库函数中的进行替换该文件。
然后找到
__asm int32_t HardFault_Handler(void)
该函数,并注释掉该函数,因为RTT中已经实现了该函数,不然就重复定义了。另外就是通过rtconfig.h启用某些功能了,支持配置向导模式

接下来保存工程,在main.c添加个简单的代码
#include 《stdio.h》#include “NuMicro.h”#include 《rtthread.h》 int main(void){ return 0;} 编译,一次通过。 “.Objectsdemo.axf” - 0 Error(s), 0 Warning(s)。 下载测试

这里提供工程供大家测试学习
编辑:jq
-
微控制器
+关注
关注
48文章
8249浏览量
162269 -
传感器
+关注
关注
2573文章
54363浏览量
785790 -
函数
+关注
关注
3文章
4406浏览量
66812 -
RTT
+关注
关注
0文章
66浏览量
18125 -
RT-Thread
+关注
关注
32文章
1540浏览量
44252
原文标题:我只用了十分钟:将RT-Thread移植到了新唐新款单片机上
文章出处:【微信号:gh_c472c2199c88,微信公众号:嵌入式微处理器】欢迎添加关注!文章转载请注明出处。
发布评论请先 登录
RISC-V单片机快速入门02,移植RT_Thread Nano系统
移植最新版的rt-thread nano时程序进入到entry就报错,为什么?
如何在rt-thread studio上开发STM32H747这类双核的单片机?
【好书推荐】RT-Thread第20本相关书籍!《嵌入式实时操作系统RT-Thread原理与应用》| 技术集结
RT-Thread编译太慢怎么解决?
恩智浦MCU教程 基于MCUXpresso和FRDM-MCXA346的RT-Thread Nano移植
如何移植 RT-Thread Nano 并创建 2 个线程?
RT-Thread 遇上 Rust:安全内核 RusT-Thread 的诞生
RT-Thread Nano硬核移植指南:手把手实现VGLite图形驱动适配 | 技术集结
RT-Thread荣获2025优秀开源项目 | 新闻速递
深度剖析 RT-Thread 线程调度流程
如何在rt-thread studio上开发STM32H747IIT6?
RT-Thread审核团招募: 深度参与开源RTOS社区治理与演进
如何将RT-Thread移植到NXP MCUXPressoIDE上
Deepseek上单片机?RT-Thread上跑通大语言模型

十分钟就将RT-Thread移植到了新唐新款单片机上的小窍门
评论