rt-thread:_002STM32F429IGT BSP的PIN设备应用

本文详细介绍了如何基于RT-THREAD操作系统在STM32F429IGT6开发板上进行PIN设备的操作,包括设置引脚模式、电平、读取电平、中断处理等,并提供了LED和按键的BSP实现步骤,适合嵌入式开发者参考。
摘要由CSDN通过智能技术生成

基于RT-THREAD STM32F429IGT6 BSP的PIN设备应用


硬件平台:野火STM32挑战者 MCU:STM32F429IGT6
开发工具:
  1. MDK Version:5.25
  2. VSCode
  3. env
  4. STM32CubeMX Version:5.2.1
  5. rt-thread源码 Version:4.0.1

工具获取


说明:
这次先介绍下PIN设备的操作方法,然后一步一步完成PIN设备的BSP过程。

该BSP主要实现使用PIN设备管理接口管理按键和led。

PIN设备的操作方法

应用程序通过RT-Thred提供的pin设备管理接口来操作GPIO,函数接口如下表:

表1.pin设备管理接口API
方法名称 方法描述
rt_pin_mode() 设置引脚模式
rt_pin_write() 设置引脚电平
rt_pin_read() 读取引脚电平
rt_pin_attach_irq() 绑定引脚中断回调函数
rt_pin_detach_irq() 脱离引脚中断回调函数
rt_pin_irq_enable() 使能引脚中断

1. 设置引脚模式

在使用引脚之前需要先设定引脚的工作模式,通过下面函数完成:

void rt_pin_mode(rt_base_t pin, rt_base_t mode);
表2.rt_pin_mode()的输入参数与返回值
参数 描述
pin 引脚编号
mode 引脚工作模式
返回 描述
1.1 引脚编号获取

引脚编号是由rt-thread的pin设备管理驱动程序定义的,并不是芯片的引脚号。有2种方式可以获取引脚编号:使用宏定义GET_PIN(port, pin)或者查看PIN 驱动文件drv_gpio.c

使用宏定义比较方便。比如要获取led的引脚编号,硬件图如图1.led原理图
在这里插入图片描述

图1.led原理图

代码如下:

#define     LEDR_PIN    GET_PIN(H, 10)
#define     LEDG_PIN    GET_PIN(H, 11)
#define     LEDB_PIN    GET_PIN(H, 12)

再比如要获取key的引脚编号,硬件图如图2.key原理图
在这里插入图片描述

图2.key原理图

代码如下:

#define KEY1_PIN    GET_PIN(H, 10)
#define KEY2_PIN    GET_PIN(C, 13)
1.2 设置引脚模式

RT-Thread目前支持的模式有下面5种:

#define PIN_MODE_OUTPUT         0x00    /*推挽输出*/
#define PIN_MODE_INPUT          0x01    /*浮空输入*/
#define PIN_MODE_INPUT_PULLUP   0x02    /*上拉输入*/
#define PIN_MODE_INPUT_PULLDOWN 0x03    /*下拉输出*/
#define PIN_MODE_OUTPUT_OD      0x04    /*开漏输出*/

2. 设置引脚电平

设置引脚电平使用如下函数完成:

void rt_pin_write(rt_base_t pin, rt_base_t value);
表3.rt_pin_write()的输入参数与返回值
参数 描述
pin 引脚编号
value 电平逻辑值:PIN_LOW (低电平),PIN_HIGH(高电平)
返回 描述

3. 读取引脚电平

读取引脚电平使用如下函数完成:

int rt_pin_read(rt_base_t pin);
表4.rt_pin_read()的输入参数与返回值
参数 描述
pin 引脚编号
value 电平逻辑值:PIN_LOW (低电平),PIN_HIGH(高电平)
返回 描述
PIN_LOW 低电平
PIN_HIGH 高电平

4. 绑定引脚中断回调函数

如果需要使用引脚的中断功能,那么需要使用如下函数将某个引脚设置为某种中断触发模式,并且绑定中断触发回调函数,当中段发生时,执行回调函数:

rt_err_t rt_pin_attach_irq(rt_int32_t pin, rt_uint32_t mode,
                             void (*hdr)(void *args),
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值