瑞萨单片机论坛
直播中

qiao

未满1年用户 11经验值
擅长:嵌入式技术 控制/MCU
私信 关注
[经验]

【瑞萨RA6E2】 配置Keil开发环境+使用按键控制LED+串口/调试器烧录程序

一、 概述

本报告旨在记录基于瑞萨RA6E2 MCU评估板的初步开发体验。主要内容包括:

  1. 软件开发环境的搭建与配置。
  2. 实现一个基础的GPIO控制功能:通过用户按键控制LED灯的亮灭。
  3. 实践两种程序烧录方法:串口烧录和DAP-Link调试器烧录。
    通过本次实践,成功掌握了RA家族MCU的基本开发流程。

二、 开发环境搭建

1. 所需软件与工具

  • IDE: Keil MDK
  • 瑞萨配套工具:
    • RASC: e2 studio
    • RFP: Renesas Flash Programmer
  • 编译器: ARM Compiler (通常随Keil MDK安装)
  • 调试器: 板载 DAP-Link 调试器

2. 安装步骤

  • Step 1: 安装Keil MDK,并确保已添加对应的ARM Cortex-M33设备支持包。

  • Step 2: 安装e2 studio 下载地址:https://github.com/renesas/fsp/releases E2 Studio是开发的核心,包含了HAL库、RTOS、中间件、图形化配置等。

  • 操作步骤:

  • 1.png

  • 2.png

  • 3.png

  • 4.png

    5.png
    e2 studio 安装完成!

  • Step 3(可选): 安装RFP,用于串口烧录程序。
    步骤:
    2-1.png

    2-2.png

    2-3.png

    2-4.png

    RFP 安装完成!


三、 实战一:使用按键控制LED

本实验目标是实现按下开发板上的用户按键(USER SW1),点亮用户LED(USER LED1),松开则熄灭。

1. 硬件电路分析

  • LED电路: 查阅原理图,得知LED1、LED2分别连接在 P207、P113 引脚上,高电平点亮。
  • 按键电路: 查阅原理图,得知 USER BUTTONS 连接在 P005 引脚上,按下时为低电平
    3-0.png

2. 使用e2 studio配置工程

  • 创建新工程: 打开Renesas RA Smart Configurator,选择“New Project"
    0-1.png
    自定义名字并选择存放位置,然后下一步。
    0-2.png
    选择芯片型号及IDE

    0-3.png

    一路下一步

0-4.png

选择最小版即可,然后下一步
0-5.png
先点击1处,再点击2处
0-6.png
打开Keil工程
0-7.png

3. 编写应用代码
在生成的工程骨架中,找到 hal_entry.c 文件,在 hal_entry() 函数中 /TODO: add your own code here/ 后添加主程序 编写主循环逻辑。0-8.png
完整程序:

#include "hal_data.h"

#if (1 == BSP_MULTICORE_PROJECT) && BSP_TZ_SECURE_BUILD
bsp_ipc_semaphore_handle_t g_core_start_semaphore =
{
    .semaphore_num = 0
};
#endif

 /* 使用宏定义封装GPIO读取操作,直接返回引脚电平
*/
#define READ_GPIO_PIN(pin) \
    ({ \
        bsp_io_level_t level; \
        R_IOPORT_PinRead(&g_ioport_ctrl, pin, &level); \
        level; \
    })

/* 
 * GPIO引脚写入宏定义
 * 封装GPIO写入操作,简化代码
 */
#define WRITE_GPIO_PIN(pin, level) \
    R_IOPORT_PinWrite(&g_ioport_ctrl, pin, level)

/**
 * [url=home.php?mod=space&uid=2666770]@Brief[/url] 按键处理函数
 * 
 * 检测GPIO引脚电平变化,实现按键消抖和LED状态切换
 * 功能说明:
 * 1. 检测P005引脚(按键)是否被按下(低电平)
 * 2. 进行10ms延时消抖,确认按键有效
 * 3. 切换P113和P207引脚(LED)的电平状态
 * 4. 等待按键释放,防止连续触发
 */
