首页 » 互联网 » 极速移植RT-Thread nano到新唐ARM Cortex-M23系列_函数_串口

极速移植RT-Thread nano到新唐ARM Cortex-M23系列_函数_串口

雨夜梧桐 2025-01-08 02:25:57 0

扫一扫用手机浏览

文章目录 [+]

新建文件夹用于存储接下来的工程文件。

本次演示采取的新唐M263A系列开拓板

极速移植RT-Thread nano到新唐ARM Cortex-M23系列_函数_串口 极速移植RT-Thread nano到新唐ARM Cortex-M23系列_函数_串口 互联网

新建Keil工程,找到新唐目录,选择M23系列中你所利用的哪款单片机,本次选择M263KIAAE

极速移植RT-Thread nano到新唐ARM Cortex-M23系列_函数_串口 极速移植RT-Thread nano到新唐ARM Cortex-M23系列_函数_串口 互联网
(图片来自网络侵删)

可以看到只有AC6可以选择,这解释这个系列是很新的,厂家按照最新的AC6标准做的干系支持文件。

为防止过多的警告,在警告选项里选择AC5-Like

选择新唐的调试器,并设置芯片型号为你当前所用的型号。

接下来在RTE配置里选择以下基本项

在新建的工程中添加User和Lib目录,用于存放你自己编写的代码和利用到的外设标准库,一样平常应至少原则如下图中4个基本内容。

接下来配置RTOS的配置文件

在board.c和finsh_port.c中引入新唐头文件

#include <NuMicro.h>

然后在board.c中按照预编译缺点提示,完成每一项的内容,一共4项

1,找到M263的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)); CLK_EnableSysTick(CLK_CLKSEL0_STCLKSEL_HCLK , SystemCoreClock / RT_TICK_PER_SECOND); / 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.12 and TXD=PB.13 / SYS->GPB_MFPH = (SYS->GPB_MFPH & ~(SYS_GPB_MFPH_PB12MFP_Msk | SYS_GPB_MFPH_PB13MFP_Msk)) | \ (SYS_GPB_MFPH_PB12MFP_UART0_RXD | SYS_GPB_MFPH_PB13MFP_UART0_TXD); / Lock protected registers / SYS_LockReg();}

下面这句是我们自己新增的

CLK_EnableSysTick(CLK_CLKSEL0_STCLKSEL_HCLK , SystemCoreClock / RT_TICK_PER_SECOND);

然后引用到该文件中rt_hw_board_init()函数中

并屏蔽掉该函数中的第一条#error TODO 1……

并在rt_os_tick_callback()函数后完善滴答定时器中断入口函数

void SysTick_Handler(void){ rt_os_tick_callback();}

找到第二条#error TODO2……

该函数为uart_init函数,用于串口的初始化,这里只是用串口打开工具即可,我们开拓板上

是用的串口0连接电脑的,以是末了该当如下所示

static int uart_init(void){//#error "TODO 2: Enable the hardware uart and config baudrate." UART_Open(UART0,115200); return 0;}

找到末了的第三条#error TODO3……

修正如下,直接调用BSP标准库的串口输出函数,一条搞定

void rt_hw_console_output(const char str){//#error "TODO 3: Output the string 'str' through the uart." UART_Write(UART0,(uint8_t )str,rt_strlen(str));}

第四,找到finsh_port.c中的#error TODO4……

将重定向中用于输出的语句直接复制过来

RT_WEAK char rt_hw_console_getchar(void){ / Note: the initial value of ch must < 0 / int ch = -1;//#error "TODO 4: Read a char from the uart and assign it to 'ch'." if((DEBUG_PORT->FIFOSTS & UART_FIFOSTS_RXEMPTY_Msk) == 0U) { return ((char)DEBUG_PORT->DAT); } return ch;}

DEBUG_PORT可以换成UART0,或者不换也行,由于

在system_M261.h头文件中定义了该宏为替代UART0。

末了完成各大略的main.c文件中的main函数,利用RTT供应的打印与延时函数测试移植是否成功。

#include<rtthread.h>#include<NuMicro.h>int main(void){ GPIO_SetMode(PB,BIT10,GPIO_MODE_OUTPUT); rt_kprintf("Hello,M263!\n"); while(1) { rt_thread_mdelay(500); PB10 ^=1; }}

末了一步,保存,编译

打开串口助手后,然后点下载,不雅观察串口助手打印的

搞定,同时开拓板上的LED开始闪烁,解释延时函数和串口打印都移植成功,系统已经掌握滴答定时器也正常事情。

把稳:这里我们不用去重定向文件屏蔽硬件缺点中断,由于重定向文件中用了新的函数名字,跟RTOS用的不重合,不冲突。

以是比M0和M4系列的移植还要大略。

原标题:极速移植RT-Thread nano到新唐ARM Cortex-M23系列原作者:gaoyang9992006本文为21ic有奖征文作品,详情请见21ic论坛活动专区:第二届万元红包——蓝V达人有奖征文活动,如果您也有兴趣参与征文,欢迎进入论坛参与活动~

标签:

相关文章

9017R--座充充电治理 IC_电流_电压

9017R.是恒流/恒压座充充电器芯片,紧张运用于单节锂电池充电。无需外接检测电阻,其内部为MOSFET构造,因此无需外接反向二极...

互联网 2025-01-11 阅读0 评论0

珠海医用TFT液晶屏若何选型_显示屏_长处

1、数码管LED显示屏:只能显示数字,不能显示波形信息,功能大略,用于早期的单参数监护仪。2、CRT显示器:这是一种很普遍的显示器...

互联网 2025-01-11 阅读0 评论0