本帖最后由 一只小跳帽 于 2024-12-8 21:13 编辑
瑞萨MCU 的安装环境为官方的 e2 studio 搭建涉及多个步骤和组件,以下是一个详细的分享:
e2 studio (简称为 e2 或 e2s)是瑞萨电子的一款包含代码开发、构建和调试的开发工具。 e2 studio 基于开源Eclipse IDE和与之相关的C/C++开发工具(CDT)。 e2 studio 托管了瑞萨的FSP灵活配置软件包,这是一个用于支持瑞萨MCU开发的固件库。 通过使用FSP库,我们可以轻松配置和管理瑞萨MCU,从而轻松实现复杂的应用程序。
一、准备工作
- 下载必要的软件包:
二、安装e2 studio
- 安装e2 studio
- 解压缩下载的安装包。
- 双击运行安装程序,等待安装程序加载完毕。
- 选择安装路径(如有需要),并勾选同意许可协议。
- 选择在开始菜单创建快捷方式,然后点击“Install”开始安装。
- 安装完成后,在开始菜单或桌面上找到e2 studio 的快捷方式。
-
三、安装和配置其他开发工具
- 安装FSP(Flexible Software Package):
- FSP是瑞萨提供的一套灵活的软件开发包,它包含了各种外设驱动和中间件。
- 从瑞萨官方网站下载FSP安装包,并按照提示完成安装过程。
- 在你的开发环境中配置FSP,以便使用其中的外设驱动和中间件。
五、创建和编译项目
- 创建新项目:
- 在你的IDE(如MDK、Keil等)中,创建一个新的瑞萨MCU项目。
-
- 指定项目名称、开发板型号、芯片型号和工具链等参数。这里可以选择版本 开发板的型号 和使用的工具链 还有调试方式 为板载的jlink
-
- 配置项目:
- 根据你的需求,配置项目的时钟、引脚分配、外设驱动等参数。
- 使用FSP配置工具或RASC来简化配置过程。
-
- 双击 configuration.xml 即可进行图形化的配置
-
这里的 clocks 可以配置时钟 pins 可以配置引脚 等功能
- 编译和调试:
- 编译你的项目,确保没有错误。
-
使用 上方的锤子进行编译 使用虫子按钮进行debug和download
- 使用IDE提供的调试工具进行调试,查看寄存器和外设的状态。
六、烧录程序到开发板
- 连接开发板:
- 使用USB线或其他连接方式将你的开发板连接到计算机上。
- 烧录程序:
- 在IDE中选择适当的烧录工具(如J-Link、dap-link等)。
- 配置烧录参数,如烧录速度、烧录地址等。
- 开始烧录程序,并等待烧录完成。
- 验证程序:
- 烧录完成后,断开开发板与计算机的连接。
- 给开发板上电,观察LED指示灯或其他外设的状态,以验证程序是否正确运行。
通过以上步骤,可以成功地搭建瑞萨MCU的安装环境,并开始进行开发工作。请注意,不同型号的瑞萨MCU和开发板可能具有不同的配置要求,因此在实际操作中需要根据具体情况进行调整。
下面完成入门的第二个任务 Blink
一、准备工作
- 硬件准备:
- 一块瑞萨MCU开发板(EK-RA6M5)。
- 一根USB连接线(用于连接开发板和计算机)
二、新建工程
选择Rensesas RA 进行新建
输入创建的工程名字 这里选择输入Blink
这里选择对应的开发板就好了
然后一直下一步就好啦
三、编写代码
-
使用Smart Configurator配置引脚:
- 打开Smart Configurator,创建一个新的工程。
- 选择你的MCU型号和开发板。
- 在引脚配置中,找到与LED相连的引脚,并将其配置为输出模式。
- 这里我查找原理图查看我们的LED灯连接到008 007 006 三个引脚
-
按照下方的图进行配置 为输出 推挽 进行生成代码
- 编写LED闪烁逻辑:
- 这里我们需要在hal_entry.c 文件中写自己的逻辑但是本质上还是在main函数中写的
-
- 在对应的函数中写主要逻辑
-
- 下面就是打开对应功能 并且使用官方的延迟函数进行延时 同时在延时的前后使用官方对端口进行打开和关闭对应的代码如下
-
void hal_entry(void)
{
/* TODO: add your own code here */
#if BSP_TZ_SECURE_BUILD
/* Enter non-secure code */
R_BSP_NonSecureEnter();
#endif
//打开对应功能
R_IOPORT_Open(&g_ioport_ctrl, &g_ioport.p_cfg);
//写主循环
while(1)
{
R_IOPORT_PinWrite(&g_ioport_ctrl, BSP_IO_PORT_00_PIN_08, BSP_IO_LEVEL_HIGH);
R_IOPORT_PinWrite(&g_ioport_ctrl, BSP_IO_PORT_00_PIN_07, BSP_IO_LEVEL_HIGH);
R_IOPORT_PinWrite(&g_ioport_ctrl, BSP_IO_PORT_00_PIN_06, BSP_IO_LEVEL_HIGH);
R_BSP_SoftwareDelay(1,BSP_DELAY_UNITS_SECONDS);
R_IOPORT_PinWrite(&g_ioport_ctrl, BSP_IO_PORT_00_PIN_08, BSP_IO_LEVEL_LOW);
R_IOPORT_PinWrite(&g_ioport_ctrl, BSP_IO_PORT_00_PIN_07, BSP_IO_LEVEL_LOW);
R_IOPORT_PinWrite(&g_ioport_ctrl, BSP_IO_PORT_00_PIN_06, BSP_IO_LEVEL_LOW);
R_BSP_SoftwareDelay(1,BSP_DELAY_UNITS_SECONDS);
}
}
这里R_BSP_SoftwareDelay() 函数第一个参数为1 第二个参数 为秒 因此就是一秒组合 下面进行下载和验证 编译使用上方说明的小锤子 下载使用上方的虫子图标下载完成后我们查看现象如下所示
-
VID20241208210701
下面完成入门的第三个任务 按键
其实任务前面是相同的创建工程下面直接进行到配置阶段
首先通过原理图查看按键的引脚
我们使用引脚1 005 我门做一个程序为按下一次按钮将LED灯的状态进行反转
下面进行配置
配置为输入模式 不使用中断 上拉输入 我们分析原理图当接收到高时为未按下状态 当为低时为按下状态
代码如下
//读取按键状态
bsp_io_level_t Read_Button()
{
bsp_io_level_t button_value = BSP_IO_LEVEL_HIGH ;
R_IOPORT_PinRead(&g_ioport_ctrl, BSP_IO_PORT_00_PIN_05, &button_value);
return button_value;
}
/*******************************************************************************************************************//**
* 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 */
bsp_io_level_t LED_value = BSP_IO_LEVEL_HIGH ;
#if BSP_TZ_SECURE_BUILD
/* Enter non-secure code */
R_BSP_NonSecureEnter();
#endif
R_IOPORT_Open(&g_ioport_ctrl, &g_ioport.p_cfg);
while(1)
{
R_IOPORT_PinWrite(&g_ioport_ctrl, BSP_IO_PORT_00_PIN_08, LED_value);
R_IOPORT_PinWrite(&g_ioport_ctrl, BSP_IO_PORT_00_PIN_07, LED_value);
R_IOPORT_PinWrite(&g_ioport_ctrl, BSP_IO_PORT_00_PIN_06, LED_value);
if(BSP_IO_LEVEL_LOW==Read_Button())
{
R_BSP_SoftwareDelay(50,BSP_DELAY_UNITS_MILLISECONDS);
if(BSP_IO_LEVEL_LOW==Read_Button())
{
//判断为真的按下 进行状态反转
if(BSP_IO_LEVEL_HIGH==LED_value)
{
LED_value=BSP_IO_LEVEL_LOW;
}else
{
LED_value=BSP_IO_LEVEL_HIGH;
}
while (BSP_IO_LEVEL_HIGH != Read_Button());
}
}
}
}
逻辑为当检测到按钮输入为低时进行滤波过了50ms还为低时此时表示按钮为真正的按下 将LED灯的状态进行改变 并且等待按钮抬起将改变后的值写入到LED灯中 最后的效果如下所示
VID20241208211234
总结
通过本次学习,我对瑞萨的GPIO操作有了更深入的理解。在未来,我计划继续深入学习微控制器的其他功能,如串口通信、ADC(模数转换)等,并尝试将这些知识应用到实际的项目中。同时,更好的完成后面的任务
下面是本次整个任务的录像视频解说 有一些很细节的地方我将在视频中和大家一起分享
|