嵌入式技术论坛
直播中

李艳

7年用户 1345经验值
私信 关注
[经验]

如何在RT-Thread Studio完成对RA2L1评估板的环境搭建以及gpio的输入输出检测?

  一、概述
  有幸参加RT-Thread的活动,体验RT-Thread Studio 和瑞萨 CPK-RA2L1评估板。本篇文章主要讲解如何在RT-Thread Studio 完成对RA2L1评估板的环境搭建以及gpio的输入输出检测,通过LED显示。
  二、硬件准备
  首先准备一个CPK-RA2L1评估板, 这个板子的芯片型号是 R7FA2L1AB2DFM
  特性:
  48MHz Cortex-M23,48 引脚
  128KB/ 256KB 代码闪存和 32KB SRAM(支持 ECC)
  8KB 数据闪存,提供与 EEPROM 类似的数据存储功能
  内部电压调节电路
  增强型电容式触摸感应单元 (CTSU2)
  12 位 ADC,12 位 DAC,低功耗比较器
  32 位通用 PWM 定时器,16 位通用 PWM 定时器,低功耗异步通用定时器
  实时时钟
  串行通信接口(UART、简单 SPI、简单 I2C)
  独立的SPI接口 / I2C 多主接口
  CAN
  安全功能
  加密功能
  三、开发软件安装
  1、软件包准备
  目前CPK-RA2L1评估板的使用RT-Thread Studio开发,使用RA的软件包是3.5.0版本(FSP V3.5.0),可在github上下载选择setup_fsp_v3_5_0_rasc_v2021-10.exe,目前官网上的高版本无法正常使用。
  CPKsBSP_FSP3.5.0.zip
  2、CPK-RA2L1 板级支持包安装
  具体安装过程可参考Renesas官网文档《向FSP中添加CPK评估板的BSP 》
2.jpg
  将支持包中的文件分别放在如图所示的路径下
2.jpg
  3、RT-Thread Studio
  在RT-THread 官网下载安装RT-Thread Studio完成安装
2.jpg
  四、新建工程
  1、打开RT-Thread Studio
2.jpg
  2、选择RT-Thread Studio 左上角文件 -》 新建 -》 RT-Thread 项目
2.jpg
  3、填写项目名称保存路径,选择基于开发板配置,选择具体开发板,调试器选择。选定后右边会有芯片的datasheet以及硬件手册
2.jpg
  4、创建工程后双击 RA Smart Configurator 配置fps,找到刚才安装的fps_3.5安装的路径后确定即可
2.jpg
  5、RA的入口代码路径在 src目录下 hal_entry.c, 入口函数void hal_entry(void),把板子数据线和电脑连接好后,点击小铁锤开始编译官方的点灯demo,控制台会输出编译的信息,在点击下载图标,生成的二进制文件就被下载到开发板中(需要安装串口驱动)
2.jpg
3.jpg
  五、代码编写
  上面的步骤完成了开发环境的搭建和基本验证工作,下面开始简单gpio 点灯操作和按键输入验证。官方的demo中已经写好了LED1上电不定的闪烁功能,key1 按键按下触发终端打印pin number的操作,我们就基于这个demo让key1按下的时候点亮Led2, 再次按下熄灭的功能。
  首先查找原理图,确认LED1, LED2,Key1, Debug 串口位置。原理图在CPK-RA2L1_RA2E1设计文件包中,
  LED1 对应 P502 高有效
  LED2 对应 P501 高有效
  Key1 对应 P004
2.jpg
  debug串口查看,在RT-Thread Studio 中点击刚才配置好的RA Smart Configurator,然后如下操作能查看到debug 使用的串口ping
  Rx P110 Tx P109
2.jpg
  查看原理图查找在板子上的实际位置
2.jpg
  将板子的Rx与USB转TTL的Tx连接, Tx与调试器的Rx连接,板子的GND连接调试器的GND
2.jpg
  编写代码,LED1不停的亮灭间隔500ms, LED2等待按键S1按下亮,再按下灭,同时串口打印LED2的状态
  /*
  * Copyright (c) 2006-2021, RT-Thread Development Team
  *
  * SPDX-License-Identifier: Apache-2.0
  *
  * Change Logs:
  * Date Author Notes
  * 2023-02-25 DYC first version
  */
  #include 《rtthread.h》
  #include “hal_data.h”
  #include 《rtdevice.h》
  #define LED1_PIN “P502” /* Onboard LED1 pins */
  #define LED2_PIN “P501” /* Onboard LED2 pins */
  #define USER_INPUT “P004”
  rt_uint32_t led2_pin = 0;
  void hal_entry(void)
  {
  rt_kprintf(“nHello RT-Thread!n”);
  rt_uint32_t led1_pin = rt_pin_get(LED1_PIN);
  while (1)
  {
  rt_pin_write(led1_pin, PIN_HIGH);
  rt_thread_mdelay(500);
  rt_pin_write(led1_pin, PIN_LOW);
  rt_thread_mdelay(500);
  }
  }
  void irq_callback_test(void *args)
  {
  rt_kprintf(“n IRQ03 triggered n”);
  static int out ;
  led2_pin = rt_pin_get(LED2_PIN);
  out = rt_pin_read(led2_pin) ? PIN_LOW:PIN_HIGH;
  if (PIN_LOW == out)
  rt_kprintf(“n LED2 offn”);
  else {
  rt_kprintf(“n LED2 onn”);
  }
  rt_pin_write(led2_pin,out);
  }
  void icu_sample(void)
  {
  /* init */
  rt_uint32_t pin = rt_pin_get(USER_INPUT);
  rt_kprintf(“n pin number : 0x%04X n”, pin);
  rt_err_t err = rt_pin_attach_irq(pin, PIN_IRQ_MODE_RISING, irq_callback_test, RT_NULL);
  if (RT_EOK != err)
  {
  rt_kprintf(“n attach irq failed. n”);
  }
  err = rt_pin_irq_enable(pin, PIN_IRQ_ENABLE);
  if (RT_EOK != err)
  {
  rt_kprintf(“n enable irq failed. n”);
  }
  }
  MSH_CMD_EXPORT(icu_sample, icu sample);
  编译下载到开发板,按S1是没有反应的,先在RT-Thread Studio 的终端打开串口
2.jpg
  输入和代码中写的对应的入口 icu_sample,打开中断监听按键,这时候按一下LED2亮,再按一下灭同时终端上打印了LED2的状态
2.jpg
2.jpg
  到这里就完成了GIOP的点灯操作和输入检测完毕。

原作者:快乐小鸟

更多回帖

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