被用做输入的端口无法真实反映出外部的高低电平状态。
排除了外部的因素后,发现GPIO用做输入的时候,MCU内部的上拉电路仍然在起作用,并且影响着输入信号的电平状态。
解决方法:
由于GPIO端口(除了可以用作ePWM的端口)默认开启了内部上拉功能,因此:
用做输入端口时一定要关闭对应管脚内部的上拉功能。
涉及到的寄存器为:GPAPUD / GPBPUD。
被用做输入的端口无法真实反映出外部的高低电平状态。
EALLOW;
SysCtrlRegs.CLKCTL.all = 0x2400;
SysCtrlRegs.CLKCTL.all = 0x2401;
if (SysCtrlRegs.PLLSTS.bit.MCLKSTS != 1)
{
SysCtrlRegs.PLLSTS.bit.MCLKOFF = 1;
SysCtrlRegs.PLLSTS.bit.DIVSEL = 0;
SysCtrlRegs.PLLCR.bit.DIV = 0x000C;
while(SysCtrlRegs.PLLSTS.bit.PLLLOCKS != 1)
{
SysCtrlRegs.WDKEY = 0x0055;
SysCtrlRegs.WDKEY = 0x00AA;
}
SysCtrlRegs.PLLSTS.bit.MCLKOFF = 0;
DelayUs(20/2);
SysCtrlRegs.PLLSTS.bit.DIVSEL = 0x2;
}
else
{
asm(" ESTOP0");
}
SysCtrlRegs.CLKCTL.all = 0x2501;
EDIS;