OpenEdv-开源电子网

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

我想用编码器测量角度,TIM3的CH1和CH2读不出编码器的脉冲

[复制链接]

2

主题

18

帖子

0

精华

新手上路

积分
46
金钱
46
注册时间
2014-7-17
在线时间
0 小时
发表于 2014-7-18 13:15:24 | 显示全部楼层 |阅读模式
5金钱
我想用编码器测量角度,我用的是欧姆龙 E6B2-CWZ6C 500线编码器,我就把A和B接到了tim3的ch1和ch2上(Z相没接),然后设置了浮空输入,我用万用表测这两脚的电压都是3.3V,调试时TIM3_CNT寄存器只会从0变到1.又从1变到0。但是如果独立把a相和b相用示波器测,是可以看到脉冲的,这是怎么回事?求各位大神帮帮忙!我的程序如下:
#include "encoder.h"
void TIM3_Mode_Config(void)
{

GPIO_InitTypeDef GPIO_InitStructure;
  TIM_TimeBaseInitTypeDef  TIM_TimeBaseStructure;
TIM_ICInitTypeDef TIM_ICInitStructure;                 
NVIC_InitTypeDef NVIC_InitStructure;
/*----------------------------------------------------------------*/
RCC_APB1PeriphClockCmd(RCC_APB1Periph_TIM3, ENABLE); //????????????
RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOA, ENABLE);             //????GPIOA
  GPIO_StructInit(&GPIO_InitStructure);
  GPIO_InitStructure.GPIO_Pin = GPIO_Pin_6 | GPIO_Pin_7;           //????PA6 A7????A?à??B?à
  GPIO_InitStructure.GPIO_Mode = GPIO_Mode_IN_FLOATING; //????????????
//GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;
  GPIO_Init(GPIOA, &GPIO_InitStructure);                             //??????GPIOA

/*----------------------------------------------------------------*/
  NVIC_InitStructure.NVIC_IRQChannel = TIM3_IRQn; 
NVIC_InitStructure.NVIC_IRQChannelPreemptionPriority = 1;
  NVIC_InitStructure.NVIC_IRQChannelSubPriority = 0;
  NVIC_InitStructure.NVIC_IRQChannelCmd = ENABLE; 
  NVIC_Init(&NVIC_InitStructure);
 /*---------------------------------------------------------------------*/
TIM_DeInit(TIM3);
TIM_TimeBaseStructInit(&TIM_TimeBaseStructure);
TIM_TimeBaseStructure.TIM_Period =0x07cf;       // ??×°???? 500*4-1
  TIM_TimeBaseStructure.TIM_Prescaler =0;       //?è???¤·?????
  TIM_TimeBaseStructure.TIM_ClockDivision =TIM_CKD_DIV1 ; //?è???±??·???????????·???
  TIM_TimeBaseStructure.TIM_CounterMode = TIM_CounterMode_Up;  //?ò??????????
  TIM_TimeBaseInit(TIM3, &TIM_TimeBaseStructure);               //??????TIM3

/*-----------------------------------------------------------------*/
//±à??????                      
TIM_EncoderInterfaceConfig(TIM3, TIM_EncoderMode_TI12, TIM_ICPolarity_Rising, TIM_ICPolarity_Rising);  //TIM_ICPolarity_Rising??????????
  TIM_ICStructInit(&TIM_ICInitStructure);
  TIM_ICInitStructure.TIM_ICFilter =6;         //±??????¨?÷
  TIM_ICInit(TIM3, &TIM_ICInitStructure);
  
TIM_ClearFlag(TIM3, TIM_FLAG_Update);
  TIM_ITConfig(TIM3, TIM_IT_Update, ENABLE);   //????????
  //Reset counter
  TIM3->CNT =0;

TIM_Cmd(TIM3, ENABLE);   //?????¨?±?÷3
}
void TIM_Init(void)
{
  TIM3_Mode_Config();
}

----------------------------------------------------------------------------------------------------------------------------------------
#include "delay.h"
#include "delay.h"
#include "GUI.h"
#include "sys.h"
#include "Lcd_Driver.h"
#include "usart.h"
#include "encoder.h"

 int main(void)
 {
  uint16_t encoder_num,a[5],t,d;
  float jiaodu,temp;  
delay_init();     //???±??????????  
NVIC_Configuration(); //?è??NVIC????·?×é2:2??????????????2???ì????????
uart_init(115200); //?®??????????9600
LCD_LED_SET;      //?¨??IO????±?????
Lcd_Init(0);
TIM_Init();
Lcd_Clear(GRAY0);
Gui_DrawFont_GBK16(0,20,GREEN,GRAY0,"????????!");
Gui_DrawFont_GBK16(0,40,BLUE,GRAY0,"?ù????????:");
Gui_DrawFont_GBK16(42,60,RED,GRAY0,"000.00??");
  while(1)
{
delay_ms(500);   
    encoder_num=TIM_GetCounter(TIM3);
jiaodu=0.72*encoder_num;
d=jiaodu;
t=d/10;
a[0]=t/10;

Gui_DrawFont_Num(42,60,RED,GRAY0,a[0]+0x10);
 a[1]=t%10;
Gui_DrawFont_Num(50,60,RED,GRAY0,a[1]+0x10);
a[2]=d%t;

Gui_DrawFont_Num(58,60,RED,GRAY0,a[2]+0x10);

temp=jiaodu-d;
temp=temp*10;
a[3]=temp;

Gui_DrawFont_Num(74,60,RED,GRAY0,a[3]+0x10);
temp=temp-a[3];
temp=temp*10;
a[4]=temp;

Gui_DrawFont_Num(82,60,RED,GRAY0,a[4]+0x10);
}

 }

安逸的生活只会毁了你
正点原子逻辑分析仪DL16劲爆上市
回复

使用道具 举报

2

主题

18

帖子

0

精华

新手上路

积分
46
金钱
46
注册时间
2014-7-17
在线时间
0 小时
 楼主| 发表于 2014-7-18 15:18:30 | 显示全部楼层
看到的也帮忙顶一下,谢谢了
安逸的生活只会毁了你
回复

使用道具 举报

530

主题

11万

帖子

34

精华

管理员

Rank: 12Rank: 12Rank: 12

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

使用道具 举报

2

主题

18

帖子

0

精华

新手上路

积分
46
金钱
46
注册时间
2014-7-17
在线时间
0 小时
 楼主| 发表于 2014-7-19 10:56:38 | 显示全部楼层
我自己也顶一下
安逸的生活只会毁了你
回复

使用道具 举报

14

主题

103

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
356
金钱
356
注册时间
2016-7-20
在线时间
39 小时
发表于 2017-7-15 06:10:19 | 显示全部楼层
编码器内部是PNP射极输出吧,得上拉吧
回复

使用道具 举报

1

主题

5

帖子

0

精华

新手上路

积分
31
金钱
31
注册时间
2017-4-19
在线时间
4 小时
发表于 2017-7-17 19:28:22 | 显示全部楼层
我也是同样的问题啊,帮顶
回复

使用道具 举报

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

本版积分规则



关闭

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

正点原子公众号

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

GMT+8, 2024-12-18 21:43

Powered by OpenEdv-开源电子网

© 2001-2030 OpenEdv-开源电子网

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