OpenEdv-开源电子网

 找回密码
 立即注册
正点原子全套STM32/Linux/FPGA开发资料,上千讲STM32视频教程免费下载...
查看: 3840|回复: 15

有关pwm输出的问题,求问大家!!

[复制链接]

5

主题

20

帖子

0

精华

高级会员

Rank: 4

积分
534
金钱
534
注册时间
2016-7-6
在线时间
58 小时
发表于 2016-9-17 17:17:09 | 显示全部楼层 |阅读模式
10金钱
我使用的stm32f103定时器输出pwm来控制电机的转速,定时器初始化和pwm初始化都配置好,也写好pwm占空比后,如果后面跟一个delay的延时语句,就能实现想要达到的功能,但是不加delay就没法输出。我试了pwm输出的例程上面也是,加delay延时后波形才是对的,不然仿真出来的波形也是不对的。所以我想请问是只有加delay延时或者把他写到while循环里面才能得到pwm输出么??

最佳答案

查看完整内容[请看2#楼]

检查代码。PWM输出是需要时间的,你不停的修改CCRx的值,是不行的。
正点原子逻辑分析仪DL16劲爆上市
回复

使用道具 举报

530

主题

11万

帖子

34

精华

管理员

Rank: 12Rank: 12Rank: 12

积分
165524
金钱
165524
注册时间
2010-12-1
在线时间
2116 小时
发表于 2016-9-17 17:17:10 | 显示全部楼层
检查代码。PWM输出是需要时间的,你不停的修改CCRx的值,是不行的。
回复

使用道具 举报

5

主题

20

帖子

0

精华

高级会员

Rank: 4

积分
534
金钱
534
注册时间
2016-7-6
在线时间
58 小时
 楼主| 发表于 2016-9-17 17:19:06 | 显示全部楼层
回复

使用道具 举报

0

主题

13

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
254
金钱
254
注册时间
2016-8-21
在线时间
44 小时
发表于 2016-9-17 21:58:28 | 显示全部楼层
学习学习
回复

使用道具 举报

7

主题

19

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
255
金钱
255
注册时间
2016-7-1
在线时间
46 小时
发表于 2016-9-18 08:40:05 | 显示全部楼层
学习学习
回复

使用道具 举报

5

主题

20

帖子

0

精华

高级会员

Rank: 4

积分
534
金钱
534
注册时间
2016-7-6
在线时间
58 小时
 楼主| 发表于 2016-9-18 08:40:33 | 显示全部楼层
正点原子 发表于 2016-9-17 20:18
检查代码。PWM输出是需要时间的,你不停的修改CCRx的值,是不行的。

我就是把CCRx设成一个固定的值来试的,所以意思就是pwm输出必须得加delay延时一段时间或者用while一直循环输出才能行么?他不能像普通的IO口那样,写一个高电平,就一直是高电平,对么?
谢谢啦
回复

使用道具 举报

5

主题

121

帖子

0

精华

高级会员

Rank: 4

积分
620
金钱
620
注册时间
2016-1-26
在线时间
150 小时
发表于 2016-9-18 09:07:30 | 显示全部楼层
跟延时有什么关系,我自己写pwm代码时根本不需要什么延时,波形不对又是什么样的波形
回复

使用道具 举报

5

主题

20

帖子

0

精华

高级会员

Rank: 4

积分
534
金钱
534
注册时间
2016-7-6
在线时间
58 小时
 楼主| 发表于 2016-9-18 09:25:48 | 显示全部楼层
无休 发表于 2016-9-18 09:07
跟延时有什么关系,我自己写pwm代码时根本不需要什么延时,波形不对又是什么样的波形

那你直接设置好占空比然后就直接去写别的语句了,那个IO口就一直能输出pwm么?
波形不对就是,我要是加延时或者把他放到循环里,他就是连续的方波,但如果就只设置好占空比,波形就是不规则的,有脉冲,请问是怎么回事?
回复

使用道具 举报

5

主题

121

帖子

0

精华

高级会员

Rank: 4

积分
620
金钱
620
注册时间
2016-1-26
在线时间
150 小时
发表于 2016-9-18 11:17:23 | 显示全部楼层
xyfafafa 发表于 2016-9-18 09:25
那你直接设置好占空比然后就直接去写别的语句了,那个IO口就一直能输出pwm么?
波形不对就是,我要是加 ...

http://www.ndiy.cn/thread-31081-1-1.html看看别人怎么做的是最好的选择,不要纠结在自己的代码上!
回复

使用道具 举报

5

主题

20

帖子

0

精华

高级会员

Rank: 4

积分
534
金钱
534
注册时间
2016-7-6
在线时间
58 小时
 楼主| 发表于 2016-9-18 11:28:36 | 显示全部楼层
无休 发表于 2016-9-18 11:17
http://www.ndiy.cn/thread-31081-1-1.html看看别人怎么做的是最好的选择,不要纠结在自己的代码上!

我也是按照这样写的,要是单独看pwm输出没有问题,但是我现在问题在于把他和别的程序连在一起不行,比如我像他这样: TIM_Cmd(TIM3, ENABLE);//使能TIM3   ,写完这个之后后面直接接小车检测障碍的程序,没给pwm留一段时间让他输出,他就无法输出想要的那种方波。

请问你知道这样问题出在哪了么??
回复

使用道具 举报

5

主题

121

帖子

0

精华

高级会员

Rank: 4

积分
620
金钱
620
注册时间
2016-1-26
在线时间
150 小时
发表于 2016-9-18 11:33:55 | 显示全部楼层
xyfafafa 发表于 2016-9-18 11:28
我也是按照这样写的,要是单独看pwm输出没有问题,但是我现在问题在于把他和别的程序连在一起不行,比如 ...

原子哥不是告诉 你了嘛!不要超高频率的改变占空比,加入一个延时意思是不处理避障程序,让pwm波硬件输出!
回复

使用道具 举报

24

主题

93

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
212
金钱
212
注册时间
2016-1-15
在线时间
64 小时
发表于 2016-9-18 11:34:51 | 显示全部楼层
本帖最后由 Anthony_brave 于 2016-9-18 11:37 编辑

遇到过同样类似的问题

最后解决办法是: 如果只输出一种占空比的话,就将它直接放到初始化里面 ,不放到while循环里
如果要输出占空比可变的波形,那就将占空比函数放到Tim中断里。

占空比可变函数,其他一些初始化语句就放到TIM初始化里面就好了,不要放到下面这个函数里面
void TIM3_PWM1(u16 CCR1_Value)        //改变占空比
{
        TIM3->CCER&=0x7fff;
        TIM3->CCR4=CCR1_Value;
        TIM3->CCER|=0x1000;
}
回复

使用道具 举报

7

主题

19

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
255
金钱
255
注册时间
2016-7-1
在线时间
46 小时
发表于 2016-9-19 08:27:54 | 显示全部楼层
等下,我帮你看一下
回复

使用道具 举报

1

主题

57

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
317
金钱
317
注册时间
2015-11-4
在线时间
72 小时
发表于 2016-9-19 09:40:52 | 显示全部楼层
PWM输出实验 - F1大板.zip (538.87 KB, 下载次数: 170)

4路输出,启动电机.zip

3.86 MB, 下载次数: 64

这个是delay延时的

回复

使用道具 举报

1

主题

57

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
317
金钱
317
注册时间
2015-11-4
在线时间
72 小时
发表于 2016-9-19 09:42:46 | 显示全部楼层
一个是放于while(1)里边的,一个后面接了delay延时的,这2个程序是能让无刷电机启动的。
回复

使用道具 举报

0

主题

56

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
254
金钱
254
注册时间
2015-10-15
在线时间
39 小时
发表于 2016-11-20 15:05:27 | 显示全部楼层
原子的书pwm输出实验例程输出的pwm波是不停的修改CCRx的值所以加上了延时delay_ms(10),如果占空比固定的话就不需要延时了。
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则



关闭

原子哥极力推荐上一条 /2 下一条

正点原子公众号

QQ|手机版|OpenEdv-开源电子网 ( 粤ICP备12000418号-1 )

GMT+8, 2025-5-25 06:17

Powered by OpenEdv-开源电子网

© 2001-2030 OpenEdv-开源电子网

快速回复 返回顶部 返回列表