OpenEdv-开源电子网

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

两路正交编码器只有TIM4好使

[复制链接]

1

主题

6

帖子

0

精华

新手上路

积分
33
金钱
33
注册时间
2015-8-3
在线时间
1 小时
发表于 2015-8-4 22:34:11 | 显示全部楼层 |阅读模式
5金钱
使用TIM4做正交编码器好使,然后我直接复制TIM4的代码,换成TIM5,就不好使了,只能记到3个数,0、1、65535,不知道什么问题,有做过这一方面的没?
[mw_shl_code=c,true]/*********************************************************** ( 编码器)红线接3.3V,黑线接地 编码器接口模式 , 速度检测与方向检测TIM2/4用于编码模式 PA0(TIM2_CH1)接绿线;PA1(TIM2_CH2)接白线。 PB6(TIM4_CH1)接绿线;PB7(TIM4_CH2)接白线。 ***********************************************************/ //****************TIM5用于编码模式************** void TIM5_Configuration(void) { TIM_TimeBaseInitTypeDef TIM_TimeBaseStructure; GPIO_InitTypeDef GPIO_InitStructure; RCC_APB1PeriphClockCmd(RCC_APB1Periph_TIM5, ENABLE);//使能由APB1控制的TIM5端口时钟 TIM_DeInit(TIM5); //TIM4初始化 //GPIO配置PA0、PA1 RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOA,ENABLE); //使能PA端口时钟 GPIO_InitStructure.GPIO_Pin = GPIO_Pin_0|GPIO_Pin_1; GPIO_InitStructure.GPIO_Mode = GPIO_Mode_IN_FLOATING; //PA0,PA1 浮空输入 GPIO_Init(GPIOA,&GPIO_InitStructure); //TIM5编码模式 TIM_EncoderInterfaceConfig(TIM5,TIM_EncoderMode_TI12,TIM_ICPolarity_Rising,TIM_ICPolarity_Rising); /* Time Base configuration */ TIM_TimeBaseStructure.TIM_Prescaler = 0; //不分频 TIM_TimeBaseStructure.TIM_Period = 0xFFFF; //设置计数器溢出后的重载初值 TIM_TimeBaseInit(TIM5, &TIM_TimeBaseStructure); //用以上参数初始化定时器时间基础模块 TIM_Cmd(TIM5, ENABLE); //使能定时器5 } //***********读计数TIM5个数************** int TIM5_Encoder_Read(void) { s16 data; data=(s16)(TIM_GetCounter(TIM5)); return (int)data; } //***************TIM5计数寄存器赋值*********** void TIM5_Encoder_Write(int data) { TIM5->CNT = data; } //***********读计数TIM4个数************** int TIM4_Encoder_Read(void) { s16 data; data=(s16)(TIM_GetCounter(TIM4)); return (int)data; } //***************TIM4计数寄存器赋值*********** void TIM4_Encoder_Write(int data) { TIM4->CNT = data; } //*****************TIM4用于编码模式************* void TIM4_Configuration(void) { TIM_TimeBaseInitTypeDef TIM_TimeBaseStructure; GPIO_InitTypeDef GPIO_InitStructure; RCC_APB1PeriphClockCmd(RCC_APB1Periph_TIM4, ENABLE);//使能由APB1控制的TIM4端口时钟 TIM_DeInit(TIM4); //TIM4初始化 //GPIO配置PB6,PB7 RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOB,ENABLE); //使能PB端口时钟 GPIO_InitStructure.GPIO_Pin = GPIO_Pin_6|GPIO_Pin_7; GPIO_InitStructure.GPIO_Mode = GPIO_Mode_IN_FLOATING; //PB6,PB7 浮空输入 GPIO_Init(GPIOB,&GPIO_InitStructure); //TIM4编码模式 TIM_EncoderInterfaceConfig(TIM4,TIM_EncoderMode_TI12,TIM_ICPolarity_Rising,TIM_ICPolarity_Rising); /* Time Base configuration */ TIM_TimeBaseStructure.TIM_Prescaler = 0; //不分频 TIM_TimeBaseStructure.TIM_Period = 0xFFFF; //设置计数器溢出后的重载初值 TIM_TimeBaseInit(TIM4, &TIM_TimeBaseStructure); //用以上参数初始化定时器时间基础模块 TIM_Cmd(TIM4, ENABLE); //使能定时器4 }[/mw_shl_code] 程序是移植了别人的,希望哪位大神能帮忙指点一下啊,是在是弄不懂了

