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

电子说

1.2w人已加入

描述

一、概述
有幸参加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开发

2、CPK-RA2L1 板级支持包安装

比较器

将支持包中的文件分别放在如图所示的路径下

比较器

3、RT-Thread Studio
在RT-THread 官网下载安装RT-Thread Studio完成安装

比较器

四、新建工程
1、打开RT-Thread Studio

比较器

比较器

比较器

比较器

5、RA的入口代码路径在 src目录下 hal_entry.c, 入口函数void hal_entry(void),把板子数据线和电脑连接好后,点击小铁锤开始编译官方的点灯demo,控制台会输出编译的信息,在点击下载图标,生成的二进制文件就被下载到开发板中(需要安装串口驱动)

比较器

五、代码编写
上面的步骤完成了开发环境的搭建和基本验证工作,下面开始简单gpio 点灯操作和按键输入验证。官方的demo中已经写好了LED1上电不定的闪烁功能,key1 按键按下触发终端打印pin number的操作,我们就基于这个demo让key1按下的时候点亮Led2, 再次按下熄灭的功能。
首先查找原理图,确认LED1, LED2,Key1, Debug 串口位置。

LED1 对应 P502 高有效
LED2 对应 P501 高有效
Key1 对应 P004

比较器

debug串口查看,在RT-Thread Studio 中点击刚才配置好的RA Smart Configurator,然后如下操作能查看到debug 使用的串口ping
Rx P110 Tx P109

比较器

查看原理图查找在板子上的实际位置

比较器

将板子的Rx与USB转TTL的Tx连接, Tx与调试器的Rx连接,板子的GND连接调试器的GND

比较器

编写代码,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
#include "hal_data.h"
#include
#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 的终端打开串口

比较器

输入和代码中写的对应的入口 icu_sample,打开中断监听按键,这时候按一下LED2亮,再按一下灭同时终端上打印了LED2的状态

比较器

到这里就完成了GIOP的点灯操作和输入检测完毕。

打开APP阅读更多精彩内容
声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉

全部0条评论

快来发表一下你的评论吧 !

×
20
完善资料,
赚取积分