大家好、
客户想知道如何配置 UDMA 以在循环中传输内存 ToPerihal、将存储器中一个阵列的值一次传递到 TIMER2A 的匹配寄存器、在每个计数结束时传输以生成具有不同占空比的 PWM 波形。 该代码当前配置如下:
//定时器配置:
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_PRIOR| UDMA_ATTR_REQMASK);
uDMAChannelSelectSecondary (UDMA_DEF_USBEP3RX_SEC_TMR2A);
uDMAChannelAssign (UDMA_CH4_TIMER2A);
uDMAChannelAttributeEnable (UDMA_SEC_CHANGE_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_ARC_4);
uDMAChannelTransferSet (UDMA_SEC_CHANGE_TMR2A_4 | UDMA_PRI_SELECT、
UDMA_MODE_BASIC、缓冲器、
(void *)(TIMER2_base + TIMER_O_TAMATCHR)、num);
uDMAChannelEnable (UDMA_SEC_CHANGE_TMR2A_4);
在调试期间、发现寄存器的值仍然是缓冲区数组的最后一个值。 是否有办法解决这个问题?
您可以帮助检查此案例吗? 谢谢。
此致、
樱桃
