外部中断初始化及服务函数:
/* 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); }
Susan Yang:
我刚找到TM4C123的板子,测试一下后给您回复
wj z:
山外 – 副本.rar