工具/软件:Code Composer Studio
您好!
我想使用配置为 GPIO_PC5_WT0CCP1的 PC5、在上升沿捕获 WTIMER 0B 的定时器值、并在每个上升沿自动将定时器上的值传输到 UDMA、而无需重新加载或复位软件中的任何内容或使用中断。 这是可能的吗? 目前、我有以下代码、但我不确定它是我想要的、或者我是否已针对我想要的操作正确配置了它。 它看起来像乒乓模式可能尽可能接近连续传输、但我只需要写入相同的值、而无需缓冲器。 下面列出的代码仅是与 GPIO、定时器和 UDMA 相关的代码。 任何帮助都将不胜感激!!
HWREG (GPIO_PORTC_BASE + GPIO_LO_LOCK)= GPIO_LOCK_KEY_DD;
HWREG (GPIO_PORTC_BASE + GPIO_CR)= 0x01;
HWREG (GPIO_PORTC_BASE + GPIO_AFSEL)|= 1;
ROM_GPIOPinConfigure (GPIO_PC5_WT0CCP1);
ROM_GPIOPinTypeTimer (GPIO_PORTC_BASE、GPIO_PIN_5);//qmet V5 _00
//清除提交和锁定寄存器以保证安全。
HWREG (GPIO_PORTC_BASE + GPIO_LO_LOCK)= GPIO_LOCK_KEY_DD;
HWREG (GPIO_PORTC_BASE + GPIO_CR)= 0x00;
HWREG (GPIO_PORTC_BASE + GPIO_LOCK)= 0;
ROM_SysCtlPeripheralEnable (SYSCTL_Periph_UDMA);
ROM_TimerConfigure (WTIMEER0_BASE、TIMER_CFG_SPLIT_PAIR | TIMER_CFG_B_CAP_TIME_UP);
ROM_TimerControlEvent (WTIMER 0_BASE、TIMER_B、TIMER_EVENT_POS_EDGE);
//必须在配置之前启用 UDMA
ROM_uDMAEnable();
//指向控制表以用于通道控制结构体。
ROM_uDMAControlBaseSet (pui8ControlTable);
//设置 uDMA 控制设置,将数据从 WTIMEER0B 传输到位置
ROM_uDMAChannelAttributeDisable (UDMA_CH11_WTIMER 0B、UDMA_ATTR_ALTSELECT | UDMA_ATTR_USEBURST | UDMA_ATTR_HIGH_PRIORITY | UDMA_ATTR_REQMASK);
ROM_uDMAChannelControlSet (UDMA_CH11_WTIMER0B | UDMA_PRI_SELECT、UDMA_SIZE_32 | UDMA_SRC_INC_NONE | UDMA_DST_INC_NONE | UDMA_ARB_1);
ROM_uDMAChannelControlSet (UDMA_CH11_WTIMER0B | UDMA_ALT_SELECT、UDMA_SIZE_32 | UDMA_SRC_INC_NONE | UDMA_DST_INC_NONE | UDMA_ARB_1);
ROM_uDMAChannelTransferSet (UDMA_CH11_WTIMER 0B | UDMA_PRI_SELECT、UDMA_MODE_PINGONG、(void *)(WTIMER 0_BASE + TIMER_B)、&ULDutyTimer、sizeof (ulDutyTimer));
ROM_uDMAChannelTransferSet (UDMA_CH11_WTIMER 0B | UDMA_ALT_SELECT、UDMA_MODE_PINGONG、(void *)(WTIMER 0_BASE + TIMER_B)、&ULDutyTimer、sizeof (ulDutyTimer));
ROM_uDMAChannelAttributeEnable (UDMA_CH11_WTIMER 0B、UDMA_ATTR_USEBURST);
//启用 uDMA 通道
ROM_uDMAChannelEnable (UDMA_CH11_WTIMER0B);
ROM_TimerIntEnable (WTIMER 0_BASE、TIMER_CAPB_EVENT);
ROM_TimerEnable (WTIMER 0_BASE、TIMER_B);