在InitGpio函数中,有如下语句:
// Pull-ups can be enabled or disabled. GpioCtrlRegs.GPAPUD.all = 0x0000; // Pullup's enabled GPIO0-GPIO31
GpioCtrlRegs.GPBPUD.all = 0x0000; // Pullup's enabled GPIO32-GPIO63
GpioCtrlRegs.GPCPUD.all = 0x0000; // Pullup's enabled GPIO64-GPIO79
//GpioCtrlRegs.GPAPUD.all = 0xFFFF; // Pullup's disabled GPIO0-GPIO31
//GpioCtrlRegs.GPBPUD.all = 0xFFFF; // Pullup's disabled GPIO32-GPIO34
//GpioCtrlRegs.GPCPUD.all = 0xFFFF // Pullup's disabled GPIO64-GPIO79
这里的赋值语句中,4位16进制数是16位2进制数,然而以GPAPUD为例,它所对应的union定义是32位的,如下所示:
union GPADAT_REG {
Uint32 all;
struct GPADAT_BITS bit;
};
对于enable的情况,是否可理解成赋值为0后,所有的位都是0?
对于disable的情况,给低16位赋值后高16位是怎样的情况?
谢谢解答!
mangui zhang:
你贴出的代码赋值后肯定都是0或1
从联合体定义可以看出是32bit 也就是GPIO0-GPIO31
在InitGpio函数中,有如下语句:
// Pull-ups can be enabled or disabled. GpioCtrlRegs.GPAPUD.all = 0x0000; // Pullup's enabled GPIO0-GPIO31
GpioCtrlRegs.GPBPUD.all = 0x0000; // Pullup's enabled GPIO32-GPIO63
GpioCtrlRegs.GPCPUD.all = 0x0000; // Pullup's enabled GPIO64-GPIO79
//GpioCtrlRegs.GPAPUD.all = 0xFFFF; // Pullup's disabled GPIO0-GPIO31
//GpioCtrlRegs.GPBPUD.all = 0xFFFF; // Pullup's disabled GPIO32-GPIO34
//GpioCtrlRegs.GPCPUD.all = 0xFFFF // Pullup's disabled GPIO64-GPIO79
这里的赋值语句中,4位16进制数是16位2进制数,然而以GPAPUD为例,它所对应的union定义是32位的,如下所示:
union GPADAT_REG {
Uint32 all;
struct GPADAT_BITS bit;
};
对于enable的情况,是否可理解成赋值为0后,所有的位都是0?
对于disable的情况,给低16位赋值后高16位是怎样的情况?
谢谢解答!
Yuxiang Wang:
回复 mangui zhang:
我估计也是这样的结果。
但问题是16位的值怎么赋给32位的?