Other Parts Discussed in Thread: TM4C129DNCPDT
器件型号: TM4C129DNCPDT
我尝试将 PD7 用作 TM4C129DNCPDT 上的 NMI 输入。
要求:
- PD7 应为空闲低电平。
- 当 PD7 从低电平转换为高电平(上升沿)时、MCU 应进入 NMI 处理程序。
- 在 NMI 处理程序内部、我想执行一些应用程序代码、例如递增计数器并驱动输出引脚。
我遵循了此处讨论的 NMI 配置:
我的 PD7 初始化是:
HWREG(GPIO_PORTD_BASE + GPIO_O_LOCK) = GPIO_LOCK_KEY;
HWREG(GPIO_PORTD_BASE + GPIO_O_CR) |= GPIO_PIN_7;
GPIOPinConfigure(GPIO_PD7_NMI);
GPIOPadConfigSet(GPIO_PORTD_BASE,
GPIO_PIN_7,
GPIO_STRENGTH_2MA,
GPIO_PIN_TYPE_STD_WPD);
GPIODirModeSet(GPIO_PORTD_BASE,
GPIO_PIN_7,
GPIO_DIR_MODE_HW);
我的 NMI 处理程序是:
static void nmiHandler(UArg arg)
{
SysCtlNMIClear(SysCtlNMIStatus());
SysCtlDelay(5);
putsUserNull("\nNMI Detected");
counnt++;
GPIOPinWrite(GPIO_PORTM_BASE,
GPIO_PIN_3,
GPIO_PIN_3);
}
但是、当 PD7 从低电平转换为高电平时、从不会进入 NMI 处理程序。
我的问题是:
- TM4C1294 NMI 输入是支持上升沿检测、还是仅对电平敏感?
- 除了将 PD7 分配给以外
GPIO_PD7_NMI、是否还需要其他 NMI 配置? - NMI 处理程序的寄存是否需要与正常中断不同、以不同的方式在向量表中注册?
- 是否
SysCtlNMIClear()足够、或者是否有额外的必须清除的状态位? - 弱下拉配置 (
GPIO_PIN_TYPE_STD_WPD) 是否适用于空闲低 NMI 输入?
任何显示可正常进行 PD7 到 NMI 配置的示例都将不胜感激。


