本报告旨在记录基于瑞萨RA6E2 MCU评估板的初步开发体验。主要内容包括:
1. 所需软件与工具
2. 安装步骤
Step 1: 安装Keil MDK,并确保已添加对应的ARM Cortex-M33设备支持包。
Step 2: 安装e2 studio 下载地址:https://github.com/renesas/fsp/releases E2 Studio是开发的核心,包含了HAL库、RTOS、中间件、图形化配置等。
操作步骤:





e2 studio 安装完成!
Step 3(可选): 安装RFP,用于串口烧录程序。
步骤:



RFP 安装完成!
本实验目标是实现按下开发板上的用户按键(USER SW1),点亮用户LED(USER LED1),松开则熄灭。
1. 硬件电路分析

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

一路下一步

选择最小版即可,然后下一步
先点击1处,再点击2处
打开Keil工程
3. 编写应用代码
在生成的工程骨架中,找到 hal_entry.c 文件,在 hal_entry() 函数中 /TODO: add your own code here/ 后添加主程序 编写主循环逻辑。
完整程序:
#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方式支持烧录和在线调试,是开发阶段的主要方式。
1. 硬件连接


2. Keil MDK配置与操作
Step 1: 在Keil中打开生成的工程。
Step 2: 点击魔术棒按钮进入 Options for Target。
Debug 标签页:
CMSIS-DAP Debugger 。
Step 3: 编译工程后,点击 Load (Ctrl+F5) 按钮即可完成烧录,烧录完成后复位即可运行。
串口烧录是一种简单、低成本的程序写入方式,无需调试器。
1. 硬件连接

2. 软件配置与操作
MCU Family: RAMCU Group: RA6E2Communication Interface: UARTPort: 选择PC识别到的COM口(如COM3)Baud Rate: 115200
Programming标签页,选择要烧录的 .hex 或 .mot 文件(Keil编译后在Objects文件夹内生成)。

1. 实验成果
成功实现了通过按键控制两个LED灯的状态切换:
2. 开发体会
通过本次RA6E2评估板的实践开发,深刻体验到瑞萨RA系列MCU的强大功能和现代化开发流程:
3. 资源汇总
为方便其他开发者快速上手,已将本次实践涉及的所有资源整理完毕:
【完整资源包】
链接: https://pan.baidu.com/s/1MaNcEBLmRdqeSp9Qan7Tmg?pwd=etnb
提取码: etnb
资源包包含:
4. 后续计划
基于本次基础实践的成功经验,后续将深入探索RA6E2的更多高级功能:
瑞萨RA6E2以其强大的性能和丰富的外设资源,为物联网、工业控制等领域的应用开发提供了优秀的硬件平台。本次实践为后续更复杂的项目开发奠定了坚实的基础。
更多回帖