OpenEdv-开源电子网

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

定时器,输入捕获,编码器接口模式 关系是什么

[复制链接]

30

主题

104

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
244
金钱
244
注册时间
2015-8-9
在线时间
0 小时
发表于 2015-8-31 19:39:31 | 显示全部楼层 |阅读模式
5金钱
[mw_shl_code=c,true]谢谢各位,谢谢原子哥 第一,首先明确我的功能,就是想通过STM32实现对直线型磁栅编码器发出的脉冲进行计数,(也即当来一个脉冲,记一次数,)以便知道单位长度对应着多少个脉冲信号; 第二,由于原子哥的视频没有编码器接口的视频,所以我是按照输入捕获实验来学习的;但是还没有学懂;所以找了以前师兄编写的程序在看;如下;里面既设置了GPIO的一些东西(我没有贴出来),也设置了定时器的一些东西,还设置了编码器接口,还设置了输入捕获;所以我的问题来了; 疑问:A:图中对编码器接口的设置能实现我的功能吗?B:我只想对脉冲个数进行计数,是不是只需要设置编码器接口就行了?为什么还要设置定时器那些东西呢?定时器,输入捕获,编码器接口模式他们之间的关系是什么呢?设置定时器后,定时器不就是按照设定的周期自行的计数吗?并不是检测到一个脉冲计一次数;C如果图中程序不能实现我的功能,那请教大师们,想实现我的功能,都需要设置哪些,怎么设置?谢谢了;我搞了10天左右了,都没有搞定这个功能;请大家指点,谢谢; [/mw_shl_code]
[mw_shl_code=c,true] /* Timer configuration in Encoder mode for left encoder*/ TIM_TimeBaseStructure.TIM_Prescaler = 0x00; // No prescaling TIM_TimeBaseStructure.TIM_Period = 200000; //max resolution(0xffffffff for TIM2&TIM5 0xffff for TIM3&TIM4) //????????????1/84M,?ó????0.0119us??200000??????×??±???ó????0.02???????????? TIM_TimeBaseStructure.TIM_ClockDivision = TIM_CKD_DIV1;//devide by clock by one TIM_TimeBaseStructure.TIM_CounterMode = TIM_CounterMode_Up;// count up TIM_TimeBaseInit(TIM5, &TIM_TimeBaseStructure); TIM_EncoderInterfaceConfig(TIM5, TIM_EncoderMode_TI12, TIM_ICPolarity_BothEdge, TIM_ICPolarity_BothEdge); TIM_ICStructInit(&TIM_ICInitStructure);//°????????è???????????? TIM_ICInitStructure.TIM_ICFilter = 6;//ICx_FILTER;//???¨?÷???¤?????×?????????????? //???°?????????????????????¨?÷?¤????×÷???? TIM_ICInit(TIM5, &TIM_ICInitStructure); // Clear all pending interrupts TIM_ClearFlag(TIM5, TIM_FLAG_Update); TIM_ITConfig(TIM5, TIM_IT_Update, ENABLE);//?ò???ü?????? //Reset counter TIM5->CNT = 500000;//prevent exceeding 0 when turning wheel backwards TIM_Cmd(TIM5, ENABLE);//enable left encoder[/mw_shl_code]

最佳答案

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

stm32的定时器很强大的。不仅仅只有定时中断的功能哟。可以开启输入捕获功能。 当然你也可以考虑用外部中断来做。 定时器的特殊功能要指定管脚(具体那些管脚对应那些功能,这个你要自己去查看手册和规格书,st官网上有提供的)。
正点原子逻辑分析仪DL16劲爆上市
回复

使用道具 举报

30

主题

705

帖子

1

精华

新手上路

积分
21
金钱
21
注册时间
2013-3-14
在线时间
52 小时
发表于 2015-8-31 19:39:32 | 显示全部楼层
stm32的定时器很强大的。不仅仅只有定时中断的功能哟。可以开启输入捕获功能。
当然你也可以考虑用外部中断来做。
定时器的特殊功能要指定管脚(具体那些管脚对应那些功能,这个你要自己去查看手册和规格书,st官网上有提供的)。
原子哥是不是又要出黑科技了呀。^_^...
回复

使用道具 举报

30

主题

104

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
244
金钱
244
注册时间
2015-8-9
在线时间
0 小时
 楼主| 发表于 2015-8-31 19:56:25 | 显示全部楼层
回复【2楼】fanghuiopenedv:
---------------------------------
我也感觉不应该只有定时中断;比如我想实现的功能,就是当捕捉到一个上升沿,就当捕获一个脉冲,就计数一次;那么 捕获到上升沿我就中断计数一次可以吗?
如果可以,中断类型是不是还是TIM_IT_Update吗?是不是应该是这个TIM_IT_CC1 中断类型呢?这几种中断类型我不知道如何区分,库里也没有什么解释;
回复

使用道具 举报

30

主题

705

帖子

1

精华

新手上路

积分
21
金钱
21
注册时间
2013-3-14
在线时间
52 小时
发表于 2015-8-31 20:07:31 | 显示全部楼层
回复【3楼】wolfcan:
---------------------------------
你还是看下手册吧。感觉你对stm32不是怎么了解。手册上有专门解释tim的,或者你看下原子哥的书。
原子哥是不是又要出黑科技了呀。^_^...
回复

使用道具 举报

530

主题

11万

帖子

34

精华

管理员

Rank: 12Rank: 12Rank: 12

积分
165371
金钱
165371
注册时间
2010-12-1
在线时间
2110 小时
发表于 2015-8-31 21:06:35 | 显示全部楼层
回复【3楼】wolfcan:
---------------------------------
可以,中断类型,去看stm32参考手册。
里面有详细描述。
我是开源电子网www.openedv.com站长,有关站务问题请与我联系。
正点原子STM32开发板购买店铺http://openedv.taobao.com
正点原子官方微信公众平台,点击这里关注“正点原子”
回复

使用道具 举报

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

本版积分规则



关闭

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

正点原子公众号

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

GMT+8, 2025-2-25 06:25

Powered by OpenEdv-开源电子网

© 2001-2030 OpenEdv-开源电子网

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