OpenEdv-开源电子网

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

STM32F103RB 定时器输入捕获模式单通道能进行双边沿检测吗?

[复制链接]

5

主题

14

帖子

0

精华

初级会员

Rank: 2

积分
54
金钱
54
注册时间
2012-5-5
在线时间
0 小时
发表于 2013-3-1 22:47:18 | 显示全部楼层 |阅读模式

#define  TIM_ICPolarity_Rising             ((uint16_t)0x0000)
#define  TIM_ICPolarity_Falling            ((uint16_t)0x0002)
#define  TIM_ICPolarity_BothEdge           ((uint16_t)0x000A)
#define IS_TIM_IC_POLARITY(POLARITY) (((POLARITY) == TIM_ICPolarity_Rising) || \
                                      ((POLARITY) == TIM_ICPolarity_Falling))
#define IS_TIM_IC_POLARITY_LITE(POLARITY) (((POLARITY) == TIM_ICPolarity_Rising) || \
                                           ((POLARITY) == TIM_ICPolarity_Falling)|| \
                                           ((POLARITY) == TIM_ICPolarity_BothEdge))                                      



明明有双边沿检测模式,为什么我配置之后是单边沿检测啊?



正点原子逻辑分析仪DL16劲爆上市
回复

使用道具 举报

530

主题

11万

帖子

34

精华

管理员

Rank: 12Rank: 12Rank: 12

积分
165352
金钱
165352
注册时间
2010-12-1
在线时间
2108 小时
发表于 2013-3-2 00:17:26 | 显示全部楼层
可以的.
设置为任意边沿触发即可.
我是开源电子网www.openedv.com站长,有关站务问题请与我联系。
正点原子STM32开发板购买店铺http://openedv.taobao.com
正点原子官方微信公众平台,点击这里关注“正点原子”
回复 支持 反对

使用道具 举报

5

主题

14

帖子

0

精华

初级会员

Rank: 2

积分
54
金钱
54
注册时间
2012-5-5
在线时间
0 小时
 楼主| 发表于 2013-3-2 22:39:22 | 显示全部楼层
回复【2楼】正点原子:

可以的.
设置为任意边沿触发即可.

---------------------------------
我弄清楚了,它这双边沿触发指的是来一次上升沿然后再来一次下降沿才开始触发,而不是只要有边沿来就触发的
回复 支持 反对

使用道具 举报

28

主题

103

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
330
金钱
330
注册时间
2013-7-25
在线时间
36 小时
发表于 2013-10-21 09:27:06 | 显示全部楼层
我查了一下寄存器,感觉寄存器配置只有上升沿 、下降沿两种    没有双边沿检测啊,我现在想用到双边沿检测,想问你一下怎么实现的?
QQ截图20131021092259.png
回复 支持 反对

使用道具 举报

4

主题

21

帖子

0

精华

初级会员

Rank: 2

积分
57
金钱
57
注册时间
2014-4-1
在线时间
0 小时
发表于 2014-4-28 14:53:21 | 显示全部楼层
回复【2楼】正点原子:
---------------------------------
请问原子哥,怎么配置成任意边沿出发呀。
TIM_ICInitStructure.TIM_ICPolarity = TIM_ICPolarity_BothEdge;
我的代码是这样的,但是时间是一个高电平加低电平的时间和。不单是一个时间。

下面这样配置可以吗?
TIM_ICInitStructure.TIM_ICPolarity =TIM_ICPolarity_Rising|TIM_ICPolarity_Falling ; 

好多不会,真为智商着急。。。
回复 支持 反对

使用道具 举报

530

主题

11万

帖子

34

精华

管理员

Rank: 12Rank: 12Rank: 12

积分
165352
金钱
165352
注册时间
2010-12-1
在线时间
2108 小时
发表于 2014-4-28 19:07:04 | 显示全部楼层
回复【5楼】柴柳青:
---------------------------------
你的库函数,应该设置TIM_ICPolarity_BothEdge是对的。
我是开源电子网www.openedv.com站长,有关站务问题请与我联系。
正点原子STM32开发板购买店铺http://openedv.taobao.com
正点原子官方微信公众平台,点击这里关注“正点原子”
回复 支持 反对

