搜索
发新帖本帖赏金 10.00元(功能说明)我要提问
返回列表

[牛人杂谈] 新唐新出单片机M0A23移植RT-Thread竟然这么容易,十分钟搞定。

[复制链接]
3629|11
gaoyang9992006|  楼主 | 2021-4-21 19:43 | 显示全部楼层 |阅读模式
本帖最后由 gaoyang9992006 于 2021-4-22 10:12 编辑

#申请原创#[url=home.php?mod=space&uid=760190]@21小跑堂 [/url]
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,如下图所示
9820460800a816eda6.png

接下来新建工程,工程目录存放M0A23的Lib文件
4321260800b04b783d.png
然后按照RTE的创建工程方式,添加启动文件与RTT RTOS文件到工程
7253860800b65be447.png
在工程创建目录,添加USER文件和Lib文件
5416660800b9069456.png
最后对工程配置进行修改,因为要用stdio.h
所以在Target选项卡勾选Use MicroLIB,同时选中编译器为V5版本
2407660800c006b616.png
在C/C++选项卡设置头文件路径
  1. .\Library\Device\Nuvoton\M0A21\Include;.\Library\StdDriver\inc;.\Library\CMSIS\Include
复制代码
在Linker选项卡设置Misc controls
  1. --map --first='startup_M0A21.o(RESET)' --datacompressor=off --info=inline --entry Reset_Handler
复制代码
在调试器设置对应的调试器,并选择为自动侦测模式
447160800c771e9be.png

配置烧录功能如下
8387960800ca378df2.png

基本配置到此完成,接下来进行RTT移植修改。
在board.c文件中进行时钟与串口的初始化配置,同时别忘了将头文件NUMicro.h包含进来。
可以直接将M0A23的BSP中的模板配置复制来用即可
  1. void SYS_Init(void)
  2. {
  3.     /* Unlock protected registers */
  4.     SYS_UnlockReg();

  5.     /* Enable HIRC clock (Internal RC 48MHz) */
  6.     CLK_EnableXtalRC(CLK_PWRCTL_HIRCEN_Msk);

  7.     /* Wait for HIRC clock ready */
  8.     CLK_WaitClockReady(CLK_STATUS_HIRCSTB_Msk);

  9.     /* Select HCLK clock source as HIRC and HCLK source divider as 1 */
  10.     CLK_SetHCLK(CLK_CLKSEL0_HCLKSEL_HIRC, CLK_CLKDIV0_HCLK(1));

  11.     /* Enable UART0 clock */
  12.     CLK_EnableModuleClock(UART0_MODULE);

  13.     /* Switch UART0 clock source to HIRC */
  14.     CLK_SetModuleClock(UART0_MODULE, CLK_CLKSEL1_UART0SEL_HIRC, CLK_CLKDIV0_UART0(1));

  15.     /* Update System Core Clock */
  16.     SystemCoreClockUpdate();

  17.     /* Set PB multi-function pins for UART0 RXD=PB.6 and TXD=PB.4 */
  18.     SYS->GPB_MFP1 = (SYS->GPB_MFP1 & ~(SYS_GPB_MFP1_PB4MFP_Msk | SYS_GPB_MFP1_PB6MFP_Msk)) |        \
  19.                     (SYS_GPB_MFP1_PB4MFP_UART0_TXD | SYS_GPB_MFP1_PB6MFP_UART0_RXD);

  20.     /* Lock protected registers */
  21.     SYS_LockReg();
  22.                
  23.                 UART_Open(UART0, 115200);
  24. }
复制代码
然后在rt_hw_board_init()
中引用该初始化并删除该函数中的时钟更新函数,因为我们已经在上面的函数完成了该操作。
接下来在该文件末尾添加
  1. void rt_hw_console_output(const char *str)
  2. {
  3.         printf("%s",str);
  4. }

  5. char rt_hw_console_getchar(void)
  6. {
  7. return getchar();
  8. }
