TM4C123TIVA库里一个关于外部中断的BUG
TM4C123TIVA库里一个关于外部中断的BUG
我想用外部中断来进行超声波采集时,将引脚设为了双边延中断,但是发现ECHO引脚始终进不了中断里,甚至可能会卡死!
我查阅我的代码,然后去网上对比。发现TM4C123不支持单独某一个引脚中断,但是TIVA库里提供着这个函数,函数如下:
void
GPIOIntRegisterPin(uint32_t ui32Port, uint32_t ui32Pin,
void (*pfnIntHandler)(void))
{
uint32_t ui32Int;
//
// Check the arguments.
//
ASSERT((ui32Port == GPIO_PORTP_BASE) || (ui32Port == GPIO_PORTQ_BASE));
ASSERT((ui32Pin > 0) && (ui32Pin < 8));
ASSERT(pfnIntHandler != 0);
//
// Get the interrupt number associated with the specified GPIO.
//
ui32Int = _GPIOIntNumberGet(ui32Port);
//
// Register the interrupt handler.
//
IntRegister((ui32Int + ui32Pin), pfnIntHandler);
//
// Enable the GPIO pin interrupt.
//
IntEnable(ui32Int + ui32Pin);
}
我是真搞明白,明明不支持这个操作,为啥还要提供。正确使用的中断函数为下面这个:
void
GPIOIntRegister(uint32_t ui32Port, void (*pfnIntHandler)(void))
{
uint32_t ui32Int;
//
// Check the arguments.
//
ASSERT(_GPIOBaseValid(ui32Port));
//
// Get the interrupt number associated with the specified GPIO.
//
ui32Int = _GPIOIntNumberGet(ui32Port);
ASSERT(ui32Int != 0);
//
// Register the interrupt handler.
//
IntRegister(ui32Int, pfnIntHandler);
//
// Enable the GPIO interrupt.
//
IntEnable(ui32Int);
}
sbTI。

浙公网安备 33010602011771号