【ART-Pi与RT-Thread入门】③GPIO引脚输入输出按键中断控制台打印

简介

本文涉及如下内容:

  1. RT-Thread 引脚配置
  2. RT-Thread 引脚中断配置
  3. RT-Thread 读取引脚电平
  4. RT-Thread 设置引脚电平
  5. RT-Thread使用ulog软件包输出控制台信息

默认情况下,RT-Thread Studio创建的模板工程就是一个blink例程。下面我们基于ART-Pi开发板创建一个模板工程,然后通过ART-Pi的User Key按键来控制板载的蓝色LED开关。

PIN设备相关接口

应用程序通过 RT-Thread 提供的 PIN 设备管理接口来访问 GPIO,相关接口如下所示:

函数描述
rt_pin_mode()设置引脚模式
rt_pin_write()设置引脚电平
rt_pin_read()读取引脚电平
rt_pin_attach_irq()绑定引脚中断回调函数
rt_pin_irq_enable()使能引脚中断
rt_pin_detach_irq()脱离引脚中断回调函数
GET_PIN(port, pin)获取引脚编号(RT-Thread 提供的引脚编号需要和芯片的引脚号区分开来)

创建模板工程

RT-Thread菜单:文件-新建-RT-Thread项目,选择基于开发板,开发板选择STM32H750-RT-ART-Pi
在这里插入图片描述

启用ulog以及中断服务程序打印

双击左侧的RT-Thread Settings,然后右侧单击ulog日志让它变为彩色即为启用。
在这里插入图片描述
双击ulog日志,选中使能ISR日志。目的是在ISR中打印信息。
在这里插入图片描述

代码

首先我们看原理图中蓝色LED和用户按键的引脚设置,分别是PI8和PH4:
在这里插入图片描述
在这里插入图片描述
代码如下:

#include <rtthread.h>
#include <rtdevice.h>
#include "drv_common.h"

//启用ulog相关头文件和宏定义
#define LOG_TAG              "push_button_app"
#define LOG_LVL              LOG_LVL_DBG
#include <ulog.h>

//获取蓝色LED和用户按键的引脚编号
#define LED_PIN_B GET_PIN(I, 8)
#define USER_KEY GET_PIN(H,4)

//按键ISR
void flip_led()
{
	//读取LED_PIN_B引脚电平
    int status = rt_pin_read(LED_PIN_B);
    //翻转LED_PIN_B引脚电平
    rt_pin_write(LED_PIN_B, !status);
    //ISR中打印信息
    LOG_D("Button is pushed!\r\n");
}

int main(void)
{
	//设置LED_PIN_B引脚为输出模式
    rt_pin_mode(LED_PIN_B, PIN_MODE_OUTPUT);
    //设置USER_KEY引脚为输入模式
    rt_pin_mode(USER_KEY, PIN_MODE_INPUT);
    //绑定USER_KEY引脚中断回调函数
    rt_pin_attach_irq(USER_KEY, PIN_IRQ_MODE_FALLING, flip_led, RT_NULL);
    //使能USER_KEY引脚中断
    rt_pin_irq_enable(USER_KEY, PIN_IRQ_ENABLE);
    //开机将LED_PIN_B引脚设为高。
    rt_pin_write(LED_PIN_B, PIN_HIGH);
    return RT_EOK;
}

#include "stm32h7xx.h"
static int vtor_config(void)
{
    /* Vector Table Relocation in Internal QSPI_FLASH */
    SCB->VTOR = QSPI_BASE;
    return 0;
}
INIT_BOARD_EXPORT(vtor_config);

然后每次按下User Key就会开启或者关闭蓝色LED。

参考文献:

  1. PIN设备 - RT-Thread 文档中心
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值