RT-THREAD PIN设备应用
RT-Thread Version:4.0.1
硬件平台:野火STM32挑战者 MCU:STM32F429IGT6
开发工具:
1.MDK5.25以上
2.VSCode
3.env工具
PIN设备的操作方法
应用程序通过RT-Thred提供的pin设备管理接口来操作GPIO,函数接口如下表:
方法名称 | 方法描述 |
---|---|
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);
参数 | 描述 |
---|---|
pin | 引脚编号 |
mode | 引脚工作模式 |
返回 | 描述 |
无 | 无 |
1.1 引脚编号获取
引脚编号是由rt-thread的pin设备管理驱动程序定义的,并不是芯片的引脚号。有2种方式可以获取引脚编号:使用宏定义GET_PIN(port, pin)
或者查看PIN 驱动文件drv_gpio.c
。
使用宏定义比较方便。比如要获取led灯的引脚编号,硬件图如图1.led原理图
:
代码如下:
#define LEDR_PIN GET_PIN(H, 10)
#define LEDG_PIN GET_PIN(H, 11)
#define LEDB_PIN GET_PIN(H, 12)
再比如要获取key1的引脚编号,硬件图如图2.key原理图
:
代码如下:
#define KEY1_PIN GET_PIN(A, 0)
#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 /*下拉输出*/