OpenEdv-开源电子网

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

定时器pwm实验

[复制链接]

20

主题

65

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
323
金钱
323
注册时间
2018-1-23
在线时间
40 小时
发表于 2018-3-25 20:15:59 | 显示全部楼层 |阅读模式
教程里面的  定时器pwm实验为什么要配置串口?二至之间没什么联系吧?
正点原子逻辑分析仪DL16劲爆上市
回复

使用道具 举报

19

主题

51

帖子

0

精华

金牌会员

Rank: 6Rank: 6

积分
1906
金钱
1906
注册时间
2017-10-8
在线时间
230 小时
发表于 2018-3-31 11:27:20 | 显示全部楼层
我的个人感觉应该没有联系,因为我没用串口初始化,也可以运行
回复 支持 反对

使用道具 举报

19

主题

51

帖子

0

精华

金牌会员

Rank: 6Rank: 6

积分
1906
金钱
1906
注册时间
2017-10-8
在线时间
230 小时
发表于 2018-3-31 11:29:51 | 显示全部楼层
天耀中华 发表于 2018-3-31 11:27
我的个人感觉应该没有联系,因为我没用串口初始化,也可以运行

但是,如果要实现两个32单片的串口通信的话,感觉还是有用的,这个时候,一个用来输出PWM波,另一个用串口接收然后捕获
回复 支持 反对

使用道具 举报

20

主题

65

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
323
金钱
323
注册时间
2018-1-23
在线时间
40 小时
 楼主| 发表于 2018-3-31 12:14:46 | 显示全部楼层
天耀中华 发表于 2018-3-31 11:29
但是,如果要实现两个32单片的串口通信的话,感觉还是有用的,这个时候,一个用来输出PWM波,另一个用串 ...

我也是这么认为的,非常感谢!
回复 支持 反对

使用道具 举报

19

主题

57

帖子

0

精华

初级会员

Rank: 2

积分
69
金钱
69
注册时间
2018-1-28
在线时间
30 小时
发表于 2018-4-1 09:17:14 | 显示全部楼层
DAVIDl 发表于 2018-3-31 12:14
我也是这么认为的,非常感谢!

pwmval=1;
u8 dir=1;
delay_init();        //延时函数初始化
LED_Init();        //初始化与LED连接的硬件接口
TIM1_PWM_Init(899,0);//不分频。PWM频率=72000/(899+1)=80Khz
while(1)
{
delay_ms(10);
if(dir)led0pwmval++;
else led0pwmval--;
if(led0pwmval>300)dir=0;
if(led0pwmval==0)dir=1;
TIM_SetCompare1(TIM1,led0pwmval);
}


这个函数是什么意思   没看懂  请楼主解释一下
回复 支持 反对

使用道具 举报

20

主题

65

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
323
金钱
323
注册时间
2018-1-23
在线时间
40 小时
 楼主| 发表于 2018-4-1 09:31:44 | 显示全部楼层
M3初学者 发表于 2018-4-1 09:17
pwmval=1;
u8 dir=1;
delay_init();        //延时函数初始化

这是教程里面的实验代码吧?
它的意思就是不断给计时器重装载值,以达到调整pwm波占空比的效果,不同的占空比输出的pwm波会使小灯亮度发生改变。
最后那句TIM_SetCompare1(TIM1,led0pwmval);就是向计时器tim1重装载比较值
我说的可能不是很准确,大概就是这个意思。
回复 支持 反对

使用道具 举报

6

主题

14

帖子

0

精华

初级会员

Rank: 2

积分
59
金钱
59
注册时间
2018-4-1
在线时间
9 小时
发表于 2018-4-2 10:57:36 来自手机 | 显示全部楼层
那个delay_ms(10)有什么用,为什么不加那个,灯就亮度不会变啊
回复 支持 反对

使用道具 举报

20

主题

65

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
323
金钱
323
注册时间
2018-1-23
在线时间
40 小时
 楼主| 发表于 2018-4-3 14:41:34 | 显示全部楼层
HUANG123456 发表于 2018-4-2 10:57
那个delay_ms(10)有什么用,为什么不加那个,灯就亮度不会变啊

我理解的是你需要给外设一定的缓冲时间,不然变化太快是看不出来的,比如说你输出到蜂鸣器,程序上没问题,但是速度快了蜂鸣器来不及动作就已经到了下一个状态了。
回复 支持 反对

使用道具 举报

20

主题

65

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
323
金钱
323
注册时间
2018-1-23
在线时间
40 小时
 楼主| 发表于 2018-4-3 14:42:00 | 显示全部楼层
HUANG123456 发表于 2018-4-2 10:57
那个delay_ms(10)有什么用,为什么不加那个,灯就亮度不会变啊

我理解的是你需要给外设一定的缓冲时间,不然变化太快是看不出来的,比如说你输出到蜂鸣器,程序上没问题,但是速度快了蜂鸣器来不及动作就已经到了下一个状态了。
回复 支持 反对

使用道具 举报

20

主题

65

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
323
金钱
323
注册时间
2018-1-23
在线时间
40 小时
 楼主| 发表于 2018-4-3 14:43:34 | 显示全部楼层
HUANG123456 发表于 2018-4-2 10:57
那个delay_ms(10)有什么用,为什么不加那个,灯就亮度不会变啊

你需要给外设一定的缓冲时间,不然变化太快是看不出来的,其实你看着小灯亮度不变,但是实际上占空比是变化的,只是扫描速度太快了,无法通过小灯显示出来。
回复 支持 反对

使用道具 举报

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

本版积分规则



关闭

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

正点原子公众号

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

GMT+8, 2025-6-10 02:38

Powered by OpenEdv-开源电子网

© 2001-2030 OpenEdv-开源电子网

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