查看: 1237|回复: 5

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

[复制链接]

92

主题

132

帖子

8万

积分

管理员

11111

Rank: 9Rank: 9Rank: 9

积分
84272
QQ
发表于 2022-5-30 17:56:42 | 显示全部楼层 |阅读模式

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

作者:伍生



板子主芯片: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短接,复位按一下。


回复

使用道具 举报

3

主题

195

帖子

1090

积分

金牌会员

Rank: 6Rank: 6

积分
1090
发表于 2023-3-14 11:35:48 | 显示全部楼层

不错,学习一下
回复

使用道具 举报

16

主题

73

帖子

2433

积分

金牌会员

Rank: 6Rank: 6

积分
2433
发表于 2023-10-21 10:36:55 | 显示全部楼层

有没有办法直接使用keil建立工程?感觉这种方法好麻烦
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

用户排行榜

RA助手

主题: 116帖子:133精华:0

RA_Lance

主题: 92帖子:132精华:9

lugl

主题: 38帖子:126精华:0

xujiwei263

主题: 16帖子:73精华:0

books咦

主题: 11帖子:11精华:2

Juggernaut

主题: 9帖子:95精华:0
快速回复 返回顶部 返回列表