RA6M3RT-Thread*LVGLHMIBoard开发实践指南-GPIO实践

RTThread物联网操作系统 2023-11-30 18:57
RT-Thread即将发布一系列RA6M3外设驱动的实践指南,我们将使用瑞萨RA6M3 HMI-Board 开发板,带领大家上手RT-Thread设备驱动, 本篇文章将介绍GPIO外设。GPIO是最常见的外设,GPIO可以实现对IO的高低电平控制,读取IO的电平,以及配置为中断输入后,在中断函数中处理相关事件待。

开发板简介

HMI-Board 为 RT-Thread 联合瑞萨推出的高性价比图形评估套件,相比较于传统的 HMI + 主控板,一套硬件即可实现 HMI + IoT + 控制 的全套能力。依托于瑞萨高性能芯片 RA6M3 及 RT-Thread 软件生态,HMI Board 不仅硬件性能强劲,同时软件生态丰富,助力开发者快速开发出 GUI 智能硬件产品。


开发环境搭建指南

详见瑞萨 RA6M3 开发实践指南-UART实践 (qq.com)

本章内容

我们将使用RT-Thread Studio来创建工程,配置IO,最终实现使用板载三个按键控制板载的两个LED的亮与灭。

模块介绍:

板载的两个LED灯接入了P209与P210,原理图如下:

板载了三个按键,分别接入了P005、P006、P007。原理图如下:

开发软件:

RT-Thread Studio


步骤说明


1、新建工程

● 安装开发板SDK:

打开RT-Thread Studio,点击SDK管理器,下载开发板SDK:

等待安装结束后退出SDK管理器

● 新建HMI_RA6M3_GPIO工程:

● 选择基于开发板创建工程

● 输入工程名称点完成生成工程:

● 生成工程预览如下:

2.配置RASC工程

● 选择RA Smart Configurator文件夹位置,只需要选到FSP文件夹就行了:

● 在RASC工程配置LED为输出模式,按键为输入模式,并设置为默认的中断号。保存并生成工程:

3.  编写代码

我们编写hal_entry.c代码如下:

/*


 * Copyright (c) 2006-2023, RT-Thread Development Team


 *


 * SPDX-License-Identifier: Apache-2.0


 *


 * Change Logs:


 * Date           Author        Notes


 * 2021-10-10     Sherman       first version


 */



#include 


#include "hal_data.h"


#include 



#define USER1_PIN    BSP_IO_PORT_02_PIN_09 /* Onboard LED pins */


#define USER2_PIN    BSP_IO_PORT_02_PIN_10 /* Onboard LED pins */



#define TN0_PIN      BSP_IO_PORT_00_PIN_05 /* Onboard TN0 pins */


#define TN1_PIN      BSP_IO_PORT_00_PIN_06 /* Onboard TN1 pins */


#define TN2_PIN      BSP_IO_PORT_00_PIN_07 /* Onboard TN2 pins */



staticuint8_t led_flash_state =0;



voidled_off(void*args)


{


rt_kprintf("bnt0 down!\n");


    led_flash_state=0;


}



voidled_on(void*args)


{


rt_kprintf("bnt1 down!\n");


    led_flash_state=1;


}




#define THREAD_PRIORITY         25


#define THREAD_STACK_SIZE       512


#define THREAD_TIMESLICE        5



static rt_thread_t tid1 = RT_NULL;



/* 线程 1 的入口函数 */


staticvoidthread_led_flash_entry(void*parameter)


{


staticuint32_t flash_cnt;


while(1)


{


if(led_flash_state ==0){


rt_pin_write(USER1_PIN, PIN_LOW);


rt_pin_write(USER2_PIN, PIN_LOW);


}


elseif(led_flash_state ==1){


rt_pin_write(USER1_PIN, PIN_HIGH);


rt_pin_write(USER2_PIN, PIN_HIGH);


}


elseif(led_flash_state ==2){


if(flash_cnt<50)


{


rt_pin_write(USER1_PIN, PIN_HIGH);


rt_pin_write(USER2_PIN, PIN_LOW);


}


elseif(flash_cnt<100)


{


rt_pin_write(USER1_PIN, PIN_LOW);


rt_pin_write(USER2_PIN, PIN_HIGH);


}


else{


                 flash_cnt =0;


}


             flash_cnt ++;


}


rt_thread_mdelay(10);


}


}



voidkey_init(void)


{



/* 按键0引脚为输入模式 */


rt_pin_mode(TN0_PIN, PIN_MODE_INPUT_PULLUP);


/* 绑定中断,下降沿模式,回调函数名为beep_on */


rt_pin_attach_irq(TN0_PIN, PIN_IRQ_MODE_FALLING, led_off, RT_NULL);


/* 使能中断 */


rt_pin_irq_enable(TN0_PIN, PIN_IRQ_ENABLE);



/* 按键1引脚为输入模式 */


rt_pin_mode(TN1_PIN, PIN_MODE_INPUT_PULLUP);


/* 绑定中断,下降沿模式,回调函数名为beep_on */


rt_pin_attach_irq(TN1_PIN, PIN_IRQ_MODE_FALLING, led_on, RT_NULL);


/* 使能中断 */


rt_pin_irq_enable(TN1_PIN, PIN_IRQ_ENABLE);


/* 按键2引脚为输入模式 */


rt_pin_mode(TN2_PIN, PIN_MODE_INPUT_PULLUP);


}




