OpenEdv-开源电子网

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

定时器3编码器一直读取错误

[复制链接]

19

主题

56

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
323
金钱
323
注册时间
2016-8-9
在线时间
41 小时
发表于 2021-7-23 15:16:36 | 显示全部楼层 |阅读模式
1金钱
编码器配置如下:
static void ENCODER_TIMx_GPIO_Config(void)
{
  GPIO_InitTypeDef GPIO_InitStructure;

  /* 使能定时器通道引脚GPIO时钟 */
  RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOA|RCC_APB2Periph_AFIO, ENABLE);

  /* 配置定时器通道1引脚模式: */
  GPIO_InitStructure.GPIO_Pin =  GPIO_Pin_6|GPIO_Pin_7;
  GPIO_InitStructure.GPIO_Mode = GPIO_Mode_IN_FLOATING;
  GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;
  GPIO_Init(GPIOA, &GPIO_InitStructure);  
}
//
static void ENCODER_TIMx_Configuration(void)
{
  TIM_TimeBaseInitTypeDef  TIM_TimeBaseStructure;
  TIM_ICInitTypeDef        TIM_ICInitStructure;

  RCC_APB1PeriphClockCmd(RCC_APB1Periph_TIM3,ENABLE);
  TIM_TimeBaseStructure.TIM_Period = 0XFFFF;

  TIM_TimeBaseStructure.TIM_Prescaler = 0;

  TIM_TimeBaseStructure.TIM_ClockDivision = TIM_CKD_DIV1 ;
  /* 向上计数模式 */
  TIM_TimeBaseStructure.TIM_CounterMode = TIM_CounterMode_Up;
  TIM_TimeBaseInit(TIM3, &TIM_TimeBaseStructure);

        TIM_ICInitStructure.TIM_Channel     = TIM_Channel_1;
        TIM_ICInitStructure.TIM_ICPolarity  = TIM_ICPolarity_Rising;       
        TIM_ICInitStructure.TIM_ICSelection = TIM_ICSelection_DirectTI;
        TIM_ICInitStructure.TIM_ICPrescaler = TIM_ICPSC_DIV1;                   
        TIM_ICInitStructure.TIM_ICFilter    = 0x00;     

        TIM_ICInitStructure.TIM_Channel     = TIM_Channel_2;
        TIM_ICInitStructure.TIM_ICPolarity  = TIM_ICPolarity_Rising;       
        TIM_ICInitStructure.TIM_ICSelection = TIM_ICSelection_DirectTI;
        TIM_ICInitStructure.TIM_ICPrescaler = TIM_ICPSC_DIV1;                   
        TIM_ICInitStructure.TIM_ICFilter    = 0x00;        
        TIM_ICInit(TIM3, &TIM_ICInitStructure);  

    TIM_EncoderInterfaceConfig(TIM3,TIM_EncoderMode_TI12,TIM_ICPolarity_Falling,TIM_ICPolarity_Falling);

    TIM_SetCounter(TIM3, 0);      
  TIM_Cmd(TIM3, ENABLE);                                                       
}


每50ms读一次值,读完清除tim3 cnt。
电机实际测速64转/分钟 编码器正常读数应该2000左右,实际读数一直在433徘徊  
理论值计算 2000/2*20*60/1000/19=63
实际计算值 433/2*20*60/1000/19 = 14
编码器参数 1000线  减速比19:1

最佳答案

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

问题已解决,50ms的滴答定时器配置错了,,读数其实一直对着呢
正点原子逻辑分析仪DL16劲爆上市
回复

使用道具 举报

19

主题

56

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
323
金钱
323
注册时间
2016-8-9
在线时间
41 小时
 楼主| 发表于 2021-7-23 15:16:37 来自手机 | 显示全部楼层
问题已解决,50ms的滴答定时器配置错了,,读数其实一直对着呢
回复

使用道具 举报

530

主题

11万

帖子

34

精华

管理员

Rank: 12Rank: 12Rank: 12

积分
165524
金钱
165524
注册时间
2010-12-1
在线时间
2116 小时
发表于 2021-7-24 02:01:41 | 显示全部楼层
帮顶
回复

使用道具 举报

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

本版积分规则



关闭

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

正点原子公众号

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

GMT+8, 2025-5-25 10:33

Powered by OpenEdv-开源电子网

© 2001-2030 OpenEdv-开源电子网

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