12下一页
返回列表 发新帖我要提问本帖赏金: 10.00元(功能说明)

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

[复制链接]
9881|22
 楼主| 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, 下载次数: 47)








打赏榜单

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 | 显示全部楼层
感谢分享,学会了,这个方法真是好
kiwis66 发表于 2021-7-20 08:55 | 显示全部楼层
挺好,有机会试试,一直用uc,对这个还不太熟
littlelida 发表于 2021-7-20 11:47 | 显示全部楼层
https://bbs.21ic.com/icview-3136048-1-1.html
看日期,楼主你的帖子被盗了
 楼主| gaoyang9992006 发表于 2021-7-20 14:31 | 显示全部楼层
littlelida 发表于 2021-7-20 11:47
https://bbs.21ic.com/icview-3136048-1-1.html
看日期,楼主你的帖子被盗了

多谢提醒,还真是被盗了。我去给他拉黑。
huahuagg 发表于 2021-7-25 18:50 | 显示全部楼层
这才是大佬啊。
huahuagg 发表于 2021-7-25 18:55 | 显示全部楼层
牛X,看明白了。
734774645 发表于 2021-7-25 21:16 | 显示全部楼层
移植这么容易,太棒了,有信心了。
落叶行健ywm 发表于 2021-8-16 08:24 | 显示全部楼层
支持,最近画了M0A23的板子,可以顺便学习下!
 楼主| gaoyang9992006 发表于 2021-8-16 11:14 | 显示全部楼层
落叶行健ywm 发表于 2021-8-16 08:24
支持,最近画了M0A23的板子,可以顺便学习下!

真是快啊,这么快就用上新品了。

评论

就是尝试着玩玩画的。10块钱一个芯片,也贵的  发表于 2021-8-17 08:25
您需要登录后才可以回帖 登录 | 注册

本版积分规则

个人签名:如果你觉得我的分享或者答复还可以,请给我点赞,谢谢。

2052

主题

16403

帖子

222

粉丝
快速回复 在线客服 返回列表 返回顶部