voidhal_entry(void)


{


rt_kprintf("\nHello RT-Thread!\n");



key_init();


/* 创建线程 1,名称是 thread1,入口是 thread1_entry*/


    tid1 =rt_thread_create("thread_led",


                            thread_led_flash_entry, RT_NULL,


                            THREAD_STACK_SIZE,


                            THREAD_PRIORITY, THREAD_TIMESLICE);



/* 如果获得线程控制块,启动这个线程 */


if(tid1 != RT_NULL)


rt_thread_startup(tid1);


while(1)


{


if(rt_pin_read(TN2_PIN)==0)


{


rt_thread_delay(10);


if(rt_pin_read(TN2_PIN)==0)


                led_flash_state =2;


rt_kprintf("\nTN2 push down!\n");


}


rt_thread_delay(10);



}


}


4.代码验证

我们编译下载后,我们按TN0,两个LED亮,按下TN1,两个LED灯灭,按下TN2,两个LED灯交替闪烁。

章节总结


本章主要介绍了如果新建GPIO工程,RASC工程配置,驱动三个按键与三个LED灯的GPIO,涉及到了GPIO的输出、输入的配置,中断输入的配置与以及中断回调函数的编写。本文函盖了GPIO的所有操作。

也可以阅读帖子:

https://club.rt-thread.org/ask/article/ddc499ea99f1ea23.html


【购买HMI Board】


———————End——————

新生态,创未来 | 2023RT-Thread 开发者大会开启报名


邀请你参加 2023 RT-Thread 开发者大会的大理由

1、刷新RT-Thread最新技术动态和产业服务能力

2、聆听行业大咖分享,洞察产业趋势

3、丰富的技术和产品展示,前沿技术发展和应用

4、绝佳的实践机会:AIOT、MPU、RISC-V...

5、精美伴手礼人手一份开发板盲盒和免费午餐

6、黑科技满点~滴水湖地铁口安排无人车接送至会场


立刻扫码报名吧

👇点击阅读原文报名