void keysProcess()
{
    // 检测P005引脚(按键)是否被按下(低电平)
    if(READ_GPIO_PIN(BSP_IO_PORT_00_PIN_05) == 0)
    {
        // 延时10ms进行按键消抖
        R_BSP_SoftwareDelay(10, BSP_DELAY_UNITS_MILLISECONDS);
        
        // 再次检测确认按键确实被按下(防抖确认)
        if(READ_GPIO_PIN(BSP_IO_PORT_00_PIN_05) == 0)
        {
            // 切换P113引脚(LED2)的电平状态
            // 如果当前是低电平就切换到高电平,反之亦然
            WRITE_GPIO_PIN(BSP_IO_PORT_01_PIN_13, 
                (READ_GPIO_PIN(BSP_IO_PORT_01_PIN_13) == BSP_IO_LEVEL_LOW) ? 
                BSP_IO_LEVEL_HIGH : BSP_IO_LEVEL_LOW);
            
            // 切换P207引脚(LED1)的电平状态与P113(LED2) 状态相反
            WRITE_GPIO_PIN(BSP_IO_PORT_02_PIN_07, 
                (READ_GPIO_PIN(BSP_IO_PORT_01_PIN_13) == BSP_IO_LEVEL_LOW) ? 
                BSP_IO_LEVEL_HIGH : BSP_IO_LEVEL_LOW);
            
            // 等待按键释放,防止连续触发
            while(READ_GPIO_PIN(BSP_IO_PORT_00_PIN_05) == 0);
        }
    }
}

/**
 * @brief 系统初始化函数
 * 
 * 初始化GPIO引脚配置和初始状态:
 * - P005: 按键引脚
 * - P113: LED1引脚
 * - P207: LED2引脚
 */
void Main_Init()
{
    // 配置P005引脚为输出模式
    R_IOPORT_PinCfg(&g_ioport_ctrl, BSP_IO_PORT_00_PIN_05, IOPORT_CFG_PORT_DIRECTION_OUTPUT);
    
    // 配置P113引脚(LED2)为输出模式
    R_IOPORT_PinCfg(&g_ioport_ctrl, BSP_IO_PORT_01_PIN_13, IOPORT_CFG_PORT_DIRECTION_OUTPUT);
    
    // 配置P207引脚(LED1)为输出模式
    R_IOPORT_PinCfg(&g_ioport_ctrl, BSP_IO_PORT_02_PIN_07, IOPORT_CFG_PORT_DIRECTION_OUTPUT);
    
    // 设置P005引脚初始状态为高电平
    WRITE_GPIO_PIN(BSP_IO_PORT_00_PIN_05, BSP_IO_LEVEL_HIGH);
    
    // 设置P113引脚(LED2)初始状态为低电平 熄灭LED
    WRITE_GPIO_PIN(BSP_IO_PORT_01_PIN_13, BSP_IO_LEVEL_LOW);
    
    // 设置P207引脚(LED1)初始状态为低电平 
    WRITE_GPIO_PIN(BSP_IO_PORT_02_PIN_08, BSP_IO_LEVEL_LOW);
}

/*******************************************************************************************************************//**
 * main() is generated by the RA Configuration editor and is used to generate threads if an RTOS is used.  This function
 * is called by main() when no RTOS is used.
 **********************************************************************************************************************/
void hal_entry(void)
{
    /* TODO: add your own code here */
	
		// 系统初始化
    Main_Init();
    
    // 主循环
    while(1) 
    {
        // 持续检测并处理按键事件
        keysProcess();
    }
    /* Wake up 2nd core if this is first core and we are inside a multicore project. */
#if (0 == _RA_CORE) && (1 == BSP_MULTICORE_PROJECT) && !BSP_TZ_NONSECURE_BUILD

#if BSP_TZ_SECURE_BUILD
    /* Take semaphore so 2nd core can clear it */
    R_BSP_IpcSemaphoreTake(&g_core_start_semaphore);
#endif

    R_BSP_SecondaryCoreStart();

#if BSP_TZ_SECURE_BUILD
    /* Wait for 2nd core to start and clear semaphore */
    while(FSP_ERR_IN_USE == R_BSP_IpcSemaphoreTake(&g_core_start_semaphore))
    {
        ;
    }
#endif
#endif

#if (1 == _RA_CORE) && (1 == BSP_MULTICORE_PROJECT) && BSP_TZ_SECURE_BUILD
    /* Signal to 1st core that 2nd core has started */
    R_BSP_IpcSemaphoreGive(&g_core_start_semaphore);
#endif


#if BSP_TZ_SECURE_BUILD
    /* Enter non-secure code */
    R_BSP_NonSecureEnter();
#endif
}

