- 学习路线
- RT-Thread 简介
- RT-Thread Nano
- RT-Thread Smart
- RT-Thread Studio
- 快速上手
- 内核
- Env 工具
- 设备和驱动
- 组件
- 软件包
- 物联网
- 工具
- MicroPython用户手册
- 应用开发
- RT-Thread 版本选择
- 开发环境搭建
- 固件尺寸优化
- 在RT-Thread潘多拉开发板上实现电源管理
- 网络协议栈驱动移植
- 在STM32F429上应用网络功能
- 在STM32F429上应用文件系统
- 在潘多拉上使用 SFUD 操作 Flash
- FreeModbus 应用笔记
- 应用AT组件连接ESP8266模块
- 多线程非阻塞网络编程
- 使用QEMU运行动态模块组件
- CmBacktrace应用
- 在 STM32L4 上应用 littlefs 文件系统
- STM32通用Bootloader
- wireshark抓取tls数据包
- 在 STM32 上应用 C++
- STM32 上使用 PWM
- STM32 上使用 USB Host 读写 U 盘
- QEMU 网络视频教程
- Demo 示例
- 其他
- 传感器驱动开发指南
- 软件包开发
- 向RT-Thread贡献代码
- 内核视频教程
- Env 视频教程
- rw007 SPI WiFi 模块使用
- wireshark抓取tls数据包
- Keil MDK 安装
- Rtthread dir
- 支持的传感器列表
- 支持的 Touch 列表
- Builtin functions and exceptions
- Cmath
- Gc
- Math
- Sys
- Uarray
- Ubinascii
- Ucollections
- Uerrno
- Uhashlib
- Uheapq
- Uio
- Ujson
- Uos
- Ure
- Uselect
- Usocket
- ussl – SSL/TLS 模块
- Ustruct
- Utime
- Uzlib
- thread
- micropython – 内部功能访问与控制模块
- Rtthread
- Machine
- Pin
- I2C
- SPI
- UART
- LCD
- RTC
- PWM
- ADC
- WDT
- Timer
- Network
- Wlan
- 传感器驱动框架介绍
- Preparations
Pin
machine.Pin
machine.Pin 类是 machine 模块下面的一个硬件类,用于对引脚的配置和控制,提供对 Pin
设备的操作方法。
Pin
对象用于控制输入/输出引脚(也称为 GPIO
)。Pin
对象通常与一个物理引脚相关联,他可以驱动输出电压和读取输入电压。Pin 类中有设置引脚模式(输入/输出)的方法,也有获取和设置数字逻辑(0
或 1
)的方法。
一个 Pin
对象是通过一个标识符来构造的,它明确地指定了一个特定的输入输出。标识符的形式和物理引脚的映射是特定于一次移植的。标识符可以是整数,字符串或者是一个带有端口和引脚号码的元组。在 RT-Thread MicroPython 中,引脚标识符是一个由代号和引脚号组成的元组,如 Pin(("PB15", 31), Pin.OUT_PP)
中的("PB15", 31)
。
构造函数
在 RT-Thread MicroPython 中 Pin
对象的构造函数如下:
class machine.Pin( id, mode = -1, pull = -1,value)
id :由用户自定义的引脚名和
Pin
设备引脚号组成,如 ("PB15", 31),"PB15" 为用户自定义的引脚名,31
为RT-Thread Pin
设备驱动在本次移植中的引脚号。mode : 指定引脚模式,可以是以下几种:
- Pin.IN :输入模式
- Pin.OUT :输出模式
- Pin.OPEN_DRAIN :开漏模式
pull : 如果指定的引脚连接了上拉下拉电阻,那么可以配置成下面的状态:
- None :没有上拉或者下拉电阻。
- Pin.PULL_UP :使能上拉电阻。
- Pin.PULL_DOWN :使能下拉电阻。
value :
value
的值只对输出模式和开漏输出模式有效,用来设置初始输出值。
方法
Pin.init(mode= -1, pull= -1, *, value, drive, alt)
根据输入的参数重新初始化引脚。只有那些被指定的参数才会被设置,其余引脚的状态将保持不变,详细的参数可以参考上面的构造函数。
Pin.value([x])
如果没有给定参数 x
,这个方法可以获得引脚的值。
如果给定参数 x
,如 0
或 1
,那么设置引脚的值为 逻辑 0
或 逻辑 1
。
Pin.name()
返回引脚对象在构造时用户自定义的引脚名。
Pin.irq(handler=None, trigger=(Pin.IRQ_RISING))
配置在引脚的触发源处于活动状态时调用的中断处理程序。如果引脚模式是, Pin.IN
则触发源是引脚上的外部值。 如果引脚模式是, Pin.OUT
则触发源是引脚的输出缓冲器。 否则,如果引脚模式是, Pin.OPEN_DRAIN
那么触发源是状态'0'的输出缓冲器和状态'1'的外部引脚值。
参数:
handler
是一个可选的函数,在中断触发时调用trigger
配置可以触发中断的事件。可能的值是:Pin.IRQ_FALLING
下降沿中断Pin.IRQ_RISING
上升沿中断Pin.IRQ_RISING_FALLING
上升沿或下降沿中断Pin.IRQ_LOW_LEVEL
低电平中断Pin.IRQ_HIGH_LEVEL
高电平中断
常量
下面的常量用来配置 Pin
对象。
选择引脚模式:
Pin.IN
Pin.OUT
Pin.OPEN_DRAIN
选择上/下拉模式:
Pin.PULL_UP
Pin.PULL_DOWN
None
使用值 None
代表不进行上下拉。
选择中断触发模式:
Pin.IRQ_FALLING
Pin.IRQ_RISING
Pin.IRQ_RISING_FALLING
Pin.IRQ_LOW_LEVEL
Pin.IRQ_HIGH_LEVEL
示例一
控制引脚输出高低电平信号,并读取按键引脚电平信号。
from machine import Pin
PIN_OUT = 31
PIN_IN = 58
p_out = Pin(("PB15", PIN_OUT), Pin.OUT_PP)
p_out.value(1) # set io high
p_out.value(0) # set io low
p_in = Pin(("key_0", PIN_IN), Pin.IN, Pin.PULL_UP)
print(p_in.value() ) # get value, 0 or 1
示例二
上升沿信号触发引脚中断后执行中断处理函数。
from machine import Pin
PIN_KEY0 = 58 # PD10
key_0 = Pin(("key_0", PIN_KEY0), Pin.IN, Pin.PULL_UP)
def func(v):
print("Hello rt-thread!")
key_0.irq(trigger=Pin.IRQ_RISING, handler=func)
更多内容可参考 machine.Pin 。
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论