发新帖我要提问
12
返回列表
打印
[STM32F2]

STM32F2的pwm波的设置问题,如何立即有效

[复制链接]
楼主: PhycoKnight
手机看帖
扫描二维码
随时随地手机跟帖
21
PhycoKnight|  楼主 | 2015-8-31 14:27 | 只看该作者 回帖奖励 |倒序浏览
皈依 发表于 2015-8-31 08:27
感谢楼主~学习了根据你的描述,猜测可能是i++执行在ir之前了。。。略过了第0位,或者你函数写 ...

如果不用中断,不开中断也可以

使用特权

评论回复
22
PhycoKnight|  楼主 | 2015-8-31 14:32 | 只看该作者
309030106 发表于 2015-8-25 17:53
为什么第一个脉冲发不出来呢

最后我也没找到原因。刚开始用的是向上计数模式。然后发现这个时候发出的pwm波形是高电平在前面,低电平在后面。这个不是我想要的波形。我需要的波形是低电平在前面,高电平在后面。所以用了向下计数模式。而向下计数的话计数器值在重载之前被更新。所以只要后面再多进入中断几次就可以了。这个时候就对了。

使用特权

评论回复
23
PhycoKnight|  楼主 | 2015-8-31 14:33 | 只看该作者
STARM 发表于 2015-8-29 08:36
>>但是由于是在下个时钟周期才真正有效。
即使是这样,第一个发不出也没有道理啊?
...

确实很奇怪。到最后我也没找到原因。刚开始用的是向上计数模式。然后发现这个时候发出的pwm波形是高电平在前面,低电平在后面。这个不是我想要的波形。我需要的波形是低电平在前面,高电平在后面。所以用了向下计数模式。而向下计数的话计数器值在重载之前被更新。所以只要后面再多进入中断几次就可以了。这个时候就对了。

使用特权

评论回复
24
PhycoKnight|  楼主 | 2015-8-31 14:33 | 只看该作者
zh113214 发表于 2015-8-29 08:37
串口发送的数据是正确的吗?

不是用的串口。。

使用特权

评论回复
25
PhycoKnight|  楼主 | 2015-8-31 14:34 | 只看该作者
捉虫天师 发表于 2015-8-29 11:22
楼主,怎么解决的,说下呀

最后我也没找到原因。刚开始用的是向上计数模式。然后发现这个时候发出的pwm波形是高电平在前面,低电平在后面。这个不是我想要的波形。我需要的波形是低电平在前面,高电平在后面。所以用了向下计数模式。而向下计数的话计数器值在重载之前被更新。所以只要后面再多进入中断几次就可以了。这个时候就对了。

使用特权

评论回复
26
PhycoKnight|  楼主 | 2015-8-31 14:50 | 只看该作者
本帖最后由 PhycoKnight 于 2015-8-31 15:15 编辑
STARM 发表于 2015-8-29 08:36
>>但是由于是在下个时钟周期才真正有效。
即使是这样,第一个发不出也没有道理啊?
...

我用pwm波发送一串数据,每进入一次中断就会计数一次,然后数据发送完后就停止pwm波和中断,第一串数据发送完能够正常的停止发出pwm波,但是发第二次的时候,pwm波停不下来了。用于停止pwm波的函数就是库函数中的下面的两个:

HAL_TIM_PWM_Stop_IT(&Tim2Handle, TIM_CHANNEL_2);  
HAL_TIM_PWM_Stop(&Tim2Handle, TIM_CHANNEL_2);

我下了断点,这两个函数也执行了,并且每一次的计数都是对的。但是pwm波就跟吃了炫迈一样,根本停不下来。

========================================
我错了。我看了下函数的实现,stop_IT那个函数停止的不是更新事件的中断。我自己实现了一个,可以了。

使用特权

评论回复
27
皈依| | 2015-8-31 14:52 | 只看该作者
PhycoKnight 发表于 2015-8-31 14:24
这个配置应该不难吧。还要注意打开时钟,然后GPIO口设置为复用推挽

...

不知道楼主是否方便将源码打包分享一样 你的结构体我看起来有点迷糊
还是不大明白一个引脚如何切换输出两个通道的PWM

使用特权

评论回复
28
PhycoKnight|  楼主 | 2015-8-31 15:16 | 只看该作者
皈依 发表于 2015-8-31 14:52
不知道楼主是否方便将源码打包分享一样 你的结构体我看起来有点迷糊
还是不大明白一个引脚如何切换输出两 ...

发出来的就是所有的源码了。。。

使用特权

评论回复
29
皈依| | 2015-8-31 15:19 | 只看该作者
PhycoKnight 发表于 2015-8-31 15:16
发出来的就是所有的源码了。。。

不是的吧。。。
IR_PWM_SEND()这个函数我还没看懂呢

使用特权

评论回复
30
PhycoKnight|  楼主 | 2015-8-31 17:17 | 只看该作者
皈依 发表于 2015-8-31 15:19
不是的吧。。。
IR_PWM_SEND()这个函数我还没看懂呢

send函数就是下面的那个 cfg函数啊,里面有两个参数可以调整占空比和频率

使用特权

评论回复
31
PhycoKnight|  楼主 | 2015-8-31 17:18 | 只看该作者
皈依 发表于 2015-8-31 14:52
不知道楼主是否方便将源码打包分享一样 你的结构体我看起来有点迷糊
还是不大明白一个引脚如何切换输出两 ...

这不是两个通道,而是一个通道,只是这个通道的pwm波可以调整频率和占空比

使用特权

评论回复
32
PhycoKnight|  楼主 | 2015-8-31 17:43 | 只看该作者
皈依 发表于 2015-8-31 15:19
不是的吧。。。
IR_PWM_SEND()这个函数我还没看懂呢

我以为你只是要可调的pwm,原来也是红外。我在搞,但是出了点问题。还没有解决。

使用特权

评论回复
33
皈依| | 2015-9-1 08:25 | 只看该作者
PhycoKnight 发表于 2015-8-31 17:43
我以为你只是要可调的pwm,原来也是红外。我在搞,但是出了点问题。还没有解决。 ...

对的 我也是在做红外,大概思路我明白了 十分感谢 我试试~

使用特权

评论回复
34
逍遥李| | 2015-11-16 14:08 | 只看该作者
PhycoKnight 发表于 2015-8-31 14:32
最后我也没找到原因。刚开始用的是向上计数模式。然后发现这个时候发出的pwm波形是高电平在前面,低电平 ...

是不是极性输出配置那里的问题,你想低电平在前应该把输出极性改一下就好了

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则