目前在写一个摄像头驱动,如何通过一个gpio来引起一次DMA的传输来获取另外GPIO的数据
Susan Yang:
您可以看一下
tiva.txwilley.com/group__gpio__api.html
Vacabun:
回复 Susan Yang:
使用了GPIODMATriggerEnable以后还有怎么配置呢
Vacabun:
回复 Susan Yang:
我是这样设置的 但是没有成功
void initudma()
{SysCtlPeripheralEnable(SYSCTL_PERIPH_GPIOA);HWREG(GPIO_PORTA_BASE + GPIO_O_LOCK) = GPIO_LOCK_KEY;HWREG(GPIO_PORTA_BASE + GPIO_O_CR) |= 0x01;HWREG(GPIO_PORTA_BASE + GPIO_O_LOCK) = 0;GPIOPinTypeGPIOInput(GPIO_PORTA_BASE, GPIO_PIN_6);GPIOIntTypeSet(GPIO_PORTA_BASE,GPIO_PIN_6,GPIO_FALLING_EDGE);GPIOPadConfigSet(GPIO_PORTA_BASE,GPIO_PIN_6,GPIO_STRENGTH_2MA, GPIO_PIN_TYPE_STD_WPU);GPIODMATriggerEnable(GPIO_PORTA_BASE,GPIO_PIN_6); uDMAIntRegister(UDMA_CHANNEL_USBEP3RX,PCLKIntHandler);SysCtlPeripheralEnable(SYSCTL_PERIPH_UDMA);uDMAChannelAssign(UDMA_CH4_GPIOA);uDMAEnable();uDMAControlBaseSet(&pui8ControlTable[0]);uDMAChannelAttributeDisable(UDMA_CHANNEL_USBEP3RX ,UDMA_ATTR_ALL);uDMAChannelControlSet(UDMA_CHANNEL_USBEP3RX| UDMA_PRI_SELECT, UDMA_SIZE_8 | UDMA_SRC_INC_NONE | UDMA_DST_INC_NONE );uDMAChannelTransferSet(UDMA_CHANNEL_USBEP3RX| UDMA_PRI_SELECT,UDMA_MODE_AUTO, (void *)(GPIO_PORTB_BASE+GPIO_O_DATA+(0xff<<2)), &g_ui32DstBuf,sizeof(g_ui32DstBuf));uDMAChannelEnable(UDMA_CHANNEL_USBEP3RX);
}
void PCLKIntHandler(void)
{uDMAIntClear(UDMA_CHANNEL_USBEP3RX);UARTCharPut(UART0_BASE,0x33);
}
Vacabun:
回复 Susan Yang:
添加了这个成功了
IntEnable(INT_UDMA);
谢谢
Susan Yang:
回复 Vacabun:
很高兴能帮助您