发新帖本帖赏金 10.00元(功能说明)我要提问
12下一页
返回列表
打印
[牛人杂谈]

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

[复制链接]
7615|22
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
本帖最后由 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,如下图所示


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

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

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

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

在C/C++选项卡设置头文件路径
.\Library\Device\Nuvoton\M0A21\Include;.\Library\StdDriver\inc;.\Library\CMSIS\Include
在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;
}


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


这里提供工程供大家测试学习
M0A23_RTT.rar (479.56 KB)








使用特权

评论回复

打赏榜单

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个用户拿到,今天下午刚开了线上发布会。

使用特权

评论回复
5
東南博士| | 2021-5-4 07:52 | 只看该作者

使用特权

评论回复
6
東南博士| | 2021-5-4 07:53 | 只看该作者
能买到芯片就是最好的!

使用特权

评论回复
7
两只袜子| | 2021-5-4 15:08 | 只看该作者
老司机果然还是厉害些

使用特权

评论回复
8
gaoyang9992006|  楼主 | 2021-5-5 07:07 | 只看该作者
東南博士 发表于 2021-5-4 07:53
能买到芯片就是最好的!

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

使用特权

评论回复
9
gaoyang9992006|  楼主 | 2021-5-5 07:08 | 只看该作者
两只袜子 发表于 2021-5-4 15:08
老司机果然还是厉害些

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

使用特权

评论回复
10
zhuomuniao110| | 2021-5-6 20:58 | 只看该作者
看完此帖,发现移植竟然这么容易。

使用特权

评论回复
11
TT1000| | 2021-5-12 09:01 | 只看该作者
感谢楼主分享

使用特权

评论回复
12
wahahaheihei| | 2021-5-25 08:55 | 只看该作者
感谢分享,学会了,这个方法真是好

使用特权

评论回复
13
kiwis66| | 2021-7-20 08:55 | 只看该作者
挺好,有机会试试,一直用uc,对这个还不太熟

使用特权

评论回复
14
littlelida| | 2021-7-20 11:47 | 只看该作者
https://bbs.21ic.com/icview-3136048-1-1.html
看日期,楼主你的帖子被盗了

使用特权

评论回复
15
gaoyang9992006|  楼主 | 2021-7-20 14:31 | 只看该作者
littlelida 发表于 2021-7-20 11:47
https://bbs.21ic.com/icview-3136048-1-1.html
看日期,楼主你的帖子被盗了

多谢提醒,还真是被盗了。我去给他拉黑。

使用特权

评论回复
16
huahuagg| | 2021-7-25 18:50 | 只看该作者
这才是大佬啊。

使用特权

评论回复
17
huahuagg| | 2021-7-25 18:55 | 只看该作者
牛X,看明白了。

使用特权

评论回复
18
734774645| | 2021-7-25 21:16 | 只看该作者
移植这么容易,太棒了,有信心了。

使用特权

评论回复
19
落叶行健ywm| | 2021-8-16 08:24 | 只看该作者
支持,最近画了M0A23的板子,可以顺便学习下!

使用特权

评论回复
20
gaoyang9992006|  楼主 | 2021-8-16 11:14 | 只看该作者
落叶行健ywm 发表于 2021-8-16 08:24
支持,最近画了M0A23的板子,可以顺便学习下!

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

使用特权

评论回复
评论
落叶行健ywm 2021-8-17 08:25 回复TA
就是尝试着玩玩画的。10块钱一个芯片,也贵的 
发新帖 本帖赏金 10.00元(功能说明)我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

认证:西安公路研究院南京院
简介:主要工作从事监控网络与通信网络设计,以及从事基于嵌入式的通信与控制设备研发。擅长单片机嵌入式系统物联网设备开发,音频功放电路开发。

1893

主题

15621

帖子

197

粉丝