转自RA生态工作室
“RA MCU众测宝典”环境搭建专题更新啦!这次我们聚焦【FPB-RA0E2】开发板,一步步打通开发“第一关”,为后续功能开发筑牢基础。
开启宝典
01.FPB-RA0E2开发板简介
FPB-RA0E2是一款针对RA0E2系列微控制器(MCU)的快速原型板,旨在帮助用户无缝评估RA0E2 MCU的各项特性,并利用灵活配置软件包(FSP)和e²studio集成开发环境来开发嵌入式系统应用。
该板卡的核心是基于ArmCortex-M23内核、主频32MHz的R7FA0E2094CFM微控制器,配备了128KB代码闪存和16KB SRAM。在系统功能层面,它集成了多种时钟源、用于精确功耗测量的电流测量点、一个板载调试器(SWD)、USB Type-C接口、用户LED和按钮。尤为关键的是,该开发板提供了强大的生态系统扩展能力,同时兼容Digilent Pmod和Arduino(UNO R3)两种流行的接口标准,使开发者可以方便地连接各类外设和扩展板,从而快速将创意转化为实际产品。

02开发环境搭建
首先,需要下载e²studio。下载地址如下:
下载e²studio
https://www.renesas.com/en/software-tool/e-studio?srsltid=AfmBOoqRmLqCRqEFXlE7lYL88hcZdWgQCaE6kPwMr4tdSUvFGh0Jsf9j#downloads
需要下载最近的版本:
其次、需要下载FSP,建议下载最新v6.0.0,最新的v6.0.0增加了很多对FPB-RA0E2的支持。

下载地址:
下载FSP v6.0.0
https://github.com/renesas/fsp

03新建项目
在e²studio的主界面,点击顶部菜单栏的文件(F)。
在下拉菜单中,将鼠标移动到新建(N)上。
在弹出的子菜单中,选择瑞萨C/C++项目。
最后,在右侧的菜单中点击Renesas RA。

在弹出的“新建C/C++项目”窗口中,您会看到可用的项目模板。
选择第二个选项:Renesas RA FSP Solution。这个模板用于创建基于Renesas FSP(Flexible Software Package)的完整解决方案,是开发RA系列微控制器的推荐方式。
选择后,点击下一步(N)按钮继续

在“Renesas RA FSP Solution”窗口中,您需要设置项目名称和存储位置。
在Project name(项目名称)输入框中,输入您的项目名称,例如图中所示的led3。
通常保持勾选使用缺省位置(D),这样项目就会被创建在e²studio的默认工作空间中。
设置好名称后,点击下一步(N)。

在Board(开发板)的下拉列表中,找到并选择您的目标开发板,根据图中的高亮选择,这里选FPB-RA0E2。
在Toolchains(工具链)部分,确保项目使用的编译器是GNU ARM Embedded。
在下方的工具链版本选择框中,选择您已经安装并希望使用的版本。
完成以上配置后,点击完成(F)按钮(图中未显示,但这是最后一步)。

04GPIO控制
实现2个LED等不同闪烁。
一个实现1s的反转,一个实现呼吸效果。使用的是GPIO操作。

05程序
左右滑动查看完整内容
[/p][p][code][/p][p]#include"hal_data.h"[/p][p]void R_BSP_WarmStart(bsp_warm_start_event_t event);[/p][p]extern bsp_leds_t g_bsp_leds;[/p][p]void hal_entry (void)[/p][p]{[/p][p]#ifBSP_TZ_SECURE_BUILD[/p][p] R_BSP_NonSecureEnter();[/p][p]#endif[/p][p] if(g_bsp_leds.led_count < 2)[/p][p] {[/p][p] while (1);[/p][p] }[/p][p] bsp_io_port_pin_t led1_pin = (bsp_io_port_pin_t) g_bsp_leds.p_leds[BSP_LED_LED1];[/p][p] bsp_io_port_pin_t led2_pin = (bsp_io_port_pin_t) g_bsp_leds.p_leds[BSP_LED_LED2];[/p][p] const uint32_t LOOP_TICK_MS = 1;[/p][p] const uint32_t PWM_PERIOD_MS = 20;[/p][p] const uint32_t BRIGHTNESS_STEPS = 100;[/p][p] const uint32_t BREATHE_STEP_INTERVAL_MS = 20;[/p][p] uint32_t brightness = 0;[/p][p] int8_t breathe_direction = 1;[/p][p] uint32_t breathe_step_counter = 0;[/p][p] const uint32_t BLINK_INTERVAL_MS = 1000;[/p][p] bsp_io_level_t led2_state = BSP_IO_LEVEL_LOW;[/p][p] uint32_t blink_counter = 0;[/p][p] R_BSP_PinAccessEnable();[/p][p] R_BSP_PinWrite(led2_pin, led2_state);[/p][p] while (1)[/p][p] {[/p][p] uint32_t on_time_ms = (PWM_PERIOD_MS * brightness) / BRIGHTNESS_STEPS;[/p][p] uint32_t current_pwm_phase = (breathe_step_counter + blink_counter) % PWM_PERIOD_MS;[/p][p] if (current_pwm_phase < on_time_ms)[/p][p] {[/p][p] R_BSP_PinWrite(led1_pin, BSP_IO_LEVEL_HIGH);[/p][p] }[/p][p] else[/p][p] {[/p][p] R_BSP_PinWrite(led1_pin, BSP_IO_LEVEL_LOW);[/p][p] }[/p][p] breathe_step_counter += LOOP_TICK_MS;[/p][p] if (breathe_step_counter >= BREATHE_STEP_INTERVAL_MS)[/p][p] {[/p][p] breathe_step_counter = 0;[/p][p] brightness += breathe_direction;[/p][p] if(brightness >= BRIGHTNESS_STEPS)[/p][p] {[/p][p] brightness = BRIGHTNESS_STEPS;[/p][p] breathe_direction = -1;[/p][p] }[/p][p] elseif(brightness == 0)[/p][p] {[/p][p] breathe_direction = 1;[/p][p] }[/p][p] }[/p][p] blink_counter += LOOP_TICK_MS;[/p][p] if(blink_counter >= BLINK_INTERVAL_MS)[/p][p] {[/p][p] blink_counter = 0;[/p][p] led2_state = (led2_state == BSP_IO_LEVEL_LOW) ? BSP_IO_LEVEL_HIGH : BSP_IO_LEVEL_LOW;[/p][p] R_BSP_PinWrite(led2_pin, led2_state);[/p][p] }[/p][p] R_BSP_SoftwareDelay(LOOP_TICK_MS, BSP_DELAY_UNITS_MILLISECONDS);[/p][p] }[/p][p]}[/p][p]void R_BSP_WarmStart (bsp_warm_start_event_t event)[/p][p]{[/p][p] if(BSP_WARM_START_RESET == event)[/p][p] {[/p][p]#ifBSP_FEATURE_FLASH_LP_VERSION != 0[/p][p] R_FACI_LP->DFLCTL = 1U;[/p][p]#endif[/p][p] }[/p][p] if(BSP_WARM_START_POST_C == event)[/p][p] {[/p][p] R_IOPORT_Open(&IOPORT_CFG_CTRL, &IOPORT_CFG_NAME);[/p][p] }[/p][p]}[/p][p]
复制代码
06效果

如果在工具安装、项目配置中遇到阻碍,或是有更高效的搭建技巧,欢迎在评论区分享交流~环境搭建专题会持续补充更多RA系列开发板的实操指南,让嵌入式开发起步更顺畅!









