This thread has been locked.

If you have a related question, please click the "Ask a related question" button in the top right corner. The newly created question will be automatically linked to this question.

PD7解锁时产生fault interrupt,并且进入FaultISR(void){}函数中的死循环。

       

    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。