yuyu87 发表于 2023-7-8 20:37:38

STM32的另类脉冲计算法

比如用STM32发脉冲,来控制步进电机或伺服电机
大家一般的做法无非有这样几种
1.主定时器生成50% 的PWM波形,从定时器来计数,计算需要的数量,计算加减速
2.以上两个定时器不用内部级连,而使用外部IO引脚,差不多,不过浪费一个引脚
3.还是主定时器输出PWM波,中断里计数,这种办法不适合频率比较快的,较浪费CPU资源。

刚无聊看到手册,TIM1/TIM8高级定时器,一直没注意到有个RCR寄存器,看手册中描述的说是可以计算PWM周期的数量,
也就是可以计算脉冲数量,那不是不用再级连定时器了么?
可仔细一看才8位,只能计算255个脉冲,没啥意义,
不过我又看了其它几个芯片发现是16位的,但如果到了16位就要以用了,脉冲数量大于16位可以分多次中断就行了。
STM32F1,F4是8位的,比较新一点的STM32L4,H7等都是16位的。
后边有空了可以玩一玩这种方式。

xiaoergao 发表于 2023-7-8 23:10:19

还有一个玩法,使用dma通过dma来计数。也是可以到16位,超过65535中断一次。
这样比用高级定时器实现的路数多。

yuyu87 发表于 2023-7-9 09:56:33

xiaoergao 发表于 2023-7-8 23:10
还有一个玩法,使用dma通过dma来计数。也是可以到16位,超过65535中断一次。
这样比用高级定时器实现的路数 ...
(引用自2楼)

学习了。
页: [1]
查看完整版本: STM32的另类脉冲计算法