最佳答案

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

已经解决了,换成TIM2的通道3和3产生PWM波,TIM3和TIM4设置为正交编码器,两个配置一样,结果都好使了,不知道是中断的问题还是定时器的问题,所有中断都能进去,换成其他TIM就不好用,我也是很无奈,目前就这么用着吧,已经能实现我想要的结果了
正点原子逻辑分析仪DL16劲爆上市
回复

使用道具 举报

1

主题

6

帖子

0

精华

新手上路

积分
33
金钱
33
注册时间
2015-8-3
在线时间
1 小时
 楼主| 发表于 2015-8-4 22:34:12 | 显示全部楼层
已经解决了,换成TIM2的通道3和3产生PWM波,TIM3和TIM4设置为正交编码器,两个配置一样,结果都好使了,不知道是中断的问题还是定时器的问题,所有中断都能进去,换成其他TIM就不好用,我也是很无奈,目前就这么用着吧,已经能实现我想要的结果了
回复

使用道具 举报

530

主题

11万

帖子

34

精华

管理员

Rank: 12Rank: 12Rank: 12

积分
165540
金钱
165540
注册时间
2010-12-1
在线时间
2117 小时
发表于 2015-8-4 23:29:56 | 显示全部楼层
帮顶。。。。
我是开源电子网www.openedv.com站长,有关站务问题请与我联系。
正点原子STM32开发板购买店铺http://openedv.taobao.com
正点原子官方微信公众平台,点击这里关注“正点原子”
回复

使用道具 举报

1

主题

6

帖子

0

精华

新手上路

积分
33
金钱
33
注册时间
2015-8-3
在线时间
1 小时
 楼主| 发表于 2015-8-5 10:00:49 | 显示全部楼层
回复【2楼】正点原子:
---------------------------------
谢谢原子哥,原子哥知道怎么弄不?
回复

使用道具 举报

0

主题

3

帖子

0

精华

新手上路

积分
36
金钱
36
注册时间
2014-10-11
在线时间
1 小时
发表于 2015-12-7 14:17:23 | 显示全部楼层
拜谢大神 已使用成功
回复

使用道具 举报

0

主题

1

帖子

0

精华

新手上路

积分
36
金钱
36
注册时间
2016-1-4
在线时间
11 小时
发表于 2016-1-5 13:11:01 | 显示全部楼层
先记下,备用。谢谢分享
回复

使用道具 举报

3

主题

21

帖子

0

精华

初级会员

Rank: 2

积分
60
金钱
60
注册时间
2014-11-7
在线时间
2 小时
发表于 2016-1-5 13:32:32 | 显示全部楼层
对于6楼的提问,请大家给些意见
回复

使用道具 举报

3

主题

21

帖子

0

精华

初级会员

Rank: 2

积分
60
金钱
60
注册时间
2014-11-7
在线时间
2 小时
发表于 2016-1-6 10:59:17 | 显示全部楼层
按照程序,可以计数了,但当每次正交信号设为组,编码器模式为在IC1上升沿采集,计数却是每次加2,且奇数增加跟偶数增加分开计数(即先是2、4、6...,再是1、3、5...)
回复

使用道具 举报

11

主题

56

帖子

0

精华

新手上路

积分
41
金钱
41
注册时间
2015-12-7
在线时间
48 小时
发表于 2016-4-7 11:16:33 | 显示全部楼层
楼主能分享一下代码吗?我现在TIM4可以用,TIM3死活搞不出来
回复

使用道具 举报

1

主题

2

帖子

0

精华

新手入门

积分
14
金钱
14
注册时间
2016-7-17
在线时间
3 小时
发表于 2016-7-23 17:01:17 | 显示全部楼层
我不是萌妹子 发表于 2016-4-7 11:16
楼主能分享一下代码吗?我现在TIM4可以用,TIM3死活搞不出来

请问解决了吗 我也碰到你这个问题
回复

使用道具 举报

11

主题

56

帖子

0

精华

新手上路

