HWREG(GPIO_PORTD_BASE + GPIO_O_LOCK) = GPIO_LOCK_KEY;//解锁HWREG(GPIO_PORTD_BASE + GPIO_O_CR) |= 0x80;//确认HWREG(GPIO_PORTD_BASE + GPIO_O_LOCK) = 0;//重新锁定
SysCtlPeripheralEnable(SYSCTL_PERIPH_GPIOD);GPIODirModeSet(GPIO_PORTD_BASE, GPIO_PIN_6 | GPIO_PIN_7, GPIO_DIR_MODE_IN);GPIOPadConfigSet(GPIO_PORTD_BASE, GPIO_PIN_6 | GPIO_PIN_7, GPIO_STRENGTH_2MA, GPIO_PIN_TYPE_STD_WPU);
如上程序,当执行到第二行的时候程序产生fault interrupt,并且进入FaultISR(void){}函数中的死循环,一直找不到原因和解决办法,希望能得到帮助,谢谢!
另外“AY-MSE-Kit_例程_For_Tiva LP”中".\Code_pro\CH3\CH3_1_LCD"中的例程对PD7的解锁代码为:
HWREG(GPIO_PORTD_BASE+GPIO_O_LOCK) |= GPIO_LOCK_KEY; HWREG(GPIO_PORTD_BASE+GPIO_O_CR)|= (1<<7); HWREG(GPIO_PORTD_BASE+GPIO_O_DEN) &=(~(1<<7)); HWREG(GPIO_PORTD_BASE+GPIO_O_PDR) &= (~(1<<7)); HWREG(GPIO_PORTD_BASE+GPIO_O_PUR) &= (~(1<<7)); HWREG(GPIO_PORTD_BASE+GPIO_O_AFSEL) &=(~(1<<7));
上面是不是有差错,第一行应该直接赋值解锁,但还是一直都调不出来,同样会引发fault interrupt。
xyz549040622:
是不是系统主频的设置问题呢,你加个延时看看。这个解锁的代码是正确的。