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! );
led_flash_state=0;
}
voidled_on(void*args)
{
rt_kprintf(bnt1 down! );
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( hello rt-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( tn2 push down! );
}
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、黑科技满点~滴水湖地铁口安排无人车接送至会场
立刻扫码报名吧
微型激光雷达初创公司LightWare获得150万美元的融资,用于加速其业务发展
谷歌计划用 Chromium 开源项目修复 Chrome 浏览器的内存占用问题
惠威D1090评测 低音表现强劲有力直击人心
区块链技术将颠覆金融部门的借贷系统
三星2017年半导体行业巨额开支,欲打击中国存储器竞技资格
RA6M3 RT-Thread* LVGL HMI Board开发实践指南-GPIO实践
oppor11什么时候上市?oppor11最新消息:万事俱备只欠东风!迪丽热巴、陈伟霆组CP为oppor11代言,关于oppor11还有
三星电容如何辨识选型——茂源时代全国电容代理为你揭晓
美国拟立法“禁止”华为收专利费
贸泽联手STMicroelectronics打造全新资源网站,以多样化的内容助力交通运输原型设计
东芝64层BiCS 3D堆叠技术的SSD产品,成本降低容量提升
线上回收平台与传统废品回收形式相比,它有哪些优势
从认识科学领域中针对性地给出了11条可执行的建议
库克表示已从全球为美国采购1000万个口罩 并提醒尽可能呆在家里
特斯拉计划投资4200万元在中国生产充电桩
十问柔性屏幕 让你更懂它!
iPhone需求趋向疲软 iPhone产量或将削减
这条消息,放在银行核心系统领域那也是相当炸裂的!
振弦传感器表面钢筋计与振弦采集仪形成岩土工程监测的案例
第二届智慧健康养老创新创业大赛圆满落下帷幕