瑞萨单片机william hill官网
直播中

hehung

8年用户 659经验值
擅长:嵌入式技术
私信 关注
[经验]

【瑞萨RA4系列开发板体验】1. 新建工程+按键控制LED

前言

终于拿到瑞萨的板子了,开始按照教程一步一步的搭建环境,还是非常简单的,就不在赘述了。
本次开发使用的是瑞萨官方的编译器e2。
本文实现的功能:

  1. 从头创建一个新工程;
  2. 配置LED以及按键端口;
  3. 使用Renesas Flash Programmer下载程序;
  4. 实现流水灯以及按键SW1按下停止流水灯,按键SW2按下开启流水灯的功能。

新建工程

打开e2,第一次打开可能会让你登录账号,登录在瑞萨官网注册的账号即可,然后按照下面的步骤新建工程即可。

  1. 新建项目
    新建项目
  2. 输入项目名称
    输入项目名称
  3. 选择目标单片机
    所使用的单片机为R7FA4M2AD3DFP,如果有调试器,可以选择相应的调试器,否则可以选择None,当然后期可以修改。
    3.png
  4. 选择工程类型
    这里直接选择Flat Project就行,如果需要体验TrustZone,,可根据实际情况选择。
    4.png
  5. 选择编译方式
    这里选择第一个即可。
    5.png
  6. 选择是否使用FreeRTOS
    我这里选择了使用,方便后期开发,但是只能选择使用静态分配的任务。
    然后点击完成。
    6.png

到这里工程就算新建完成,但是什么都没有,需要我们通过FSP添加想要的组件,完成功能开发。

硬件连接以及FSP配置

硬件连接

我们需要用到LED以及按键,先查看原理图。
LED原理图如下,由此可知,P415,P404,P405分别控制LED1,LED2,LED3,并且当控制引脚为HIGH的时候LED亮。
8.png

按键原理图如下,由此可知,P005连接到了SW01,P006连接到了SW007,且当引脚为LOW时表示按键按下。
95.png

FSP配置

知道了硬件连接,接下来就是使用FSP配置响应的硬件功能了。

  1. 在工程里面找到configuration.xml,双击打开。

7.png

  1. 配置按键P005,P006为输入模式。
    96.png
  2. 选择FSP Configuration下面的Pins,配置引脚P404,P405,P415,配置为输出低[Output mode(Initial Low)]。

9.png

点击Generate Project Content生成配置代码。

软件实现

我想实现的功能为:

  1. 系统上电,LED1,LED2,LED3按照亮灭,亮灭,亮灭的状态流水灯显示,流水灯切换周期为500ms;
  2. 按下按键SW1,流水灯停止;
  3. 按下按键SW2,流水灯继续;

代码中没有使用FreeRTOS,本来想用的,但是写好了之后没有工作,不知道什么原因,因为没有JLINK调试器,不能在线调试,问题比较难找,后面弄到了JLINK调试器再试试。

按照上面的思路,代码实现如下。

注:这里需要重点说明一下,用户代码的入口为src/hal_entry.c下面的hal_entry(),不要写在main()里面,不然每次生成配置代码都会覆盖该文件,导致写的内容丢失。

