工具与软件:
您好!
采用 TI RTOS 的 TM4C129DNCPDT 微控制器。 为我的应用程序实现 NMI 处理程序。
使用 GPIOD-GPIO7-NMI 处理程序
下面是代码:
GPIO 初始化:
_Bool initPortD (void)
{
uint8_t InitTry = 0;
应执行的操作
{
MAP_SysCtlPeripheralEnable (SYSCTL_PERIPH_GPIOD);
if (InitTry++>= peripheral_init_try_times)
{
return __fail;
}
appSystemDelay (SYS_DELAY);
}
while (! MAP_SysCtlPeripheralReady (SYSCTL_PERIPH_GPIOD));
MAP_GPIOPinTypeDIVSCLK (GPIO_PORTD_BASE、GPIO_PIN_7);
MAP_GPIOPinTypeGPIOOutput (GPIO_PORTD_BASE、GPIO_PIN_5 | GPIO_PIN_1);
MAP_GPIOUnlockPin (GPIO_PORTD_BASE、GPIO_PIN_7);
MAP_GPIOPinTypeGPIOInput (GPIO_PORTD_BASE、GPIO_PIN_7);
HWREG (GPIO_PORTD_BASE + GPIO_LOCK)= GPIO_LOCK_KEY;
HWREG (GPIO_PORTD_BASE + GPIO_CR)|= GPIO_PIN_7;
HWREG (GPIO_PORTD_BASE + GPIO_LOCK)= 0;
GPIOPinConfigure (GPIO_PD7_NMI);
IntRegister (FAULT_NMI、nmiHandler);
IntEnable (FAULT_NMI);
return _pass;
}
// NMI 处理程序
void nmiHandler (void)
{
MAP_GPIOIntClear (GPIO_PORTD_BASE、GPIO_PIN_7);
nmiFlag = true;
GPIOPinWrite (GPIO_PORTM_BASE、GPIO_PIN_3、GPIO_PIN_3);
}
以上是代码。
同时调试功能
__attribute__((section (".text:abort"))
void 中止(void)
{
#if defined (EMBED_CIO_BP)
__ asm (".global C$EXITE");
#if defined (__32bis__)
_asm ("C$$EXITE:.word 0xDEFED0FE");
#else
_asm (".align 4");
#if defined (__big_endian__)
_asm ("C$$EXITE:.half 0xDEFE");
#else
_asm ("C$$EXITE:.half 0xD0FE");
#endif /*__big_endian__*/
#endif /*__32bis_*/
#else /*! Embedded_CIO_BP *
_asm (".global C$$EXIT");
__ asm ("C$$EXIT:NOP");
#endif
for (;;);/*永久旋转*/
}
请帮助解决该问题。 是否可以通过 UART 通知 NMI 发生?
提前感谢。

