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

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,如下图所示

.\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

在调试器设置对应的调试器,并选择为自动侦测模式

在调试器设置对应的调试器,并选择为自动侦测模式

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启用某些功能了,支持配置向导模式

#include <stdio.h>

#include "NuMicro.h"

#include <rtthread.h>



int main(void)

{

        return 0;

}

编译,一次通过。

.\Objects\demo.axf" - 0 Error(s), 0 Warning(s).

下载测试

作者:gaoyang9992006
链接:https://bbs.21ic.com/icview-3127388-1-1.html
来源:21ic.com
此文章已获得原创/原创奖标签,著作权归21ic所有,任何人未经允许禁止转载。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值