我连接了一个简单的电路,一个LED连接到BOARD参考上的引脚18。我运行一个简单的程序将引脚18设置为HIGH,这将打开LED,然后几秒钟后,将引脚18设置为LOW,最后我使用GPIO.cleanup()结束程序。

此时LED熄灭,这意味着引脚18处于关闭状态(低)。现在,我重新启动或重新启动Raspberry Pi,当它重新启动时,即使重新启动Raspberry Pi之前该引脚已关闭,插针18上的LED仍会再次点亮。

为什么会这样发生了什么?当Raspberry Pi启动时,如何配置特定的引脚(例如引脚18)为关闭?而且我不希望Raspberry Pi启动时任何GPIO引脚都处于高电平。

我担心这个问题,因为我们可以说引脚18连接到机器人上的DC电动机。 ,并且在Raspberry Pi启动时,电机将打开,这不是我想要的,因为这会干扰机器人的整个结构,并且某些电机可能会启动而其他电机则不会,具体取决于引脚他们连接到。我想以同步方式手动打开所有电机。

另一件事是,并非所有的插针都有此问题。当Raspberry Pi启动时,有些会停下来,而有些则不会。

评论

该LED是否像您将其设置为高时那样明亮地点亮,或者它只是发出暗淡的光?

施加了3.3伏电压。

因此,如果您进入/ sys / class / gpio并导出针18,那么如果您不进行任何更改,系统会说它处于什么状态?

当我写“ / sys / class / gpio”时,它说“ -bash:/ sys / class / gpio:是目录”。我不确定如何导出特定的图钉。

对此有很多解释,所以我不会反省。这个例子在回声上有点沉重,回声写了,就是设置了一些东西。导出后,您要避免使用它,而只使用cat(读取)来检查方向和值。

#1 楼

上电时,GPIO通过内部电阻拉高或拉低。 BCM2835 ARM外设的第102页上详细介绍了特定GPIO的上拉是高还是低。

随着Linux内核的启动以及设备树的启用(可能),它将重新配置GPIO根据设备树设置。从/etc/modules加载的模块还可以更新GPIO状态。

在启动时运行的任何其他软件都可能在设备树设置和模块加载之后潜在地重新配置GPIO。

如果您的硬件可能在系统启动时被错误触发,那么找到硬件解决方案是最安全的。

#2 楼

当Raspberry Pi启动时,GPIO线会重置为芯片默认设置,然后会加载操作系统并将其重置为操作系统默认设置。无法在重新启动过程中“记住”设置。另请参见GPIO的上电状态是什么?和GPIO引导后的状态。

#3 楼

我知道已经很晚了。要回答。
您可以编写python脚本或bash脚本,以手动将引脚设置为低电平,并计划cron作业在每次引导时运行。您无需修改​​任何系统/关键文件。
除cron之外