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.

TM4C1294NCPDT: UDMA与TIMER之间的数据传输

Part Number: TM4C1294NCPDT

请问如何配置UDMA为循环传输MemoryToPeriheral

将内存中的一个数组的值逐一传到TIMER2A的MATCH寄存器,每一次计数结束传输一次,达到生成不同占空比的PWM波形的目的。

目前我的代码配置为

//TIMER配置

SysCtlPeripheralEnable(SYSCTL_PERIPH_TIMER2);
TimerConfigure(TIMER2_BASE, TIMER_CFG_SPLIT_PAIR | TIMER_CFG_A_PWM);
TimerLoadSet(TIMER2_BASE, TIMER_A, 61);
TimerControlLevel(TIMER2_BASE, TIMER_A, true);
TimerDMAEventSet(TIMER2_BASE,TIMER_DMA_TIMEOUT_A);
TimerEnable(TIMER2_BASE, TIMER_A);

//UDMA配置为

uint8_t pui8ControlTable[1024];
SysCtlPeripheralEnable(SYSCTL_PERIPH_UDMA);
uDMAEnable();
uDMAControlBaseSet(pui8ControlTable);
uDMAChannelAttributeDisable(UDMA_SEC_CHANNEL_TMR2A_4, UDMA_ATTR_ALTSELECT | UDMA_ATTR_USEBURST | UDMA_ATTR_HIGH_PRIORITY | UDMA_ATTR_REQMASK);
uDMAChannelSelectSecondary(UDMA_DEF_USBEP3RX_SEC_TMR2A);
uDMAChannelAssign(UDMA_CH4_TIMER2A);
uDMAChannelAttributeEnable(UDMA_SEC_CHANNEL_TMR2A_4, UDMA_ATTR_USEBURST);
uDMAChannelControlSet(UDMA_SEC_CHANNEL_TMR2A_4 | UDMA_PRI_SELECT, UDMA_SIZE_32 | UDMA_SRC_INC_32 | UDMA_DST_INC_NONE | UDMA_ARB_4);
uDMAChannelTransferSet(UDMA_SEC_CHANNEL_TMR2A_4 | UDMA_PRI_SELECT,
UDMA_MODE_BASIC, buffer,
(void *)(TIMER2_BASE + TIMER_O_TAMATCHR), num);
uDMAChannelEnable(UDMA_SEC_CHANNEL_TMR2A_4);

 通过调试我发现该寄存器的值并不会变化,请问有什么好的办法去解决他吗