使用micropython初始化UART总线,我收到错误"missing 1 requires positional arguments"



我有以下代码,我试图在ESP-WROOM-32上运行:

from machine import UART
def do_uart_things():
uart = UART.init(baudrate=9600, bits=8, parity=None, stop=1, rx=34,tx=35)
do_uart_things()

我正在尝试根据文档初始化一个总线:https://docs.micropython.org/en/latest/library/machine.UART.html。文档建议只需要波特率,位,奇偶校验和停止,但是我得到了"需要1个额外的位置参数";错误。我不明白为什么会出现这个错误。

我还假设rx和tx参数自动转换为正确类型的引脚,根据UART类的需要,而不是我必须手动管理它。

我已经设法得到稍微类似的代码工作:

from machine import UART
def do_uart_things():
uart = UART(1,9600)
uart.init(baudrate=9600, bits=8, parity=None, stop=1, rx=34,tx=35)
#Pin numbers taken from ESP data sheet--they might not be correctly formatted
do_uart_things()

这让我认为文档是无意的误导,主要的例子并不是打算作为"这样或那样初始化它",而是要求这两件事都做。

我认为后面的代码示例是使用micropython UART功能的正确方法是正确的吗?我也愿意参考任何在micropython中使用UART和I2C的好例子,因为我发现文档有点害羞…

"UART对象可以使用:…"可能有点误导人。他们的意思是对象只能通过使用构造函数来创建,但是它可以通过构造函数初始化,或者在对象创建之后使用init方法初始化。

如您所见,类构造函数需要第一个参数id,而方法init()则不需要。所以你可以使用构造函数
uart = UART(1,baudrate=9600, bits=8, parity=None, stop=1, rx=34,tx=35)

但是你不能使用UART.init(),因为这不是一个构造函数,而是一个方法,所以它需要操作一个实例,而不是一个类。

相关内容

最新更新