使用道具 举报

0

主题

2

帖子

0

精华

新手入门

积分
22
金钱
22
注册时间
2014-7-24
在线时间
0 小时
发表于 2014-7-24 20:03:12 | 显示全部楼层
回复【6楼】正点原子:
---------------------------------
回复【6楼】正点原子:
---------------------------------
我查了下寄存器,根本没有双边沿检测,TIM_ICPolarity_BothEdge库函数里的宏定义是0x000A,0x000A表示TIMx_CCER寄存器第三位和第一位是1,而第三位和第二位保留,所以只有第一位起作用,也就是下降沿触发。不知道问题出在哪里了。图片见3楼附件。
回复 支持 反对

使用道具 举报

530

主题

11万

帖子

34

精华

管理员

Rank: 12Rank: 12Rank: 12

积分
165352
金钱
165352
注册时间
2010-12-1
在线时间
2108 小时
发表于 2014-7-25 00:21:23 | 显示全部楼层
回复【7楼】啊啊啊11223344:
---------------------------------
同时开启上升沿和下降沿,就是双边检测啊。
我是开源电子网www.openedv.com站长,有关站务问题请与我联系。
正点原子STM32开发板购买店铺http://openedv.taobao.com
正点原子官方微信公众平台,点击这里关注“正点原子”
回复 支持 反对

使用道具 举报

0

主题

2

帖子

0

精华

新手入门

积分
22
金钱
22
注册时间
2014-7-24
在线时间
0 小时
发表于 2014-7-25 09:42:53 | 显示全部楼层
请问如何同时开启上升沿和下降沿?当第一位为0时是上升沿捕获,为1时是下降沿捕获。就一个位怎么让他同时为1又为0.

回复 支持 反对

使用道具 举报

530

主题

11万

帖子

34

精华

管理员

Rank: 12Rank: 12Rank: 12

积分
165352
金钱
165352
注册时间
2010-12-1
在线时间
2108 小时
发表于 2014-7-25 23:40:52 | 显示全部楼层
回复【9楼】啊啊啊11223344:
---------------------------------
你这里只是控制输入信号反相还是不反,这和你上升沿下降沿有什么关系?

相当于输入信号,加入一个反相器还是不加的问题.
我是开源电子网www.openedv.com站长,有关站务问题请与我联系。
正点原子STM32开发板购买店铺http://openedv.taobao.com
正点原子官方微信公众平台,点击这里关注“正点原子”
回复 支持 反对

使用道具 举报

0

主题

2

帖子

0

精华

新手入门

积分
22
金钱
22
注册时间
2014-8-11
在线时间
0 小时
发表于 2014-8-11 11:35:12 | 显示全部楼层
回复【10楼】正点原子:
---------------------------------
哥,真的不可以。那两个一与还是和下降沿触发的值是相同的。不知道到底能不能,双边沿触发。老子在搞曼彻斯特编码。总是搜索到你这个帖子。
回复 支持 反对

使用道具 举报

530

主题

11万

帖子

34

精华

管理员

Rank: 12Rank: 12Rank: 12

积分
165352
金钱
165352
注册时间
2010-12-1
在线时间
2108 小时
发表于 2014-8-11 18:27:30 | 显示全部楼层
回复【11楼】cox__w:
---------------------------------
额,这个您慢慢研究下了。
我是开源电子网www.openedv.com站长,有关站务问题请与我联系。
正点原子STM32开发板购买店铺http://openedv.taobao.com
正点原子官方微信公众平台,点击这里关注“正点原子”
回复 支持 反对

使用道具 举报

0

主题

2

帖子

0

精华

新手入门

积分
22
金钱
22
注册时间
2014-8-11
在线时间
0 小时
发表于 2014-9-14 20:40:49 | 显示全部楼层
回复【12楼】正点原子:
---------------------------------
需要两个IO口,一个侦测上升沿,一个侦测下降沿.之后就可以计算高低脉冲的时间了.
回复 支持 反对

使用道具 举报

0

主题

3

帖子

0

精华

新手入门

