开发板简介
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-ThreadStudio
步骤说明
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-ThreadDevelopmentTeam
*
*SPDX-License-Identifier:Apache-2.0
*
*ChangeLogs:
*DateAuthorNotes
*2021-10-10Shermanfirstversion
*/
#include
#include"hal_data.h"
#include
#defineUSER1_PINBSP_IO_PORT_02_PIN_09/*OnboardLEDpins*/
#defineUSER2_PINBSP_IO_PORT_02_PIN_10/*OnboardLEDpins*/
#defineTN0_PINBSP_IO_PORT_00_PIN_05/*OnboardTN0pins*/
#defineTN1_PINBSP_IO_PORT_00_PIN_06/*OnboardTN1pins*/
#defineTN2_PINBSP_IO_PORT_00_PIN_07/*OnboardTN2pins*/
staticuint8_tled_flash_state=0;
voidled_off(void*args)
{
rt_kprintf("bnt0down! ");
led_flash_state=0;
}
voidled_on(void*args)
{
rt_kprintf("bnt1down! ");
led_flash_state=1;
}
#defineTHREAD_PRIORITY25
#defineTHREAD_STACK_SIZE512
#defineTHREAD_TIMESLICE5
staticrt_thread_ttid1=RT_NULL;
/*线程1的入口函数*/
staticvoidthread_led_flash_entry(void*parameter)
{
staticuint32_tflash_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(" HelloRT-Thread! ");
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(" TN2pushdown! ");
}
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
【购买HMIBoard】
———————End———————
新生态,创未来 | 2023RT-Thread 开发者大会开启报名
邀请你参加 2023 RT-Thread 开发者大会的六大理由
1、刷新RT-Thread最新技术动态和产业服务能力
2、聆听行业大咖分享,洞察产业趋势
3、丰富的技术和产品展示,前沿技术发展和应用
5、精美伴手礼人手一份开发板盲盒和免费午餐
6、黑科技满点~滴水湖地铁口安排无人车接送至会场
立刻扫码报名吧
-
RT-Thread
+关注
关注
31文章
1271浏览量
39902 -
RA6M3
+关注
关注
0文章
52浏览量
100
原文标题:RA6M3 RT-Thread* LVGL HMI Board开发实践指南-GPIO实践
文章出处:【微信号:RTThread,微信公众号:RTThread物联网操作系统】欢迎添加关注!文章转载请注明出处。
发布评论请先 登录
相关推荐
评论