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。

posted @ 2024-01-23 00:21  夜泽大大  阅读(47)  评论(0)    收藏  举报