void hal_entry(void)
{
    static uint16_t delay_cnt = 0U;
    static uint8_t led_ctrl_flg = 0U;
    static uint8_t key_cmd = 0U;
    static bsp_io_level_t key_value[2] = {BSP_IO_LEVEL_HIGH, BSP_IO_LEVEL_HIGH};

    while (1)
    {
        if (key_cmd == 0U)
        {
            if (delay_cnt >= 50U)
            {
                delay_cnt = 0U;

                switch (led_ctrl_flg)
                {
                    case 0U:
                    {
                        R_IOPORT_PinWrite(&g_ioport_ctrl, BSP_IO_PORT_04_PIN_04, BSP_IO_LEVEL_LOW);
                        R_IOPORT_PinWrite(&g_ioport_ctrl, BSP_IO_PORT_04_PIN_05, BSP_IO_LEVEL_LOW);
                        R_IOPORT_PinWrite(&g_ioport_ctrl, BSP_IO_PORT_04_PIN_15, BSP_IO_LEVEL_HIGH);
                        break;
                    }
                    case 1U:
                    {
                        R_IOPORT_PinWrite(&g_ioport_ctrl, BSP_IO_PORT_04_PIN_04, BSP_IO_LEVEL_HIGH);
                        R_IOPORT_PinWrite(&g_ioport_ctrl, BSP_IO_PORT_04_PIN_05, BSP_IO_LEVEL_LOW);
                        R_IOPORT_PinWrite(&g_ioport_ctrl, BSP_IO_PORT_04_PIN_15, BSP_IO_LEVEL_LOW);
                        break;
                    }
                    case 2U:
                    {
                        R_IOPORT_PinWrite(&g_ioport_ctrl, BSP_IO_PORT_04_PIN_04, BSP_IO_LEVEL_LOW);
                        R_IOPORT_PinWrite(&g_ioport_ctrl, BSP_IO_PORT_04_PIN_05, BSP_IO_LEVEL_HIGH);
                        R_IOPORT_PinWrite(&g_ioport_ctrl, BSP_IO_PORT_04_PIN_15, BSP_IO_LEVEL_LOW);
                        break;
                    }
                }
                led_ctrl_flg = (led_ctrl_flg >= 2U) ? (0U) : (led_ctrl_flg + 1U);
            }
        }
        else
        {

        }

        if (FSP_SUCCESS == R_IOPORT_PinRead(&g_ioport_ctrl, BSP_IO_PORT_00_PIN_05, &key_value[0]))
        {
            if (key_value[0] == BSP_IO_LEVEL_LOW)
            {
                key_cmd = 1U;
            }
        }

        if (FSP_SUCCESS == R_IOPORT_PinRead(&g_ioport_ctrl, BSP_IO_PORT_00_PIN_06, &key_value[1]))
        {
            if (key_value[1] == BSP_IO_LEVEL_LOW)
            {
                key_cmd = 0U;
            }
        }

        delay_cnt ++;
        /* Delay for 10ms */
        R_BSP_SoftwareDelay(10, BSP_DELAY_UNITS_MILLISECONDS);
    }

#if BSP_TZ_SECURE_BUILD
    /* Enter non-secure code */
    R_BSP_NonSecureEnter();
#endif
}

程序下载到开发板

如果有JLINK,可以直接电机e2左上角的小虫子下载,没有JLINK,可以使用Renesas Flash Programmer工具下载,工具在瑞萨官网下载。

  1. 修改工程,生成hex文件用于串口下载
    右键单击工程->属性->C/C++构建->设置->GNU Arm Cross Create Flash Image,选择Intel HEX
    90.png
  2. 打开Renesas Flash Programmer,点击File->New Project,做如下配置。
    主要是配置微控制器类型,工程名字,工程目录以及串口端口。
    91.png

配置完成之后点击Connect,此时会连接失败,如下图
92.png

需要按住Reset按钮,之后点击Connect,在松手。

  1. 配置Boot
    如果使用串口下载,需要配置一下单片机上面的boot跳线帽,切换为SCI/USB BOOT模式如下:
    97.png

开发板上也有描述,下载完成之后需要将跳线帽变回Interrnal Flash模式。

  1. 下载hex文件到单片机
    如下图,选择hex文件,然后按下Reset按钮,电机Start,松开Reset按钮,等待下载完成即可。
    94.png

效果展示

演示视频见文章底部。

总结

通过简单的使用,对改款单片机有了初步的了解,总结一下。
优点:

  1. 有FSP配套配置工具,开发省时省力,事半功倍;
  2. 软件集成度好,资料丰富;

缺点:

  1. 这款板子不带板载调试器,使用串口下载很不方便,费时费力,之前用R6M4就有板载调试器,很方便。

暂时有如上感受,感谢!

演示视频

回帖(1)

hehung

2022-11-27 13:19:00
找到FreeRTOS加上任务之后不能工作的原因了,因为最大优先级配置的是5,我的优先级设置太大了,优先级改为4就可以了。
举报

更多回帖

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