本帖最后由 eyeman 于 2021-12-17 11:17 编辑
应朋友的邀请,试用了瑞萨RA2
开发板。一直拖到今天才抽时间写体验报告。
板子主芯片:R7FA2L1AB2DFL
两个LED灯:P103、P104
自定义按键:P015
之前没有玩过瑞萨的MCU,又想用顺手的Keil来编程。虽然参考了网上高人的教程,不过还是踩了坑。下面用图片来一步一步说明
一、程序安装(这个我不细说了)
1.Renesas_Flash_Programmer_Package_V30802-doc.zip
2. setup_fsp_v3_2_0_rasc_v2021-07.exe
解压后一步一步安装完成便可。一个是Keil 调用程序,一个是串口下载程序及相关驱动。
二、建立工程文件
打开Keil新建工程123,随便给个名字,这里跟踩坑有关,名字不重要。
选择R7FA2L1AB2DFL
按旁边绿箭头调用瑞萨配置工具。(瑞萨想把编程可视化,这个想法不错呀。)
请注意,这个工程名才是我们要用的工程,刚才起的123是坑来的!!!这个名字不能跟刚才起的名字一样。
按完成后出现配置界面。
配置两个LED所在的P103P104 口为输出,初始化低电平。
配置RTC定时器:1秒中断,在中断中切换LED状态
选用Sub-Clock时钟源,精度高点。输入回调函数rtc_callback,设置一下优先等级。最后就按右上角生成代码啦。
关掉配置软件回到Keil界面,可以看到我们起的名字为123的工程,这里就有坑了,如果你用这个工程编译,你回得到无数警告或错误。
关掉这个名为123的工程,打开我们第二次起的名为R7FA2L1AB2DFL的工程。打开hal_entry.c编写回调函数rtc_callback
- fsp_err_t err = FSP_SUCCESS;
- volatile bool rtc_flag = 0;//RTC延时1s标志位
- //回调函数
- void rtc_callback(rtc_callback_args_t *p_args)
- {
- if(p_args->event == RTC_EVENT_PERIODIC_IRQ)
- rtc_flag =!rtc_flag;
-
- if(rtc_flag)
- {
- R_IOPORT_PinWrite(&g_ioport_ctrl, BSP_IO_PORT_01_PIN_03, BSP_IO_LEVEL_HIGH);
- R_IOPORT_PinWrite(&g_ioport_ctrl, BSP_IO_PORT_01_PIN_04, BSP_IO_LEVEL_LOW);
- }else{
- R_IOPORT_PinWrite(&g_ioport_ctrl, BSP_IO_PORT_01_PIN_04, BSP_IO_LEVEL_HIGH);
- R_IOPORT_PinWrite(&g_ioport_ctrl, BSP_IO_PORT_01_PIN_03, BSP_IO_LEVEL_LOW);
- }
- }
在void hal_entry(void)下编写RTC中断,编译通过。
- void hal_entry(void)
- {
- err = R_RTC_Open(&g_rtc0_ctrl, &g_rtc0_cfg);
- assert(FSP_SUCCESS == err);
- //RTC延时1s
- R_RTC_PeriodicIrqRateSet(&g_rtc0_ctrl, RTC_PERIODIC_IRQ_SELECT_1_SECOND);
- #if BSP_TZ_SECURE_BUILD
- R_BSP_NonSecureEnter();
- #endif
- }
工程选项要把生成HEX文件打勾,以便下步烧录。
我们熟悉的main函数内容(程序自动生成,不建议在此写代码):
- #include "hal_data.h"
- int main(void) {
- hal_entry();
- return 0;
- }
GPIO定义在pin_data文件里(程序自动生成):
- const ioport_pin_cfg_t g_bsp_pin_cfg_data[] = {
- {
- .pin = BSP_IO_PORT_01_PIN_03,
- .pin_cfg = ((uint32_t) IOPORT_CFG_PORT_DIRECTION_OUTPUT | (uint32_t) IOPORT_CFG_PORT_OUTPUT_LOW)
- },
- {
- .pin = BSP_IO_PORT_01_PIN_04,
- .pin_cfg = ((uint32_t) IOPORT_CFG_PORT_DIRECTION_OUTPUT | (uint32_t) IOPORT_CFG_PORT_OUTPUT_LOW)
- },
- {
- .pin = BSP_IO_PORT_01_PIN_08,
- .pin_cfg = ((uint32_t) IOPORT_CFG_PERIPHERAL_PIN | (uint32_t) IOPORT_PERIPHERAL_DEBUG)
- },
- {
- .pin = BSP_IO_PORT_03_PIN_00,
- .pin_cfg = ((uint32_t) IOPORT_CFG_PERIPHERAL_PIN | (uint32_t) IOPORT_PERIPHERAL_DEBUG)
- },
- };
三、通过串口下载程序
使用USB转TTL串口模块连接开发板 :
3.3V---VCC
GND---GND
TXD---P110
RXD---P109
跳线冒从1、2短接改成1、3短接
运行Renesas_Flash_Programmer_ V30800.exe,新建连接,按图设置好后点击Connect,按RESET按键再松开。
开发板复位按键,点击Start,出现“OK”表示下载成功。
改跳线冒位置为1、2短接,复位按一下。