我使用的是RM48L950官方送的开发板,在对GIO模块进行调试时发现,1.无论怎样设置portA输入输出的方向(DIRECTION),我用万用表测得都是寄存器DIN(datainput)表示的电压值? 2.DIN的值在执行对方向寄存器DIR初始化后,都会变化。新手很困惑!谢谢!
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.
我使用的是RM48L950官方送的开发板,在对GIO模块进行调试时发现,1.无论怎样设置portA输入输出的方向(DIRECTION),我用万用表测得都是寄存器DIN(datainput)表示的电压值? 2.DIN的值在执行对方向寄存器DIR初始化后,都会变化。新手很困惑!谢谢!
Hi ron,
我用你的gio.c执行后的结果无论是F5还是F6调试,最后执行完gioInit()的结果是一样的。如下图所示。
图中可以看到DIN和DOUT并不一样。这是因为,你在初始化中,把开漏寄存器给使能了。
/** - Port A open drain enable */
gioPORTA->PDR = 1U /* Bit 0 */
| (1U << 1U) /* Bit 1 */
| (1U << 2U) /* Bit 2 */
| (1U << 3U) /* Bit 3 */
| (1U << 4U) /* Bit 4 */
| (1U << 5U) /* Bit 5 */
| (1U << 6U) /* Bit 6 */
| (1U << 7U); /* Bit 7 */
这样,引脚就需要在外部接上拉电阻。如果不接外部上拉,即使DOUT的值全为1,引脚悬空的话,引脚电平是不确定的,DIN的值就实际引脚电平决定。
所以,分析你得到的两个截图。
1. 你的板上GIOA引脚上是否有外部电路与之相连?是否每一次的DIN结果都相同?
2. 你得到的DIN=0xFF的那个截图,应该是刚刚执行完下面这一句时的结果,因为此时,开漏还未被使能。
/** - Port A direction */
/*1 output,0 input*/
gioPORTA->DIR = 1U /* Bit 0 */
| (1U << 1U) /* Bit 1 */
| (1U << 2U) /* Bit 2 */
| (1U << 3U) /* Bit 3 */
| (1U << 4U) /* Bit 4 */
| (1U << 5U) /* Bit 5 */
| (1U << 6U) /* Bit 6 */
| (1U << 7U); /* Bit 7 */
Regards,
Jay