This thread has been locked.
If you have a related question, please click the "Ask a related question" button in the top right corner. The newly created question will be automatically linked to this question.
GPIO28配置如下:
GpioCtrlRegs.GPAPUD.bit.GPIO28 = 0; // enable Pullup GpioCtrlRegs.GPAMUX2.bit.GPIO28 = 0; // Function as Gpio GpioCtrlRegs.GPADIR.bit.GPIO28 = 1; // 0uput GpioDataRegs.GPADAT.bit.GPIO28 = 0;
DEBUG模式下:CPU RESET后GPADAT数据寄存器状态如图所示:
你好,请问你是指复位之后的GPIO状态,还是初始化之后的GPIO状态?
如果是前者,那么GPIO内部有一个复位上拉电阻不知道你有没有使能。如果没有使能,那复位之后的GPIO电平应该是随机的,你要确保是低电平的话可以加一个外部弱下拉
如果是后者,那你修改一下寄存器配置就行了
你的寄存器状态截图是程序运行到什么位置之后的截图?单步运行一次上面的GPIO配置代码之后的结果是怎么样的?还是1?
复位之后,初始化之前的GPIO状态;如果没有设置内部上拉的话GPIO的状态是浮空的吗?如果设置了内部上拉那么复位后GPIO输出就是3.3V吗?
这个寄存器状态截图是DEBUG模式下点击CPU RESET后,GPADAT数据寄存器状态;此时程序未运行。
如果没有设置内部上拉的话GPIO的状态是浮空的吗?
应该是一个随机的高或低电平。
如果设置了内部上拉那么复位后GPIO输出就是3.3V吗?
是的
这个寄存器状态截图是DEBUG模式下点击CPU RESET后,GPADAT数据寄存器状态;此时程序未运行。
这样的话你的截图就是正常的。你的代码使能了pullup,复位之后程序还没接管GPIO,所以GPADAT读取的状态是高。
但是如果你要确保GPIO复位之后的电平是低电平的话,只能一方面禁用内部上拉,一方面外部加弱下拉电路。
有作用,因为加的是弱下拉,复位的时候GPIO的控制代码还没起作用,此时GPIO作为输出口也没有什么驱动能力,所以用弱下拉就能将GPIO拉低。
一旦GPIO被代码接管,弱下拉就会“失效”,对程序的运行也没什么影响
同样的操作在对boot引脚的配置上也有效。