OpenEdv-开源电子网

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

定时器时钟选择

[复制链接]

37

主题

70

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
258
金钱
258
注册时间
2012-9-17
在线时间
4 小时
发表于 2012-10-11 10:38:02 | 显示全部楼层 |阅读模式
STM32的定时器具有计数功能,在实际应用中可以用来对引脚上的输入信号进行统计。其输入信号作为计数时钟,输入引脚为ETR引脚。
这是这段话的出处:http://bbs.ednchina.com/BLOG_ARTICLE_105473.HTM

这是从网上看到的一段解释,小弟有些不太明白:既然是输入信号已经作为时钟了,那为什么程序中还要RCC_APB1PeriphClockCmd(RCC_APB1Periph_TIM2, ENABLE);,这不是为TIM2开启了两个时钟吗,不太理解时钟选择这部分

希望高手指点一下!!
正点原子逻辑分析仪DL16劲爆上市
回复

使用道具 举报

530

主题

11万

帖子

34

精华

管理员

Rank: 12Rank: 12Rank: 12

积分
165377
金钱
165377
注册时间
2010-12-1
在线时间
2111 小时
发表于 2012-10-11 10:58:03 | 显示全部楼层
回复【楼主位】murennan:
---------------------------------
你这个应该是提供操作寄存器的时钟吧。
我是开源电子网www.openedv.com站长,有关站务问题请与我联系。
正点原子STM32开发板购买店铺http://openedv.taobao.com
正点原子官方微信公众平台,点击这里关注“正点原子”
回复 支持 反对

使用道具 举报

37

主题

70

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
258
金钱
258
注册时间
2012-9-17
在线时间
4 小时
 楼主| 发表于 2012-10-11 13:03:28 | 显示全部楼层
回复【2楼】正点原子:
---------------------------------
原子哥,弱弱的再问一句:是外部信号做操作寄存器时钟呢还是RCC_APB1PeriphClockCmd(RCC_APB1Periph_TIM2, ENABLE);呢?那既然为定时器这个模块提供了时钟了,为什么还要单独给寄存器也提供一个时钟呢?

在时钟选择这部分已经卡一天了,就是想不明白
回复 支持 反对

使用道具 举报

530

主题

11万

帖子

34

精华

管理员

Rank: 12Rank: 12Rank: 12

积分
165377
金钱
165377
注册时间
2010-12-1
在线时间
2111 小时
发表于 2012-10-11 14:18:18 | 显示全部楼层
回复【3楼】murennan:
---------------------------------
定时器是一块区域,数字电路就必须要时钟,那么就要开启这个区域的时钟。所以先开启时钟。
至于另外一个你给他的计数时钟,又是另外一回事了。
好比一个功放,你给他供电,还需要提供它音频信号。
你开启寄存器时钟,就相当于给功放供电。
而你定时器的计数信号,则相当于功放需要用来放大的音频信号。
我是开源电子网www.openedv.com站长,有关站务问题请与我联系。
正点原子STM32开发板购买店铺http://openedv.taobao.com
正点原子官方微信公众平台,点击这里关注“正点原子”
回复 支持 反对

使用道具 举报

37

主题

70

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
258
金钱
258
注册时间
2012-9-17
在线时间
4 小时
 楼主| 发表于 2012-10-11 21:33:14 | 显示全部楼层
回复【4楼】正点原子:
---------------------------------
那为什么当用作定时功能时只开了RCC_APB1PeriphClockCmd(RCC_APB1Periph_TIM3, ENABLE); 这个呢?这个也有操作寄存器啊,那这个为什么不用为寄存器开时钟呢?
回复 支持 反对

使用道具 举报

12

主题

41

帖子

0

精华

初级会员

Rank: 2

积分
109
金钱
109
注册时间
2012-3-28
在线时间
0 小时
发表于 2012-10-11 21:44:43 | 显示全部楼层
回复【5楼】murennan:
---------------------------------
服你了,在作为定时器用时,RCC_APB1PeriphClockCmd(RCC_APB1Periph_TIM3, ENABLE)负责给定时器所有电路提供时钟,当然定时器计数的时钟来源就是它,当你不用定时功能而作为外部计数时,需要外部单独提供时钟(ETR引脚上的脉冲),定时器就是数这个脉冲计数的,但是内部定时器电路此时还是靠内部时钟来运行啊!没有它RCC_APB1PeriphClockCmd(RCC_APB1Periph_TIM3, ENABLE),定时器想计数也动作不了的。。。。
回复 支持 反对

使用道具 举报

530

主题

11万

帖子

34

精华

管理员

Rank: 12Rank: 12Rank: 12

积分
165377
金钱
165377
注册时间
2010-12-1
在线时间
2111 小时
发表于 2012-10-11 22:07:27 | 显示全部楼层
回复【5楼】murennan:
---------------------------------
这就是用库的弊端。
自己都不知道操作了什么寄存器...
我是开源电子网www.openedv.com站长,有关站务问题请与我联系。
正点原子STM32开发板购买店铺http://openedv.taobao.com
正点原子官方微信公众平台,点击这里关注“正点原子”
回复 支持 反对

使用道具 举报

187

主题

324

帖子

0

精华

金牌会员

Rank: 6Rank: 6

积分
1120
金钱
1120
注册时间
2012-6-4
在线时间
120 小时
发表于 2012-10-19 09:41:13 | 显示全部楼层
“其输入信号作为计数时钟,输入引脚为ETR引脚。”这句话的意思是:这个时候定时器是一个计数器,ETR引脚的信号就是被计数的对象,ETR引脚来一个信号,计数器就数一下,来一个就数一下,就是这个意思。但是计数器数的时候也要“吃饭啊”要不然它没有力气数的,于是“那为什么程序中还要RCC_APB1PeriphClockCmd(RCC_APB1Periph_TIM2, ENABLE);,这不是为TIM2开启了两个时钟吗”就作为计数器的“饭”了。
回复 支持 反对

使用道具 举报

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

本版积分规则



关闭

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

正点原子公众号

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

GMT+8, 2025-2-28 10:38

Powered by OpenEdv-开源电子网

© 2001-2030 OpenEdv-开源电子网

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