“RA MCU眾測(cè)寶典”環(huán)境搭建專(zhuān)題更新啦!這次我們聚焦【FPB-RA0E2】開(kāi)發(fā)板,一步步打通開(kāi)發(fā)“第一關(guān)”,為后續(xù)功能開(kāi)發(fā)筑牢基礎(chǔ)。
開(kāi)啟寶典
1.FPB-RA0E2開(kāi)發(fā)板簡(jiǎn)介
FPB-RA0E2是一款針對(duì)RA0E2系列微控制器(MCU)的快速原型板,旨在幫助用戶(hù)無(wú)縫評(píng)估RA0E2 MCU的各項(xiàng)特性,并利用靈活配置軟件包(FSP)和e2studio集成開(kāi)發(fā)環(huán)境來(lái)開(kāi)發(fā)嵌入式系統(tǒng)應(yīng)用。
該板卡的核心是基于ArmCortex-M23內(nèi)核、主頻32MHz的R7FA0E2094CFM微控制器,配備了128KB代碼閃存和16KB SRAM。在系統(tǒng)功能層面,它集成了多種時(shí)鐘源、用于精確功耗測(cè)量的電流測(cè)量點(diǎn)、一個(gè)板載調(diào)試器(SWD)、USB Type-C接口、用戶(hù)LED和按鈕。尤為關(guān)鍵的是,該開(kāi)發(fā)板提供了強(qiáng)大的生態(tài)系統(tǒng)擴(kuò)展能力,同時(shí)兼容Digilent Pmod和Arduino(UNO R3)兩種流行的接口標(biāo)準(zhǔn),使開(kāi)發(fā)者可以方便地連接各類(lèi)外設(shè)和擴(kuò)展板,從而快速將創(chuàng)意轉(zhuǎn)化為實(shí)際產(chǎn)品。

02
開(kāi)發(fā)環(huán)境搭建
首先,需要下載e2studio。下載地址如下:(您可復(fù)制下方鏈接至瀏覽器,或掃描二維碼進(jìn)行查看)
下載e2studio
https://www.renesas.com/en/software-tool/e-studio?srsltid=AfmBOoqRmLqCRqEFXlE7lYL88hcZdWgQCaE6kPwMr4tdSUvFGh0Jsf9j#downloads

需要下載最近的版本:

其次、需要下載FSP,建議下載最新v6.0.0,最新的v6.0.0增加了很多對(duì)FPB-RA0E2的支持。


下載地址:(您可復(fù)制下方鏈接至瀏覽器,或掃描二維碼進(jìn)行查看)
下載FSP v6.0.0
https://github.com/renesas/fsp


03
新建項(xiàng)目
在e2studio的主界面,點(diǎn)擊頂部菜單欄的文件(F)。
在下拉菜單中,將鼠標(biāo)移動(dòng)到新建(N)上。
最后,在右側(cè)的菜單中點(diǎn)擊Renesas RA。

在彈出的“新建C/C++項(xiàng)目”窗口中,您會(huì)看到可用的項(xiàng)目模板。
選擇第二個(gè)選項(xiàng):Renesas RA FSP Solution。這個(gè)模板用于創(chuàng)建基于Renesas FSP(Flexible Software Package)的完整解決方案,是開(kāi)發(fā)RA系列微控制器的推薦方式。
選擇后,點(diǎn)擊下一步(N)按鈕繼續(xù)

在“Renesas RA FSP Solution”窗口中,您需要設(shè)置項(xiàng)目名稱(chēng)和存儲(chǔ)位置。
在Project name(項(xiàng)目名稱(chēng))輸入框中,輸入您的項(xiàng)目名稱(chēng),例如圖中所示的led3。
通常保持勾選使用缺省位置(D),這樣項(xiàng)目就會(huì)被創(chuàng)建在e2studio的默認(rèn)工作空間中。
設(shè)置好名稱(chēng)后,點(diǎn)擊下一步(N)。

在Board(開(kāi)發(fā)板)的下拉列表中,找到并選擇您的目標(biāo)開(kāi)發(fā)板,根據(jù)圖中的高亮選擇,這里選FPB-RA0E2。
在Toolchains(工具鏈)部分,確保項(xiàng)目使用的編譯器是GNU ARM Embedded。
在下方的工具鏈版本選擇框中,選擇您已經(jīng)安裝并希望使用的版本。
完成以上配置后,點(diǎn)擊完成(F)按鈕(圖中未顯示,但這是最后一步)。

04
GPIO控制
實(shí)現(xiàn)2個(gè)LED等不同閃爍。
一個(gè)實(shí)現(xiàn)1s的反轉(zhuǎn),一個(gè)實(shí)現(xiàn)呼吸效果。使用的是GPIO操作。

05
程序
左右滑動(dòng)查看完整內(nèi)容
[/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]復(fù)制代碼
06
效果

如果在工具安裝、項(xiàng)目配置中遇到阻礙,或是有更高效的搭建技巧,歡迎在評(píng)論區(qū)分享交流~環(huán)境搭建專(zhuān)題會(huì)持續(xù)補(bǔ)充更多RA系列開(kāi)發(fā)板的實(shí)操指南,讓嵌入式開(kāi)發(fā)起步更順暢!
-
mcu
+關(guān)注
關(guān)注
147文章
18946瀏覽量
398752 -
嵌入式
+關(guān)注
關(guān)注
5200文章
20470瀏覽量
334397 -
開(kāi)發(fā)板
+關(guān)注
關(guān)注
26文章
6300瀏覽量
118335
發(fā)布評(píng)論請(qǐng)先 登錄
瑞薩RA MCU眾測(cè)寶典 SysTick之RA0E1定時(shí)器點(diǎn)燈
【EK-RA6E2開(kāi)發(fā)指南】開(kāi)發(fā)環(huán)境搭建
瑞薩FPB-RA0E2開(kāi)發(fā)板簡(jiǎn)介及環(huán)境搭建指南
瑞薩RA-Eco-RA6E2-64PIN-V1.0開(kāi)發(fā)板介紹及環(huán)境搭建指南
RA MCU眾測(cè)寶典 | 環(huán)境搭建之【FPB-RA0E2】開(kāi)發(fā)環(huán)境搭建
評(píng)論