积分
41
金钱
41
注册时间
2015-12-7
在线时间
48 小时
发表于 2016-8-1 09:16:30 | 显示全部楼层
jishixuan 发表于 2016-7-23 17:01
请问解决了吗 我也碰到你这个问题

我后来就没弄了0.0
回复

使用道具 举报

1

主题

6

帖子

0

精华

新手上路

积分
33
金钱
33
注册时间
2015-8-3
在线时间
1 小时
 楼主| 发表于 2017-1-3 20:19:03 | 显示全部楼层
问题解决了,你们要的代码在附件里,

16-Mini Balance Car.zip

4.42 MB, 下载次数: 10475

回复

使用道具 举报

1

主题

6

帖子

0

精华

新手上路

积分
33
金钱
33
注册时间
2015-8-3
在线时间
1 小时
 楼主| 发表于 2017-1-3 20:20:31 | 显示全部楼层
jishixuan 发表于 2016-7-23 17:01
请问解决了吗 我也碰到你这个问题

解决了,看12楼
回复

使用道具 举报

1

主题

12

帖子

0

精华

新手上路

积分
40
金钱
40
注册时间
2017-3-30
在线时间
7 小时
发表于 2017-5-26 16:21:08 | 显示全部楼层
PA0和PA1的TIM5是需要调用端口复用函数的,你没有调用PA0和PA1默认是TIM2定时器。
回复

使用道具 举报

0

主题

6

帖子

0

精华

初级会员

Rank: 2

积分
57
金钱
57
注册时间
2016-11-22
在线时间
23 小时
发表于 2017-7-28 09:51:03 | 显示全部楼层
你好,我也遇到只能接收三个数据,0 1 65535,而且还是你在下面发的程序,请问知道是为什么吗??急求啊!!!!!!!
回复

使用道具 举报

0

主题

6

帖子

0

精华

初级会员

Rank: 2

积分
57
金钱
57
注册时间
2016-11-22
在线时间
23 小时
发表于 2017-7-28 10:58:59 | 显示全部楼层
心雨达致 发表于 2015-8-5 10:00
回复【2楼】正点原子:
---------------------------------
谢谢原子哥,原子哥知道怎么弄不?

兄弟,解决没有?可以教教我吗?
回复

使用道具 举报

0

主题

3

帖子

0

精华

新手入门

积分
13
金钱
13
注册时间
2017-7-29
在线时间
2 小时
发表于 2017-8-6 16:07:14 | 显示全部楼层
我也遇到了相同的问题,但是你们有没有注意到,TIM_EncoderInterfaceConfig();这个函数只能设置TIM2\TIM3\TIM4,不能设置TIM5,大家可以看看固件库手册,我估计应该是TIM5没有这个功能吧(猜测)
回复

使用道具 举报

0

主题

2

帖子

0

精华

新手入门

积分
6
金钱
6
注册时间
2019-4-29
在线时间
1 小时
发表于 2019-4-29 23:34:31 | 显示全部楼层
心雨达致 发表于 2017-1-3 20:19
问题解决了,你们要的代码在附件里,

好气啊,楼主你他妈的,弄的啥东西,骗人注册登陆,然后附件又他妈的不能下载,操
回复

使用道具 举报

8

主题

156

帖子

0

精华

金牌会员

Rank: 6Rank: 6

积分
1553
金钱
1553
注册时间
2016-11-21
在线时间
411 小时
发表于 2019-4-30 13:57:54 | 显示全部楼层
树是几年秋 发表于 2019-4-29 23:34
好气啊,楼主你他妈的,弄的啥东西,骗人注册登陆,然后附件又他妈的不能下载,操

什么鬼...我怎么能下载
回复

使用道具 举报

1

主题

4

帖子

0

精华

新手上路

积分
38
金钱
38
注册时间
2018-1-23
在线时间
12 小时
发表于 2020-5-30 16:33:04 | 显示全部楼层
如果可以确定程序的配置没问题的话,建议检查一下编码器的信号线是否有一根连接不良,一根信号线未接好的一个现象就是:读到的脉冲数只有0、1、65535。(本人痛苦经历)
回复

使用道具 举报

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

本版积分规则



关闭

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

正点原子公众号

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

GMT+8, 2025-6-28 23:34

Powered by OpenEdv-开源电子网

© 2001-2030 OpenEdv-开源电子网

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