积分
23
金钱
23
注册时间
2015-3-10
在线时间
0 小时
发表于 2015-3-10 16:27:05 | 显示全部楼层
回复【5楼】柴柳青:
---------------------------------
你的双边触发程序怎么弄的?能不能发一份给我呢5218457mm@163.com
回复 支持 反对

使用道具 举报

8

主题

47

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
220
金钱
220
注册时间
2015-12-23
在线时间
63 小时
发表于 2016-1-11 21:04:33 | 显示全部楼层
这个是可以捕获的,请看图,以定时器1为例,设置输入捕获映射到TRC,即捕获/比较模式寄存器CCMR的CC1S[1:0]写入11    然后将从模式控制寄存器SMCR的TS[2:0]写入100,以检测TI1的边沿(上升沿和下降沿),注意SCMR寄存器低4位SMS[1:0]保持为0不要动    这样就会捕获CH1输入信号的双边沿了,试试吧 QQ五笔截图未命名.png
回复 支持 反对

使用道具 举报

0

主题

1

帖子

0

精华

新手入门

积分
14
金钱
14
注册时间
2019-7-10
在线时间
3 小时
发表于 2019-10-16 13:52:09 | 显示全部楼层
双边沿检测不是每个定时器都有,对于 F103,TIM2-TIM5都不能直接设置成双边沿捕捉,需要自己在中断用代码实现。F1的HAL库里的双边沿检测是给高级定时器TIM1,TIM8使用的。此外F4的TIM2是有双边沿检测的。我之前用的F401,现在改为F103节省成本,同样是TIM2,发现就是不能双边沿触发,最后才发现是这个问题。
回复 支持 反对

使用道具 举报

6

主题

30

帖子

0

精华

初级会员

Rank: 2

积分
150
金钱
150
注册时间
2018-1-19
在线时间
20 小时
发表于 2019-12-20 21:49:53 | 显示全部楼层
可以双边沿触发进入中断吗,
回复 支持 反对

使用道具 举报

0

主题

2

帖子

0

精华

新手上路

积分
45
金钱
45
注册时间
2016-3-24
在线时间
15 小时
发表于 2021-9-11 06:01:41 | 显示全部楼层
chunxiahyc 发表于 2019-10-16 13:52
双边沿检测不是每个定时器都有,对于 F103,TIM2-TIM5都不能直接设置成双边沿捕捉,需要自己在中断用代码实 ...

总算有人给出了所以然,感谢!
回复 支持 反对

使用道具 举报

0

主题

3

帖子

0

精华

初级会员

Rank: 2

积分
87
金钱
87
注册时间
2019-3-20
在线时间
27 小时
发表于 2021-11-20 15:15:44 | 显示全部楼层
江苏大学 发表于 2016-1-11 21:04
这个是可以捕获的,请看图,以定时器1为例,设置输入捕获映射到TRC,即捕获/比较模式寄存器CCMR的CC1S[1:0 ...

感谢,确实可以实现双边沿检测
回复 支持 反对

使用道具 举报

0

主题

7

帖子

0

精华

新手上路

积分
38
金钱
38
注册时间
2022-9-20
在线时间
7 小时
发表于 2022-9-21 10:22:18 | 显示全部楼层
我也想知道
回复 支持 反对

使用道具 举报

0

主题

1

帖子

0

精华

新手入门

积分
3
金钱
3
注册时间
2023-2-6
在线时间
0 小时
发表于 2023-2-6 16:48:34 | 显示全部楼层
江苏大学 发表于 2016-1-11 21:04
这个是可以捕获的,请看图,以定时器1为例,设置输入捕获映射到TRC,即捕获/比较模式寄存器CCMR的CC1S[1:0 ...

非常感谢您的回答,按照您的提示,CCMR寄存的CC1S[1:0]设置成‘11’,SMCR寄存器的TS[2:0]写入‘100’即可。SMS[2:0]可以设置为复位模式,这样每次捕获的值就是一个周期内的高低电平时间。
非常感谢!
回复 支持 反对

使用道具 举报

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

本版积分规则



关闭

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

正点原子公众号

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

GMT+8, 2024-11-24 19:03

Powered by OpenEdv-开源电子网

© 2001-2030 OpenEdv-开源电子网

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