STM32 通过DMA方式传输TIM3定时器计数值,数值重复!
Debug方向1.DMA通道优先级原因
把目标DMA通道即(DMA1_Channel5),优先级调至为最高;其余通道优先级为低。
结果反馈,TIM3计数器数值重复
2.DMA配置先后
(传输AD值防止数据错乱,故DMA配置必须放在ADC之前。)
因此为了排除相同原因导致的数据重复,所以将DMA配置放在TIM3定时器初始化之前。
结果反馈,TIM3计数器数值重复
3.DMA通道及触发方式
把DMA1_Channel5改为DMA1_Channel3/DMA1_Channel2,触发方式由TIM1更新事件,
改为TIM3_CC1/TIM3_CC3
结果反馈,TIM3计数器数值重复
4.TIM1更新事件频率
更新事件频率由16khz改为10k/5k,或者重复计数器由1改为2
结果反馈,TIM3计数器数值重复
5.其他定时器计数值
DMA触发方式为TIM1更新事件,传输TIM1/TIM2计数器数值;
DMA触发方式为TIM3_CC1事件,传输TIM1/TIM2计数器数值;
DMA触发方式为TIM3_CC3事件,传输TIM1/TIM2计数器数值;
结果反馈,计数器数值重复
6.字传输
内存地址由半字传输改为字传输
结果反馈,计数器数值重复
7.Buffersize
Buffersize = 1 ,计数器数值正常
Buffersize = 2,计时器数值重复2次
Buffersize = 3,计时器数值重复3次
结论,DMA读取定时器计数器数值重复和Buffersize有关,为DMA特性
页:
[1]