【国产MCU移植】HC32F460基于Keil MDK 移植 RT-Thread Nano

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

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

本文由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 内核加入到工程中了。

QQ截图20210812114523.png

适配 RT-Thread Nano

中断与异常处理

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

微信截图_20210812134247.png

系统时钟配置

需要在 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  = ClkSyscl
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值