这些小活动你都参加了吗?快来围观一下吧!>>
电子产品世界 » 论坛首页 » 嵌入式开发 » MCU » 瑞萨RA4E2串口初始化

共2条 1/1 1 跳转至

瑞萨RA4E2串口初始化

院士
2026-05-16 23:36:57     打赏

瑞萨 RA4E2系列MCU为基于 ARM Cortex-M4,通常使用瑞萨的 ‌FSP (Flexible Software Package)‌ 进行开发。串口初始化可以通过图形化配置工具(e2 studio / FSP SmartConfigurator)自动生成代码,也可以手动编写底层驱动代码——好久没有使用寄存器编写了。

在 RA4E2 中,串口是由 SCI (Serial Communication Interface) 模块实现,这点与STM32或国内芯片大不相同。在使用 FSP 时,需要先在 configuration.xml 中配置GPIO与UART stack,然后使用生成的句柄进行初始化和操作。
FSP 的 UART 驱动通常采用异步中断方式,因此需要定义一个回调函数来处理发送完成或接收数据事件。

volatile bool uart_tx_complete_flag = false;

/**
 * @brief UART 回调函数
 * @param p_args 回调参数指针
 */
void user_uart_callback(uart_callback_args_t * p_args)
{
    switch (p_args->event)
    {
        case UART_EVENT_TX_COMPLETE:
            uart_tx_complete_flag = true;
            break;
        
        case UART_EVENT_RX_CHAR:

            break;
            
        default:
            break;
    }
}

在 hal_entry() 中调用初始化并测试。

void hal_entry(void)
{
    fsp_err_t err;

    err = R_SCI_UART_Open(&g_uart9_ctrl, &g_uart9_cfg);
    
    if (FSP_SUCCESS != err)
    {

        while(1); 
    }

    const char *test_msg = "Hello RA4E2 UART\r\n";
    uint8_t *p_data = (uint8_t *)test_msg;
    uint32_t data_len = strlen(test_msg);

    /* 非阻塞发送 */
    err = R_SCI_UART_Write(&g_uart9_ctrl, p_data, data_len);
    
    if (FSP_SUCCESS == err)
    {
        while (!uart_tx_complete_flag)
        {
            /* wait for byte */
            ;
        }
        uart_tx_complete_flag = false; // 清除标志位
    }

    /* 主循环 */
    while (1)
    {

        R_BSP_SoftwareDelay(1000, BSP_DELAY_UNITS_MILLISECONDS);
    }
}

使用图形化配置工具与瑞萨提供的底层驱动库函数来实现项目吧!寄存器配置这种古老的实现方式还是让其成为历史吧!




关键词: RA4E2     串口     瑞萨    

院士
2026-05-17 11:46:55     打赏
2楼

谢谢分享。


共2条 1/1 1 跳转至

回复

匿名不能发帖!请先 [ 登陆 注册 ]