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.

TM4C123 进不了外部中断,用示波器看了,有波形。

外部中断初始化及服务函数:
/* PF4 */
void vGPIO_PortFIntHandler(void)
{
    uint32_t ui32Mode;
    uint32_t ui32Status;
    ui32Status = GPIOIntStatus(GPIO_PORTF_BASE, true);
    GPIOIntClear(GPIO_PORTF_BASE,GPIO_INT_PIN_4);
    ui32Mode = uDMAChannelModeGet(UDMA_CHANNEL_ADC1|UDMA_PRI_SELECT);
    
    if(ui32Mode == UDMA_MODE_STOP)
    {
        g_ui32MemXferCount++;
        if(g_ui32MemXferCount>5000) g_ui32MemXferCount=0;
        uDMAChannelTransferSet(UDMA_CHANNEL_ADC1|UDMA_PRI_SELECT, UDMA_MODE_BASIC,
                              (void *)( GPIO_PORTE_BASE+GPIO_O_DATA),
                              image, OV7725_SIZE);
        uDMAChannelEnable(UDMA_CHANNEL_ADC1);
    }
    if(!uDMAChannelIsEnabled(UDMA_CHANNEL_ADC1))
    {
        uDMAChannelTransferSet(UDMA_CHANNEL_ADC1|UDMA_PRI_SELECT, UDMA_MODE_BASIC,
        (void *)(GPIO_PORTB_BASE+GPIO_O_DATA ), image, OV7725_SIZE);//
        uDMAChannelEnable(UDMA_CHANNEL_ADC1);
    }
}

void exit_init(void)
{
    /* problem unsolved */
    SysCtlPeripheralEnable(SYSCTL_PERIPH_GPIOF);


    GPIOPinTypeGPIOOutput(GPIO_PORTF_BASE, GPIO_PIN_1);
    GPIOPinWrite(GPIO_PORTF_BASE, GPIO_PIN_1, 0);
    
    GPIODMATriggerEnable(GPIO_PORTF_BASE,GPIO_PIN_4);//此处有问题,加上这个函数就不能触发了

    GPIODirModeSet(GPIO_PORTF_BASE, GPIO_PIN_4, GPIO_DIR_MODE_IN);

    GPIOPadConfigSet(GPIO_PORTF_BASE, GPIO_PIN_4, GPIO_STRENGTH_2MA, GPIO_PIN_TYPE_STD_WPD);

    GPIOIntRegister(GPIO_PORTF_BASE, vGPIO_PortFIntHandler);

    GPIOIntTypeSet(GPIO_PORTF_BASE, GPIO_PIN_4, GPIO_RISING_EDGE);

    GPIOIntEnable(GPIO_PORTF_BASE, GPIO_INT_PIN_4);

    IntEnable(INT_GPIOF);
    
    IntPrioritySet(INT_GPIOF, 0);
    
    GPIOIntClear(GPIO_PORTF_BASE, GPIO_INT_PIN_4);
}

另有DMA初始化
void dma_init(void)
{
    {
    /* 数据线 */
    SysCtlPeripheralEnable(SYSCTL_PERIPH_GPIOB);
    GPIODirModeSet(GPIO_PORTB_BASE, GPIO_PIN_0, GPIO_DIR_MODE_IN);
    GPIOPadConfigSet(GPIO_PORTB_BASE, GPIO_PIN_0, GPIO_STRENGTH_2MA, GPIO_PIN_TYPE_STD_WPD);
    delayUs(5);
    GPIODirModeSet(GPIO_PORTB_BASE, GPIO_PIN_1, GPIO_DIR_MODE_IN);
    GPIOPadConfigSet(GPIO_PORTB_BASE, GPIO_PIN_1, GPIO_STRENGTH_2MA, GPIO_PIN_TYPE_STD_WPD);
    delayUs(5);
    GPIODirModeSet(GPIO_PORTB_BASE, GPIO_PIN_2, GPIO_DIR_MODE_IN);
    GPIOPadConfigSet(GPIO_PORTB_BASE, GPIO_PIN_2, GPIO_STRENGTH_2MA, GPIO_PIN_TYPE_STD_WPD);
    delayUs(5);
    GPIODirModeSet(GPIO_PORTB_BASE, GPIO_PIN_3, GPIO_DIR_MODE_IN);
    GPIOPadConfigSet(GPIO_PORTB_BASE, GPIO_PIN_3, GPIO_STRENGTH_2MA, GPIO_PIN_TYPE_STD_WPD);
    delayUs(5);
    GPIODirModeSet(GPIO_PORTB_BASE, GPIO_PIN_4, GPIO_DIR_MODE_IN);
    GPIOPadConfigSet(GPIO_PORTB_BASE, GPIO_PIN_4, GPIO_STRENGTH_2MA, GPIO_PIN_TYPE_STD_WPD);
    delayUs(5);
    GPIODirModeSet(GPIO_PORTB_BASE, GPIO_PIN_5, GPIO_DIR_MODE_IN);
    GPIOPadConfigSet(GPIO_PORTB_BASE, GPIO_PIN_5, GPIO_STRENGTH_2MA, GPIO_PIN_TYPE_STD_WPD);
    delayUs(5);
    GPIODirModeSet(GPIO_PORTB_BASE, GPIO_PIN_6, GPIO_DIR_MODE_IN);
    GPIOPadConfigSet(GPIO_PORTB_BASE, GPIO_PIN_6, GPIO_STRENGTH_2MA, GPIO_PIN_TYPE_STD_WPD);
    delayUs(5);
    GPIODirModeSet(GPIO_PORTB_BASE, GPIO_PIN_7, GPIO_DIR_MODE_IN);
    GPIOPadConfigSet(GPIO_PORTB_BASE, GPIO_PIN_7, GPIO_STRENGTH_2MA, GPIO_PIN_TYPE_STD_WPD);
    delayUs(5);
    }
    
    SysCtlPeripheralEnable(SYSCTL_PERIPH_UDMA);
    uDMAEnable();
    uDMAControlBaseSet(ControlTable);
    IntEnable(INT_UDMA);
    uDMAChannelAssign(UDMA_CH15_GPIOF);
    
    uDMAChannelControlSet(UDMA_CHANNEL_ADC1 | UDMA_PRI_SELECT,
                        UDMA_SIZE_8| UDMA_SRC_INC_NONE| UDMA_DST_INC_8 |UDMA_ARB_8);

    uDMAChannelAttributeDisable(UDMA_CHANNEL_ADC1,
                UDMA_ATTR_USEBURST | UDMA_ATTR_ALTSELECT |
                (UDMA_ATTR_HIGH_PRIORITY |
                UDMA_ATTR_REQMASK));
    //uDMAChannelAttributeEnable(UDMA_CHANNEL_ADC1,UDMA_ATTR_HIGH_PRIORITY);
    uDMAChannelTransferSet(UDMA_CHANNEL_ADC1 | UDMA_PRI_SELECT,
                           UDMA_MODE_BASIC ,
                           (void *)(GPIO_PORTB_BASE+GPIO_O_DATA),
                           image, OV7725_SIZE);
    
    //uDMAChannelEnable(UDMA_CHANNEL_ADC1); 
}