java系统找不到指定文件怎么解决
568
2022-09-07
RT-Thread 驱动 PIN 设备
本示例在 STM32 NUCLEO-F411RE 开发板进行,由于 RT-Thread 项目中已包含对应的 BSP,也就是 bsp/stm32/stm32f411-st-nucleo 工程目录,因此我们在此基础上进行开发即可。
用 RT-Thread 控制 STM32 的 GPIO 有两种方法:
使用 HAL 库的函数使用 RT-Thread 的 pin 设备
本示例使用 RT-Thread 的 pin 设备进行开发。
PIN 设备管理接口
应用程序通过 RT-Thread 提供的 PIN 设备管理接口来访问 GPIO,相关接口如下所示:
函数 | 描述 |
| 设置引脚模式 |
| 设置引脚电平 |
| 读取引脚电平 |
| 绑定引脚中断回调函数 |
| 使能引脚中断 |
| 脱离引脚中断回调函数 |
定义在
头文件:components/drivers/include/drivers/pin.h源文件:components/drivers/misc/pin.c
上述 API 的用法这里就不介绍了,小伙伴们自己看手册吧~
获取引脚编号
RT-Thread 提供的引脚编号需要和芯片的引脚号区分开来,它们并不是同一个概念,引脚编号由 PIN 设备驱动程序定义,和具体的芯片相关。有 2 种方式可以获取引脚编号:使用宏定义、查看 PIN 驱动文件。
使用宏定义
如果使用 rt-thread/bsp/stm32 目录下的 BSP 则可以使用下面的宏获取引脚编号:
GET_PIN(port, pin)
获取引脚号为 PF9 的 LED0 对应的引脚编号的示例代码如下所示:
#define LED0_PIN GET_PIN(F, 9)
查看驱动文件
如果使用其他 BSP 则需要查看 PIN 驱动代码 drv_gpio.c 文件确认引脚编号。此文件里有一个数组存放了每个 PIN 脚对应的编号信息,如下所示:
static const struct pin_index pins[] ={#if defined(GPIOA) __STM32_PIN(0 , A, 0 ), __STM32_PIN(1 , A, 1 ), __STM32_PIN(2 , A, 2 ), __STM32_PIN(3 , A, 3 ), __STM32_PIN(4 , A, 4 ), __STM32_PIN(5 , A, 5 ), ...}
以 __STM32_PIN(0 , A, 0 ) 为例,前面的 0 为 RT-Thread 使用的引脚编号,A 为端口号,后面的 0 为引脚号,所以 PA0 对应的引脚编号为 0。
示例代码
说明
示例代码的主要步骤如下:
设置 LED2 对应引脚为输出模式,并给一个默认的低电平状态;设置 USER 按键对应引脚为输入模式,然后绑定中断回调函数并使能中断;按下 USER 按键切换 LED2 的亮灭状态。
电路
LED 部分电路原理图,连接到 STM32 的 PA5 引脚。
USER KEY 部分电路原理图,连接到 STM32 的 PC13 引脚。
代码
applications/user_key_sample.c 代码
#include
在 applications/SConscript 中添加 user_key_sample.c
import rtconfigfrom building import *cwd = GetCurrentDir()CPPPATH = [cwd, str(Dir('#'))]src = Split("""main.cuser_key_sample.c""")group = DefineGroup('Applications', src, depend = [''], CPPPATH = CPPPATH)Return('group')
执行 scons 编译,将目标文件下载到 STM32。大功告成!
版权声明:本文内容由网络用户投稿,版权归原作者所有,本站不拥有其著作权,亦不承担相应法律责任。如果您发现本站中有涉嫌抄袭或描述失实的内容,请联系我们jiasou666@gmail.com 处理,核实后本网站将在24小时内删除侵权内容。
发表评论
暂时没有评论,来抢沙发吧~