复制代码
以实现串口打印与交互输入。
然后我们发现,工程的启动文件目录有重定向文件,我们用库函数中的进行替换该文件。
然后找到
__asm int32_t HardFault_Handler(void)
该函数,并注释掉该函数,因为RTT中已经实现了该函数,不然就重复定义了。另外就是通过rtconfig.h启用某些功能了,支持配置向导模式
72538608011cee6225.png
接下来保存工程,在main.c添加个简单的代码
  1. #include <stdio.h>
  2. #include "NuMicro.h"
  3. #include <rtthread.h>

  4. int main(void)
  5. {
  6.         return 0;
  7. }
复制代码


编译,一次通过。
  1. ".\Objects\demo.axf" - 0 Error(s), 0 Warning(s).
复制代码
下载测试

9325860800e94db5b5.png
这里提供工程供大家测试学习
M0A23_RTT.rar (479.56 KB, 下载次数: 17)

使用特权

评论回复

打赏榜单

21小跑堂 打赏了 10.00 元 2021-04-23
理由:恭喜通过原创文章审核!请多多加油哦!

gaoyang9992006|  楼主 | 2021-4-25 09:18 | 显示全部楼层
对于我这老手来说十分钟搞定,新手如果没经验要摸索很长时间的,也希望我这帖可以帮助更多人学会移植RT—Thread

使用特权

评论回复
caizhiwei| | 2021-4-27 15:10 | 显示全部楼层
春哥 call

使用特权

评论回复
gaoyang9992006|  楼主 | 2021-4-27 20:09 | 显示全部楼层

非常感谢支持。这个芯片目前最多只有10个用户拿到,今天下午刚开了线上发布会。

使用特权

评论回复
東南博士| | 2021-5-4 07:52 | 显示全部楼层

使用特权

评论回复
東南博士| | 2021-5-4 07:53 | 显示全部楼层
能买到芯片就是最好的!

使用特权

评论回复
两只袜子| | 2021-5-4 15:08 | 显示全部楼层
老司机果然还是厉害些

使用特权

评论回复
gaoyang9992006|  楼主 | 2021-5-5 07:07 | 显示全部楼层
東南博士 发表于 2021-5-4 07:53
能买到芯片就是最好的!

是的,目前就是这个情况,能买到芯片就是最好的了。

使用特权

评论回复
gaoyang9992006|  楼主 | 2021-5-5 07:08 | 显示全部楼层
两只袜子 发表于 2021-5-4 15:08
老司机果然还是厉害些

感谢认可。在公众号转载后被一群键盘侠喷死了,他们看完觉得好简单,没必要发到公众号。。。
我把复杂的问题给简单化了,还错了。

使用特权

评论回复
zhuomuniao110| | 2021-5-6 20:58 | 显示全部楼层
看完此帖,发现移植竟然这么容易。

使用特权

评论回复
TT1000| | 2021-5-12 09:01 | 显示全部楼层
感谢楼主分享

使用特权

评论回复
wahahaheihei| | 2021-5-25 08:55 | 显示全部楼层
感谢分享,学会了,这个方法真是好

使用特权

评论回复
扫描二维码,随时随地手机跟帖
返回列表 发新帖 本帖赏金 10.00元(功能说明)我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

我要发帖 我要提问 投诉建议 申请版主

快速回复

您需要登录后才可以回帖
登录 | 注册
高级模式

本版热帖

本版活跃用户

优质原创写原创,赢大奖

编辑推荐

  • 1 wolfe_yu 得到打赏 ¥180.00
  • 2 最美葫芦娃 得到打赏 ¥155.00
  • 3 hk386 得到打赏 ¥75.00
  • 4 火星国务卿 得到打赏 ¥63.00
  • 5 两只袜子 得到打赏 ¥56.00
  • 6 laocuo1142 得到打赏 ¥50.00
  • 7 linghz 得到打赏 ¥45.00
  • 8 gaon2 得到打赏 ¥45.00
  • 9 ezcui 得到打赏 ¥45.00
  • 10 jlc317 得到打赏 ¥40.00
在线客服 快速回复 返回顶部 返回列表