我执行以下代码:
GpioCtrlRegs.GPADIR.bit.GPIO0 = 1;
GpioCtrlRegs.GPADIR.bit.GPIO1 = 1;
最后GPADIR寄存器的值是0x0001.如果我使用如下代码:
GpioCtrlRegs.GPADIR.all = 0x0003;
则可以正常赋值.我使用ControlSuite的v210版本,TMS320F28027.
完整代码:
#include "DSP28x_Project.h"
#ifdef TOFLASH
extern void MemCopy(Uint16 *SourceAddr, Uint16* SourceEndAddr, Uint16* DestAddr);
extern Uint16 RamfuncsLoadStart;
extern Uint16 RamfuncsLoadEnd;
extern Uint16 RamfuncsRunStart;
#endif
void main(void)
{
InitSysCtrl();
InitGpio();
GpioCtrlRegs.GPADIR.bit.GPIO0 = 1;
GpioCtrlRegs.GPADIR.bit.GPIO1 = 1;
GpioDataRegs.GPACLEAR.bit.GPIO0 = 1;
GpioDataRegs.GPACLEAR.bit.GPIO1 = 1;
GpioCtrlRegs.GPADIR.bit.GPIO12 = 0;
GpioCtrlRegs.GPAPUD.bit.GPIO12 = 0;
GpioCtrlRegs.GPAQSEL1.bit.GPIO12 = 0x02;
GpioCtrlRegs.GPACTRL.bit.QUALPRD1 = 0xFF;
#ifdef TOFLASH
MemCopy(&RamfuncsLoadStart, &RamfuncsLoadEnd, &RamfuncsRunStart);
InitFlash();
#endif
for (;;)
{
if(GpioDataRegs.GPADAT.bit.GPIO12){
GpioDataRegs.GPASET.bit.GPIO1 = 1;
GpioDataRegs.GPASET.bit.GPIO0 = 1;
}
}
}

