RA_Lance 发表于 2022-5-30 17:56:42

【瑞萨RA2系列开发板体验】Keil开发环境踩坑后点亮LED


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


板子主芯片:R7FA2L1AB2DFL
两个LED灯:P103、P104
自定义按键:P015
https://file.elecfans.com/web2/M00/26/68/pYYBAGG7CXKAEJRjAANdK0Y63g4801.png

之前没有玩过瑞萨的MCU,又想用顺手的Keil来编程。虽然参考了网上高人的教程,不过还是踩了坑。下面用图片来一步一步说明
一、程序安装(这个我不细说了)
1.Renesas_Flash_Programmer_Package_V30802-doc.zip
2. setup_fsp_v3_2_0_rasc_v2021-07.exe
解压后一步一步安装完成便可。一个是Keil 调用程序,一个是串口下载程序及相关驱动。

二、建立工程文件
打开Keil新建工程123,随便给个名字,这里跟踩坑有关,名字不重要。
https://file.elecfans.com/web2/M00/26/62/poYBAGG7CXSAdwRFAAGlRH_YHjk710.png

选择R7FA2L1AB2DFL
https://file.elecfans.com/web2/M00/26/68/pYYBAGG7CXWADcnjAADerBtroyc757.png

按旁边绿箭头调用瑞萨配置工具。(瑞萨想把编程可视化,这个想法不错呀。)
https://file.elecfans.com/web2/M00/26/68/pYYBAGG7CXaAIdwyAAFnMvwWtuw318.png

请注意,这个工程名才是我们要用的工程,刚才起的123是坑来的!!!这个名字不能跟刚才起的名字一样。
https://file.elecfans.com/web2/M00/26/62/poYBAGG7CXeAWD1FAAHeMmeUpaI433.png

https://file.elecfans.com/web2/M00/26/62/poYBAGG7CXiAGHMgAAIbY7jFLnk205.png

https://file.elecfans.com/web2/M00/26/68/pYYBAGG7CXmAJbSYAACE265KP3w116.png

按完成后出现配置界面。
https://file.elecfans.com/web2/M00/26/68/pYYBAGG7CXuAF4AaAADlaYGkMUM196.png

配置两个LED所在的P103P104 口为输出,初始化低电平。
https://file.elecfans.com/web2/M00/26/68/pYYBAGG7CXyABKziAAICwNsYgM0276.png

配置RTC定时器:1秒中断,在中断中切换LED状态
https://file.elecfans.com/web2/M00/26/62/poYBAGG7CX6ACXpWAAIbFGvN46s890.png

https://file.elecfans.com/web2/M00/26/68/pYYBAGG7CX-AOvbFAAHYd3VTfxg413.png

选用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文件打勾,以便下步烧录。
https://file.elecfans.com/web2/M00/26/68/pYYBAGG7CYCAaf-iAAECW0hYHHg032.png

我们熟悉的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短接
https://file.elecfans.com/web2/M00/26/62/poYBAGG7CYKAHBrkAAgGFBAuw1w684.png

运行Renesas_Flash_Programmer_ V30800.exe,新建连接,按图设置好后点击Connect,按RESET按键再松开。
https://file.elecfans.com/web2/M00/26/68/pYYBAGG7CYOAaVqSAAAlhCe-YBY863.png

https://file.elecfans.com/web2/M00/26/68/pYYBAGG7CYWAdJr9AAJz6VU0W7Y794.png

开发板复位按键,点击Start,出现“OK”表示下载成功。
改跳线冒位置为1、2短接,复位按一下。


小李y飞 发表于 2023-3-14 11:35:48

不错,学习一下

xujiwei263 发表于 2023-10-21 10:36:55

有没有办法直接使用keil建立工程?感觉这种方法好麻烦:L
页: [1]
查看完整版本: 【瑞萨RA2系列开发板体验】Keil开发环境踩坑后点亮LED