本文由RT-Thread论坛用户@想当诸侯的小蚂蚁原创发布:https://club.rt-thread.org/ask/article/2966.html
软件
根据厂家demo重新新建工程,工程中包含了gpio、usart。
硬件:
gpio
/* GREEN_LED Port/Pin definition */
#define GREEN_LED_PORT (PortE)
#define GREEN_LED_PIN (Pin00)
/* RED_LED Port/Pin definition */
#define RED_LED_PORT (PortE)
#define RED_LED_PIN (Pin01)
usart4
/* USART RX Port/Pin definition */
#define USART_RX_PORT (PortC)
#define USART_RX_PIN (Pin07)
#define USART_RX_FUNC (Func_Usart4_Rx)
/* USART TX Port/Pin definition */
#define USART_TX_PORT (PortC)
#define USART_TX_PIN (Pin06)
#define USART_TX_FUNC (Func_Usart4_Tx)
添加 RT-Thread Nano 到工程
在 Manage Rum-Time Environment 内打开 RTOS 栏,勾选 kernal,点击 OK 后就将 RT-Thread 内核加入到工程中了。

适配 RT-Thread Nano
中断与异常处理
需要删除工程里中断服务例程文件 hc32f460_interrupts.c中异常处理函数 HardFault_Handler() 和悬挂处理函数 PendSV_Handler(),这两个函数已由 RT-Thread 实现,避免在编译时产生重复定义。

系统时钟配置
需要在 board.c 中实现 系统时钟配置(为 MCU、外设提供工作时钟)与 os tick 的配置 (为操作系统提供心跳 / 节拍)。
void SysTick_Handler(void)
{
rt_os_tick_callback();
}
void rt_hw_board_init(void)函数中调用系统时钟
SysClkConfig(); //系统时钟初始化
SysTick_Init(RT_TICK_PER_SECOND); //OS Tick 频率配置
void SysClkConfig(void)所在文件system_hc32f460.c
void SysClkConfig(void)
{
stc_clk_sysclk_cfg_t stcSysClkCfg; //系统时钟
stc_clk_xtal_cfg_t stcXtalCfg; //晶振配置
stc_clk_mpll_cfg_t stcMpllCfg; //PLL
stc_sram_config_t stcSramConfig;
MEM_ZERO_STRUCT(stcSysClkCfg);
MEM_ZERO_STRUCT(stcXtalCfg);
MEM_ZERO_STRUCT(stcMpllCfg);
/* Set bus clk div. 分频 */
stcSysClkCfg.enHclkDiv

本文详细介绍了如何在国产MCU HC32F460上移植并适配RT-Thread Nano操作系统,包括软件和硬件准备、添加RTOS到工程、中断异常处理、系统时钟配置、内存堆初始化以及编写第一个应用,如使用rt_thread_mdelay()和建立线程。此外,还展示了如何在Nano上添加UART控制台和FinSH组件。
最低0.47元/天 解锁文章
9493

被折叠的 条评论
为什么被折叠?



