OpenEdv-开源电子网

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

第二篇 STM32F030输出PWM波形

[复制链接]

120

主题

7878

帖子

13

精华

资深版主

Rank: 8Rank: 8

积分
12012
金钱
12012
注册时间
2013-9-10
在线时间
427 小时
发表于 2016-5-8 17:56:15 | 显示全部楼层 |阅读模式
PWM这个名词相信搞电子的并不陌生,废话不说了,直接开工

运行平台、编译环境、基础代码均来自http://www.openedv.com/thread-74004-1-1.html

一、要输出PWM就要找到有定时器功能的管脚,打开硬件参考手册,找到Pin列表
1.png
本次利用定时器3的通道1输出PWM
二、打开工程,新建文件hal_timer,c和h文件分别建立并添加到工程
2.png
2.1 打开c文件,开始编写代码,建立初始化函数
3.png
2.2 要输出PWM,第一步就是打开对应的时钟了,TIM3-CH1在PA6端口,所以打开GPIOA时钟和TIM3时钟,打开编程参考手册,找到时钟篇
4.png
找到GPIOA所在总线
5.png
定时器3所在的总线
6.png
编写代码如下
7.png
这样就可以打开GPIOA和TIM3的时钟了
2.3 配置IO端口,找到GPIO相关的寄存器
8.png
看下寄存器列表,配置时涉及到的寄存器有四个MODER、OTYPER、OSPEEDR、PUPDR寄存器,先将这几个寄存器对应PA6管脚位清零
10.png
接下来将PA6配置成复用推挽输出模式,代码如下(至于为什么是这样,大家自行研究)
11.png
2.4 端口配置完成,是不是认为就OK了呢???别着急,还要打开复用才行,GPIO复用寄存器如下
12.png
对照硬件手册Pin列表最后部分,看到一个管脚复用的详细列表(GPIOA部分,其他的自行查看)
13.png
对应的代码
14.png
三、GPIO初始化完成了,接下来初始化定时器部分了,同样,在编程参考手册中找到TIM3部分
15.png
上图列出了TIM3所涉及到的寄存器,不同于F1系列的,大家对比一下区别即可
3.1 首先配置定时器的分频与计数,初始化函数引入两个形参,用于设置定时器的分频系数和计数值的,详细代码如下(具体作用请参考相关寄存器说明)
16.png
首先将自动重装值(计数值)放入ARR寄存器(auto-reload register),将分频值放入PSC寄存器(prescaler)
查看控制寄存器CR1设置相关部分,本次采用时钟总线不分频处理
17.png
设置计数方向,向上(或者向下)
18.png
注意看Bits 6:5 CMS: Center-aligned mode selection的说明,别设置错了
使能自动重装
3.2 配置PWM部分,也就是比较输出部分,代码如下,就不一一解释了,大家自行查看相关寄存器
19.png
四、在main函数中添加头文件hal_timer.h,while循环之前初始化PWM输出
20.png
也许大家的疑惑来了,第二个形参为什么是480-1呢???这个就是定时器3所在总线的频率,前面我们设置的总线不分频的,所以这里填写的值就是总线的值,在编程参考手册中,找到时钟树
21.png
看到时钟来源,或许还可以打开system_stm32f0xx.c文件,开头注释的地方也有说明
22.png
由此可见,频率就是系统主频48MHz,又或者直接调用库函数void RCC_GetClocksFreq(RCC_ClocksTypeDef* RCC_Clocks)直接获取
所以得到定时器的频率为:48000 000 / 480 =100 000Hz
由第一个形参可知,计数100次之后管脚上电平发生翻转:100 000 / 100 = 1000Hz
所以,在管脚上会产生一个1000Hz频率的波形
五、编译下载验证
23.png
0错误和0警告,说明编译通过,点击下载按钮下载到板子上验证,接上逻辑分析仪(或者示波器)到PA6管脚,探测PA6输出的波形
24.png
探测到的频率为1000Hz和配置的一致
六、众所周知,PWM有占空比一说,要想改变输出波形的占空比,查看寄存器capture/compare register 1(这里选用的是第一个通道,所以是1)
25.png
改变这个寄存器的数值即可改变占空比
在main函数中这样写上
26.png
这里填写的是30,即输出的占空比是30%(注意前面输入的计数次数是100,所以这里填写多少就是占空比多少),再次编译下载,探测波形
27.png
看到高电平的时长变成了0.3ms,前面的是0.49ms
七、附件中同时包含有IAR、MDK、Source Insight工程,大家可自行打开
八、至于普通定时器功能,可将本工程中PWM寄存器配置部分去掉,配置相关中断部分即可实现,大家自行实验

STM32F030RB_PWM.zip

9.63 MB, 下载次数: 23878

现在,程序把烂铜烂铁变得智能化了,人呢,一旦离开了这烂铜烂铁就不知道干啥了
正点原子逻辑分析仪DL16劲爆上市
回复

使用道具 举报

120

主题

7878

帖子

