问题总结(帮你们节约时间)
pinMode()设置引脚为输入或输出模式,通过配置寄存器实现。- 输入模式接收外部信号,输出模式发送信号到外部设备。
digitalWrite()设置引脚电平(HIGH或LOW),通过修改输出控制寄存器实现。digitalRead()读取引脚当前状态(高电平或低电平),通过访问输入状态寄存器读取值。
当我们使用Arduino IDE编写代码时,pinMode()、digitalWrite()和digitalRead()这些函数似乎是轻而易举就能使用的工具。但你是否好奇过这些函数是如何在芯片内部工作的?让我们一起揭开这些函数的底层神秘面纱。
1. pinMode()的“双重生活”:输入模式与输出模式
pinMode(pin, mode)函数的核心作用是设置特定的GPIO引脚为输入模式或输出模式。这种设置直接影响到引脚如何与外部电路交互。
输入模式与输出模式的区别:
-
输入模式(INPUT): 引脚被配置为接收外部信号。当外部设备(如按钮、传感器)连接到该引脚时,引脚会根据外部信号的变化改变自身的电平状态。
-
输出模式(OUTPUT): 引脚被配置为发送信号到外部设备。通过改变该引脚的电平状态(高电平或低电平),可以控制外部设备(如LED、继电器)的工作状态。
底层实现:
在ESP32S3芯片中,每个GPIO引脚都有一个对应的配置寄存器。当你调用pinMode(pin, mode)时,Arduino IDE会生成代码,通过SPI或I2C等总线协议,向芯片内部的特定寄存器写入配置数据,以设置引脚的工作模式。
例如,当你调用以下代码:
pinMode(0, INPUT);
Arduino IDE实际上会生成类似以下的代码片段:
GPIO0_Mode_Conf_REG

最低0.47元/天 解锁文章
1064

被折叠的 条评论
为什么被折叠?



