问题:某客户工程师在某型号新产品的设计中,使用STM32F030R8 的TIM15 的CH1 和CH2 来产生需要的波形 (2 路PWM 信号)。据其工程师讲述:在以前的产品上,是使用 STM32F101 的TIM3/4 产生同样的波形。现在,将原代码移 植到STM32F030 的TIM15上,发现仅有一路输出(CH2),另一路(CH1)没有输出。调研:首先查看数据手册,看看是否是管脚映射出错。经核对,没有问题; 其次查看寄存器,看看配置是否有问题。经核对,TIM15_CR2的位0被置位。参考手册里寄存器描述中 有如下说明,CCPC: Capture/compare preloaded control0: CCxE, CCxNE and OCxM bits are not prel1: CCxE, CCxNE and OCxM bits are preloaded, after having been written, they are updated only when COM bit is set.这意味着,当CCPC被置位后,必须先有一个COM事件触发,才会将CCxE/CCxNE/OCxM位加载到寄存器 中。如果没有COM事件,则相关设置不会被加载,就无法产生期望的输出波形。
结论:移植过程中,不同定时器的差异导致代码需要微调。
STM32F030R8 定时器移植问题.pdf
(159.45 KB)
|