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.
工具/软件:TI-RTOS
你好
我尝试使用计时器比较来测量是否为 pulsewitdh。 为此、我在上升沿和下降沿使用中断并读取时间寄存器来计算高电平时间。
现在我尝试使用 uDMA 来实现它、但它不起作用。 请帮助我查找此配置中的错误。 我在"Stellaris Ware"封装中找到了一个示例、并将其调整为计时器3。
此致
勒内
// //启用 UDMA 外设 // ROM_SysCtlPeripheralEnable (SYSCTL_Periph_UDMA); // //启用 uDMA 控制器错误中断。 将发生该中断 //如果在传输过程中出现总线错误。 // ROM_IntEnable (UDMA_INT_ERR); // //启用 UDMA 控制器。 // ROM_uDMAEnable(); // //指向控制表以用于通道控制结构体。 // ROM_uDMAControlBaseSet (ucControlTable); uDMAChannelSelectSecondary (UDMA_DEF_USBEP2TX_SEC_TMR3B); // //将 UDMA Timer3B 通道的属性置于已知状态。 这些 默认情况下、//应已禁用。 // ROM_uDMAChannelAttributeDisable (UDMA_SEC_CHANGE_TMR3B、 UDMA_ATTR_ALTSELECT | UDMA_ATTR_USEBURST | UDMA_ATTR_HIGH_PRIOR_UDMA_ATTR_REQMASK); // //为计时器0A 设置 DMA 通道。 将其设置为传输单个数据 //一次32位字。 源是非递增的、 //目标正在递增。 // ROM_uDMAChannelControlSet (UDMA_SEC_CHANGE_TMR3B | UDMA_PRI_SELECT、 UDMA_SIZE_32 | UDMA_SRC_INC_NONE | UDMA_DST_INC_32 | UDMA_ARB_1); // //为计时器0A DMA 通道设置传输。 使用基本模式、 //这意味着每个计时器请求将发生一次传输(超时)。 //每次超时传输的数量由仲裁决定 //大小(请参阅上面的函数)。 源将是自由运行的值 // Timer1,目标是内存缓冲区。 因此、的值 //每次周期性运行时,自由运行的 Timer1都将存储在缓冲区中 // Timer0超时。 // ROM_uDMAChannelTransferSet (UDMA_SEC_CHANGE_TMR3B | UDMA_PRI_SELECT、 UDMA_MODE_BASIC、(void *)(TIMER3_base + TIMER_O_TBR)、 G_ulTimerBuf、MAX_TIMER_Events); uDMAChannelEnable (UDMA_SEC_CHANGE_TMR3B);