瑞萨单片机论坛
直播中

伍生

12年用户 4经验值
擅长:嵌入式技术 控制/MCU RF/无线
私信 关注

【瑞萨RA2系列开发板体验】Keil开发环境踩坑后点亮LED(代码生成模式)

本帖最后由 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
  1. fsp_err_t err = FSP_SUCCESS;
  2. volatile bool rtc_flag = 0;//RTC延时1s标志位
  3. //回调函数
  4. void rtc_callback(rtc_callback_args_t *p_args)
  5. {
  6.     if(p_args->event == RTC_EVENT_PERIODIC_IRQ)
  7.         rtc_flag =!rtc_flag;
  8.                
  9.      if(rtc_flag)
  10.     {
  11.                                         R_IOPORT_PinWrite(&g_ioport_ctrl, BSP_IO_PORT_01_PIN_03, BSP_IO_LEVEL_HIGH);
  12.           R_IOPORT_PinWrite(&g_ioport_ctrl, BSP_IO_PORT_01_PIN_04, BSP_IO_LEVEL_LOW);
  13.                 }else{
  14.           R_IOPORT_PinWrite(&g_ioport_ctrl, BSP_IO_PORT_01_PIN_04, BSP_IO_LEVEL_HIGH);
  15.           R_IOPORT_PinWrite(&g_ioport_ctrl, BSP_IO_PORT_01_PIN_03, BSP_IO_LEVEL_LOW);
  16.                 }               
  17. }
在void hal_entry(void)下编写RTC中断,编译通过。
  1. void hal_entry(void)
  2. {
  3.        err = R_RTC_Open(&g_rtc0_ctrl, &g_rtc0_cfg);
  4.        assert(FSP_SUCCESS == err);
  5.        //RTC延时1s
  6.        R_RTC_PeriodicIrqRateSet(&g_rtc0_ctrl, RTC_PERIODIC_IRQ_SELECT_1_SECOND);
  7. #if BSP_TZ_SECURE_BUILD
  8.     R_BSP_NonSecureEnter();
  9. #endif
  10. }

工程选项要把生成HEX文件打勾,以便下步烧录。

我们熟悉的main函数内容(程序自动生成,不建议在此写代码):
  1. #include "hal_data.h"
  2.             int main(void) {
  3.               hal_entry();
  4.               return 0;
  5.             }

GPIO定义在pin_data文件里(程序自动生成):
  1. const ioport_pin_cfg_t g_bsp_pin_cfg_data[] = {
  2.     {
  3.         .pin = BSP_IO_PORT_01_PIN_03,
  4.         .pin_cfg = ((uint32_t) IOPORT_CFG_PORT_DIRECTION_OUTPUT | (uint32_t) IOPORT_CFG_PORT_OUTPUT_LOW)
  5.     },
  6.     {
  7.         .pin = BSP_IO_PORT_01_PIN_04,
  8.         .pin_cfg = ((uint32_t) IOPORT_CFG_PORT_DIRECTION_OUTPUT | (uint32_t) IOPORT_CFG_PORT_OUTPUT_LOW)
  9.     },
  10.     {
  11.         .pin = BSP_IO_PORT_01_PIN_08,
  12.         .pin_cfg = ((uint32_t) IOPORT_CFG_PERIPHERAL_PIN | (uint32_t) IOPORT_PERIPHERAL_DEBUG)
  13.     },
  14.     {
  15.         .pin = BSP_IO_PORT_03_PIN_00,
  16.         .pin_cfg = ((uint32_t) IOPORT_CFG_PERIPHERAL_PIN | (uint32_t) IOPORT_PERIPHERAL_DEBUG)
  17.     },
  18. };

三、通过串口下载程序
使用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短接,复位按一下。


附件: 您需要登录才可以下载或查看附件。没有帐号?注册

更多回帖

发帖
×
20
完善资料,
赚取积分