RTThread物联网操作系统 帮助您了解RT-Thread相关的资讯.
评论 (0)
  • 近日,保定飞凌嵌入式技术有限公司(以下简称“飞凌嵌入式”)携手瑞芯微电子股份有限公司(以下简称“瑞芯微”)正式加入2025年全国大学生嵌入式芯片与系统设计竞赛(以下简称“嵌入式大赛”),并在应用赛道中设立专属赛题。本次嵌入式大赛,双方选用基于瑞芯微RK3588芯片设计的ELF 2开发板作为参赛平台,旨在通过此次合作,促进产教融合,共同推动嵌入式系统创新人才的培养。全国大学生嵌入式芯片与系统设计竞赛是一项A类电子设计竞赛,同时也是被教育部列入白名单的赛事,由中国电子学会主办,是学生保研、求职的公认
    飞凌嵌入式 2025-03-20 11:53 109浏览
  • 为有效降低人为疏失导致交通事故发生的发生率,各大汽车制造厂及系统厂近年来持续开发「先进驾驶辅助系统」ADAS, Advanced Driver Assistance Systems。在众多车辆安全辅助系统之中,「紧急刹车辅助系统」功能(AEB, Autonomous Emergency Braking)对于行车安全性的提升便有着相当大的帮助。AEB透过镜头影像模块与毫米波雷达感测前方目标,可在发生碰撞前警示或自动刹车以降低车辆损伤以及乘员伤害。面临的挑战以本次分享的客户个案为例,该车厂客户预计在
    百佳泰测试实验室 2025-03-20 15:07 134浏览
  • 本文内容来自微信公众号【工程师进阶笔记】,以工程师的第一视角分析了飞凌嵌入式OK3506J-S开发板的产品优势,感谢原作者温老师的专业分享。前两周,有一位老朋友联系我,他想找人开发一款数据采集器,用来采集工业现场的设备数据,并且可以根据不同的业务场景,通过不同的接口把这些数据分发出去。我把他提的需求总结了一下,这款产品方案大概有以下功能接口,妥妥地一款工业网关,在网上也能找到很多类似的产品方案,为啥他不直接买来用?再跟朋友深入地聊了一下,他之所以联系我,是因为看到我在公众号介绍过一款由飞凌嵌入式
    飞凌嵌入式 2025-03-20 11:51 139浏览
  • 全球领先的光学解决方案供应商艾迈斯欧司朗(SIX:AMS)近日宣布,凭借AS1163独立智能驱动器(SAID)成为中国领先的智能集成系统产品汽车制造商宁波福尔达智能科技股份有限公司(“福尔达”)环境动态照明应用的关键供应商。此次合作标志着汽车技术发展的一个重要时刻,充分展现了AS1163在优化动态照明应用系统成本方面的多功能性和先进性能。该产品支持传感器集成,拥有专为车顶照明设计的超薄外形,并能提升车内照明系统的性能。AS1163是一款先进的智能LED驱动器,能够与开放系统协议(OSP)网络无缝
    艾迈斯欧司朗 2025-03-20 14:26 131浏览
  • 流感季急诊室外彻夜排起的长队,手机屏幕里不断闪烁的重症数据,深夜此起彼伏的剧烈咳嗽声——当病毒以更狡猾的姿态席卷全球,守护健康的战争早已从医院前移到每个人的身上。在医学界公认的「72小时黄金预警期」里,可穿戴设备闪烁的光芒正穿透皮肤组织,持续捕捉血氧浓度、心率变异性和体温波动数据。这不是科幻电影的末日警报,而是光电传感器发出的生命预警,当体温监测精度精确到±0.0℃,当动态血氧检测突破运动伪影干扰……科技正在重新定义健康监护的时空边界。从智能手表到耳机,再到智能戒指和智能衣物,这些小巧的设备通过
    艾迈斯欧司朗 2025-03-20 15:45 215浏览
  • 如同任何对我们工作方式的改变,新的工作方式必然会遇到许多必须面对的挑战。如果不解决组织在实施精益六西格玛过程中面临的障碍以及如何克服它们的问题,那么关于精益六西格玛的讨论就不算完整。以下列举了组织在成功实施精益六西格玛时常见的几个障碍,以及克服它们的方法:1)对精益六西格玛方法论缺乏理解。抵触情绪通常源于对精益六西格玛方法论的不了解,以及不相信它能真正发挥作用。这种情况在所有层级的人员中都会出现,包括管理层。虽然教育培训可以帮助改善这一问题,但成功的项目往往是打消疑虑的最佳方式。归根结底,这是一
    优思学院 2025-03-20 12:35 128浏览
  •         在当今电子设备高度集成的时代,电路保护显得尤为重要。TVS管(瞬态电压抑制二极管)和压敏电阻作为一种高效的电路保护器件,被广泛应用于各种电子设备中,用以吸收突波,抑制瞬态过电压,从而保护后续电路免受损坏。而箝位电压,作为TVS管和压敏电阻的核心参数之一,直接关系到其保护性能的优劣。箝位电压的定义        箝位电压指瞬态保护器件(如TVS二极管、压敏电阻)在遭遇过压时,将电路电压限制在安全范围内的
    广电计量 2025-03-20 14:05 116浏览
  • 家电“以旧换新”政策的覆盖范围已从传统的八大类家电(冰箱、洗衣机、电视、空调、电脑、热水器、家用灶具、吸油烟机)扩展至各地根据本地特色和需求定制的“8+N”新品类。这一政策的补贴再叠加各大电商平台的优惠,家电销售规模显著增长,消费潜力得到进一步释放。晶尊微方案为升级换代的智能家电提供了高效且稳定的触摸感应和水位检测功能,使得操作更加便捷和可靠!主要体现在:水位检测1健康家电:养生壶、温奶器、加湿器的缺水保护安全2清洁电器:洗地机、扫地机器人的低液位和溢液提醒3宠物家电:宠物饮水机的缺水提醒/满水
    ICMAN 2025-03-20 15:23 183浏览
  • PCIe 5.0应用环境逐步成形,潜在风险却蠢蠢欲动?随着人工智能、云端运算蓬勃发展,系统对于高速数据传输的需求不断上升,PCI Express(PCIe)成为服务器应用最广的传输技术,尤其在高效能运算HPC(High Performance Computing)及AI服务器几乎皆导入了最新的PCIe 5.0规格,使得数据传输的双向吞吐量达到了128GB/s,让这两类的服务器能够发挥最大的效能。不过随着PCIe 5.0的频率达到16GHz,PCB板因为高频而导致讯号衰减加剧的特性,使得厂商面临很
    百佳泰测试实验室 2025-03-20 13:47 133浏览
  • 贞光科技代理的品牌-光颉科技高精密薄膜电阻凭借0.01%的超高精度,在AI服务器电源模块中实现了精确电压分配、优化功率因数和减少热损耗,显著提升系统能效和可靠性。在当今的数字时代,人工智能(AI)服务器已成为数据中心的核心。随着AI应用的激增,服务器的性能和能效需求也在不断提高。电源模块作为服务器的关键组件,其性能直接影响整个系统的效率和可靠性。本文将探讨光颉科技高精密薄膜电阻,特别是其0.01%的精度,如何在AI服务器电源模块中提升能效。电源模块在AI服务器中的重要性电源模块负责将输入电源转换
    贞光科技 2025-03-20 16:55 185浏览
我要评论
0
0
点击右上角,分享到朋友圈 我知道啦
请使用浏览器分享功能 我知道啦