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.

设置GPIO口作为dma的触发源



设置F3口作为dma的触发源,可以产生中断,但是用逻辑分析仪测过后,感觉它不是有F3控制

SysCtlPeripheralEnable(SYSCTL_PERIPH_UDMA); //使能外设uDMA
SysCtlPeripheralSleepEnable(SYSCTL_PERIPH_UDMA); //使能uDMA休眠模式
IntEnable(INT_UDMAERR); //使能uDMA错误中断
uDMAEnable(); //使能uDMA
// IntEnable(INT_UDMA); // 使能UDMA中断
uDMAControlBaseSet(pui8ControlTable);

SysCtlPeripheralEnable(SYSCTL_PERIPH_GPIOF); //使能GPIOF4时钟-----------CLK
GPIODMATriggerEnable(GPIO_PORTF_BASE,GPIO_PIN_3); //设置PF4为DMA触发源
GPIOPinTypeGPIOInput(GPIO_PORTF_BASE,GPIO_PIN_3); //设置F4为输入
GPIOPadConfigSet(GPIO_PORTF_BASE,GPIO_PIN_3,GPIO_STRENGTH_2MA, GPIO_PIN_TYPE_STD_WPU);//配置F4为上拉电阻 输出电流能力2mA
GPIOIntTypeSet(GPIO_PORTF_BASE,GPIO_PIN_3,GPIO_RISING_EDGE);//上升沿触发
GPIOIntRegister(GPIO_PORTF_BASE,GPIOIntHandler_HREF);
GPIOIntEnable(GPIO_PORTF_BASE,GPIO_PIN_3); //使能F4中断
IntEnable(INT_GPIOF);
IntMasterEnable();

uDMAChannelAssign(UDMA_CH15_GPIOF); //配置通道15GPIOF

// 这个函数是禁用uDMA通道的属性 GPIOF通道,连续模式转移|备用通道|高优先级|屏蔽该通道的外设请求信号
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);
//这个函数是设置uDMA转移的控制参数。 GPIOF通道|主控制,数据宽度32位|源地址增量0位|目的地址增量32位|仲裁数目8个数据单元
uDMAChannelControlSet(UDMA_CHANNEL_ADC1 | UDMA_PRI_SELECT,
UDMA_SIZE_8| UDMA_SRC_INC_NONE| UDMA_DST_INC_8 |UDMA_ARB_4);

//这个函数是配置uDMA转移参数。 GPIOF通道|主控制,基本传输模式,源地址,目的地址,传输数据项的数量
uDMAChannelTransferSet(UDMA_CHANNEL_ADC1 | UDMA_PRI_SELECT,
UDMA_MODE_BASIC , (void *)(GPIO_PORTB_BASE+GPIO_O_DATA), DST8_BUFF[0], sizeof(DST8_BUFF[0])); //
uDMAChannelEnable(UDMA_CHANNEL_ADC1); //使能uDMA通道 开始数据传输

希望大家帮帮我,1820808363