输出固定个数的 PWM 波

2019-07-20 16:39发布

采用哪些方法可以输出固定个数的 PWM 波形?

目前有两种方法:
1.通过 TIM0 发送 PWM 波,然后通过 TIM1 定时,到达一定时间后(一般PWM周期是固定的),通过TIM1的定时器中断来关闭 PWM 输出。
2.讲 TIM0 输出 PWM 波的引脚链接到其他 GPIO 口上,通过外部中断每次捕捉出下降沿来实现软件计数,或者 TIM1 的计数模式捕捉计数。

以上两种设想应该可以实现,但都会占用额外的资源或者需要更改硬件,有没有办法,可以不需要占用其他外设且可以输出固定个数的 PWM 波?

这边我设想:TIM0 产生 PWM 时,定时器应该每次也会溢出,开启定时器中断,然后每产生一个 周期的PWM 波时,进入一次中断函数,软件计数加1,达到个数时关闭中断。

实验结果:多次实验,发现开启中断后 PWM 就会输出异常,多次尝试未果。

问题:是否可以通过我上述说的 PWM 加自身定时器中断来实现计数?
友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。
该问题目前已经被作者或者管理员关闭, 无法添加新回复
9条回答
正点原子
1楼-- · 2019-07-20 21:41
TIM1有一个重复计数器,可以用来输出固定脉冲个数,但是数量不超过65535个。  其他的,利用中断也是一个办法,不过频率不能过高,而且影响CPU运行
来俩不甜的
2楼-- · 2019-07-20 23:14
开tim0的溢出中断,溢出一次就是发送了一个完整脉冲了
noparkinghere
3楼-- · 2019-07-21 02:12
来俩不甜的 发表于 2017-2-7 16:35
开tim0的溢出中断,溢出一次就是发送了一个完整脉冲了

实验了,但问题是中断开启后, PWM 波还没有产生,就已经有溢出进入中断了。
来俩不甜的
4楼-- · 2019-07-21 02:43
 精彩回答 2  元偷偷看……
noparkinghere
5楼-- · 2019-07-21 02:50
 精彩回答 2  元偷偷看……
来俩不甜的
6楼-- · 2019-07-21 06:48
noparkinghere 发表于 2017-2-8 08:57
初始化的时候是开启了 PWM 的,关闭中断 PWM 可以输出,开启中断 PWM 就会输出异常,示波器看过,发现 PW ...

这个我还真没注意过,那就在初始化的时候先不要输出pwm,在某次你认为已经稳定的中断开启pwm输出,关闭的时候也不要关定时器,只配置不要输出pwm就好了。看TIMx_CCER寄存器

一周热门 更多>