TI中文支持网
TI专业的中文技术问题搜集分享网站

TMS230C28335中GPIO相关寄存器的赋值、位域定义的问题

在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位的?

赞(0)
未经允许不得转载:TI中文支持网 » TMS230C28335中GPIO相关寄存器的赋值、位域定义的问题
分享到: 更多 (0)