13

精华

资深版主

Rank: 8Rank: 8

积分
12012
金钱
12012
注册时间
2013-9-10
在线时间
427 小时
 楼主| 发表于 2017-12-14 23:03:18 | 显示全部楼层
现在,程序把烂铜烂铁变得智能化了,人呢,一旦离开了这烂铜烂铁就不知道干啥了
回复 支持 1 反对 0

使用道具 举报

2

主题

11

帖子

0

精华

初级会员

Rank: 2

积分
57
金钱
57
注册时间
2014-4-14
在线时间
5 小时
发表于 2016-5-12 15:41:02 | 显示全部楼层
很好··编辑帖子辛苦了··
回复 支持 1 反对 0

使用道具 举报

30

主题

282

帖子

0

精华

金牌会员

Rank: 6Rank: 6

积分
1001
金钱
1001
注册时间
2015-8-24
在线时间
241 小时
发表于 2016-5-12 15:51:30 | 显示全部楼层
回复 支持 反对

使用道具 举报

0

主题

46

帖子

0

精华

初级会员

Rank: 2

积分
152
金钱
152
注册时间
2015-5-12
在线时间
23 小时
发表于 2016-9-30 10:48:41 | 显示全部楼层
谢谢楼主的分享!
回复 支持 反对

使用道具 举报

1

主题

8

帖子

0

精华

新手上路

积分
41
金钱
41
注册时间
2016-8-12
在线时间
9 小时
发表于 2016-10-17 23:39:28 | 显示全部楼层
记号学习了
回复 支持 反对

使用道具 举报

0

主题

3

帖子

0

精华

新手入门

积分
11
金钱
11
注册时间
2016-9-30
在线时间
1 小时
发表于 2016-10-20 11:39:23 | 显示全部楼层
不错不错
回复 支持 反对

使用道具 举报

0

主题

10

帖子

0

精华

新手上路

积分
38
金钱
38
注册时间
2017-2-27
在线时间
7 小时
发表于 2017-2-27 21:45:57 | 显示全部楼层
谢谢分享,正在学习STM32F0单片机中。。。
回复 支持 反对

使用道具 举报

154

主题

289

帖子

0

精华

金牌会员

Rank: 6Rank: 6

积分
1067
金钱
1067
注册时间
2015-4-13
在线时间
189 小时
发表于 2017-2-28 08:33:22 | 显示全部楼层
STM32F030系列还是很实惠的,103一半的价格,有了103基本的能力
回复 支持 反对

使用道具 举报

4

主题

144

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
345
金钱
345
注册时间
2017-1-18
在线时间
80 小时
发表于 2017-2-28 08:59:05 | 显示全部楼层
谢谢分析
回复 支持 反对

使用道具 举报

0

主题

5

帖子

0

精华

新手上路

积分
22
金钱
22
注册时间
2017-3-4
在线时间
3 小时
发表于 2017-3-6 20:21:21 | 显示全部楼层
谢谢分享
回复 支持 反对

使用道具 举报

0

主题

2

帖子

0

精华

新手入门

积分
4
金钱
4
注册时间
2017-7-21
在线时间
1 小时
发表于 2017-7-21 14:45:52 | 显示全部楼层
真心不错的贴,辛苦了楼主,为你点赞
回复 支持 反对

使用道具 举报

1

主题

5

帖子

0

精华

新手上路

积分
43
金钱
43
注册时间
2017-7-21
在线时间
10 小时
发表于 2017-7-26 11:57:52 | 显示全部楼层
感谢楼主的慷慨分享
回复 支持 反对

使用道具 举报

0

主题

11

帖子

0

精华

论坛元老

Rank: 8Rank: 8

积分
3106
金钱
3106
注册时间
2017-2-5
在线时间
246 小时
发表于 2017-12-3 14:52:23 | 显示全部楼层
讲的很仔细,对我们新人很有帮助。谢谢!
回复 支持 反对

使用道具 举报

6

主题

55

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
317
金钱
317
注册时间
2017-12-12
在线时间
47 小时
发表于 2017-12-12 16:56:07 | 显示全部楼层
谢谢分享经验
回复 支持 反对

使用道具 举报

129

主题

397

帖子

0

精华

高级会员

Rank: 4

积分
831
金钱
831
注册时间
2017-7-12
在线时间
150 小时
发表于 2017-12-14 09:36:35 | 显示全部楼层
波形探测是怎么做到的啊?
回复 支持 反对

使用道具 举报

120

主题

7878

帖子

13

精华

资深版主

Rank: 8Rank: 8

积分
12012
金钱
12012
注册时间
2013-9-10
在线时间
427 小时
 楼主| 发表于 2017-12-14 09:39:29 | 显示全部楼层
余一水 发表于 2017-12-14 09:36
波形探测是怎么做到的啊?

你是说后面的波形图是怎么获取的是吧?
现在,程序把烂铜烂铁变得智能化了,人呢,一旦离开了这烂铜烂铁就不知道干啥了
回复 支持 反对