#if BSP_TZ_SECURE_BUILD

FSP_CPP_HEADER
BSP_CMSE_NONSECURE_ENTRY void template_nonsecure_callable ();

/* Trustzone Secure Projects require at least one nonsecure callable function in order to build (Remove this if it is not required to build). */
BSP_CMSE_NONSECURE_ENTRY void template_nonsecure_callable ()
{

}
FSP_CPP_FOOTER

#endif

按下F7编译,如果0错误 0警告 就可以准备烧录了

四、 烧录方式一:使用DAP-Link调试器烧录 (Keil)

DAP-Link方式支持烧录和在线调试,是开发阶段的主要方式。

1. 硬件连接

  • 将调试器按针脚依次连接到开发板的 “ DEBUG”
  • 微信图片_20251126194204.jpg
  • 微信图片_20251126194145.jpg

2. Keil MDK配置与操作

  • Step 1: 在Keil中打开生成的工程。

  • Step 2: 点击魔术棒按钮进入 Options for Target

    • Debug 标签页:
      • 选择 CMSIS-DAP Debugger
      • 点击 Settings
      • 屏幕截图(22).png
  • Step 3: 编译工程后,点击 Load (Ctrl+F5) 按钮即可完成烧录,烧录完成后复位即可运行。

四、 烧录方式一:使用串口烧录 (RFP)

串口烧录是一种简单、低成本的程序写入方式,无需调试器。

1. 硬件连接

  • 使用USB线连接开发板,模式为SCI/USB BOOT
  • 然后按下复位,使MCU处于复位状态微信图片_20251126202531.jpg

2. 软件配置与操作

  • Step 1: 打开Renesas Flash Programmer (RFP)。
  • Step 2: 创建新配置。
    • MCU Family: RA
    • MCU Group: RA6E2
    • Communication Interface: UART
    • Port: 选择PC识别到的COM口(如COM3)
    • Baud Rate: 115200
    • 0-0-1.png
  • Step 3:Programming标签页,选择要烧录的 .hex.mot 文件(Keil编译后在Objects文件夹内生成)。
  • 0031.png
  • Step 4: 确保开发板处于 复位状态 (按下RESET按钮),点击 “Start” 开始烧录。烧录成功后会有提示,取下跳线帽,按下复位,程序即可运行。
    w.png

    六、 实验结果与总结

1. 实验成果

成功实现了通过按键控制两个LED灯的状态切换:

  • 每次按下按键,两个LED状态交替变化
  • 实现了完整的按键消抖处理,避免误触发
  • 掌握了两种不同的程序烧录方法

2. 开发体会
通过本次RA6E2评估板的实践开发,深刻体验到瑞萨RA系列MCU的强大功能和现代化开发流程:

  • 工具链完善: e2 studio集成了图形化配置工具,大大简化了外设初始化工作
  • 开发效率高: FSP软件包提供了丰富的驱动库,加速了开发进程
  • 调试便捷: 支持DAP-Link等.众多调试器在线调试,极大提升了排查问题的效率
  • 文档齐全: 瑞萨提供了完善的技术文档和示例代码,降低了学习门槛

3. 资源汇总
为方便其他开发者快速上手,已将本次实践涉及的所有资源整理完毕:

【完整资源包】
链接: https://pan.baidu.com/s/1MaNcEBLmRdqeSp9Qan7Tmg?pwd=etnb
提取码: etnb

资源包包含:

  • 完整的Keil工程源码
  • 开发环境安装包
  • 原理图和数据手册
  • 相关工具软件

4. 后续计划
基于本次基础实践的成功经验,后续将深入探索RA6E2的更多高级功能:

  • ADC采集与传感器应用
  • 通信接口(UART、I2C、SPI)应用等.

瑞萨RA6E2以其强大的性能和丰富的外设资源,为物联网、工业控制等领域的应用开发提供了优秀的硬件平台。本次实践为后续更复杂的项目开发奠定了坚实的基础。

WeChat_20251126204630

更多回帖

发帖
×
20
完善资料,
赚取积分