selvis123 发表于 2020-11-18 16:16:00

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]
查看完整版本: STM32 通过DMA方式传输TIM3定时器计数值,数值重复!