使用道具 举报

129

主题

397

帖子

0

精华

高级会员

Rank: 4

积分
831
金钱
831
注册时间
2017-7-12
在线时间
150 小时
发表于 2017-12-14 11:49:55 | 显示全部楼层
八度空间 发表于 2017-12-14 09:39
你是说后面的波形图是怎么获取的是吧?

对啊,看到好多次别人检测时序什么的,这是高级的示波器?还是什么软件吗
回复 支持 反对

使用道具 举报

120

主题

7878

帖子

13

精华

资深版主

Rank: 8Rank: 8

积分
12012
金钱
12012
注册时间
2013-9-10
在线时间
427 小时
 楼主| 发表于 2017-12-14 20:28:15 | 显示全部楼层
余一水 发表于 2017-12-14 11:49
对啊,看到好多次别人检测时序什么的,这是高级的示波器?还是什么软件吗

逻辑分析仪,某宝一堆
现在,程序把烂铜烂铁变得智能化了,人呢,一旦离开了这烂铜烂铁就不知道干啥了
回复 支持 反对

使用道具 举报

129

主题

397

帖子

0

精华

高级会员

Rank: 4

积分
831
金钱
831
注册时间
2017-7-12
在线时间
150 小时
发表于 2017-12-14 20:58:27 | 显示全部楼层
八度空间 发表于 2017-12-14 20:28
逻辑分析仪,某宝一堆

搜了一下,是那种三十多块钱的吗,还是几千的啊
回复 支持 反对

使用道具 举报

129

主题

397

帖子

0

精华

高级会员

Rank: 4

积分
831
金钱
831
注册时间
2017-7-12
在线时间
150 小时
发表于 2017-12-15 16:38:14 | 显示全部楼层
八度空间 发表于 2017-12-14 23:03
https://item.taobao.com/item.htm?spm=a230r.1.14.89.7db2af6aUrwUYH&id=554492734289&ns=1&abbucket=1# ...

谢谢,我说的三十多的就是这个
回复 支持 反对

使用道具 举报

2

主题

474

帖子

0

精华

论坛元老

Rank: 8Rank: 8

积分
6532
金钱
6532
注册时间
2018-6-27
在线时间
550 小时
发表于 2018-11-20 09:35:07 | 显示全部楼层
谢谢分享,学习学习。
回复 支持 反对

使用道具 举报

0

主题

295

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
335
金钱
335
注册时间
2019-3-26
在线时间
9 小时
发表于 2019-4-11 08:56:25 | 显示全部楼层
感谢老司机分享!
回复 支持 反对

使用道具 举报

0

主题

12

帖子

0

精华

新手入门

积分
3
金钱
3
注册时间
2019-4-11
在线时间
0 小时
发表于 2019-4-11 14:27:07 | 显示全部楼层

谢谢分享,稍后实践下
回复 支持 反对

使用道具 举报

0

主题

40

帖子

0

精华

初级会员

Rank: 2

积分
61
金钱
61
注册时间
2019-4-11
在线时间
4 小时
发表于 2019-4-12 14:08:58 | 显示全部楼层
学习学习
回复 支持 反对

使用道具 举报

18

主题

148

帖子

0

精华

金牌会员

Rank: 6Rank: 6

积分
1528
金钱
1528
注册时间
2018-11-15
在线时间
292 小时
发表于 2019-4-15 10:16:46 | 显示全部楼层
八度空间 发表于 2017-12-14 20:28
逻辑分析仪,某宝一堆

八度大师,有没有STM32F030RCT6的工程文件啊
回复 支持 反对

使用道具 举报

120

主题

7878

帖子

13

精华

资深版主

Rank: 8Rank: 8

积分
12012
金钱
12012
注册时间
2013-9-10
在线时间
427 小时
 楼主| 发表于 2019-4-21 11:37:11 | 显示全部楼层
渡渡 发表于 2019-4-15 10:16
八度大师,有没有STM32F030RCT6的工程文件啊

这个就是030的工程啊
现在,程序把烂铜烂铁变得智能化了,人呢,一旦离开了这烂铜烂铁就不知道干啥了
回复 支持 反对

使用道具 举报

0

主题

4

帖子

0

精华

初级会员

Rank: 2

积分
53
金钱
53
注册时间
2019-5-14
在线时间
13 小时
发表于 2019-6-19 11:15:29 | 显示全部楼层
学习学习,写的很详细了
回复 支持 反对

使用道具 举报

0

主题

4

帖子

0

精华

初级会员

Rank: 2

积分
65
金钱
65
注册时间
2018-7-13
在线时间
16 小时
发表于 2020-9-5 15:17:44 | 显示全部楼层
太棒了!太感谢了!!!
回复 支持 反对

使用道具 举报

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

本版积分规则



关闭

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

正点原子公众号

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

GMT+8, 2025-6-18 01:34

Powered by OpenEdv-开源电子网

© 2001-2030 OpenEdv-开源电子网

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