野火电子论坛

 找回密码
 注册

QQ登录

只需一步,快速开始

查看: 12796|回复: 5

编码器

[复制链接]
发表于 2016-11-1 21:00:41 | 显示全部楼层 |阅读模式
求stm32库函数版电机编码器测速例程,自己写的不知怎么回事,输出总是零!
回复

使用道具 举报

 楼主| 发表于 2016-11-1 21:01:20 | 显示全部楼层
TIM_TimeBaseInitTypeDef   TIM_TimeBaseStructure;
         TIM_ICInitTypeDef         TIM_ICInitStructure;
         GPIO_InitTypeDef          GPIO_InitStructure;

               
         RCC_APB1PeriphClockCmd(RCC_APB1Periph_TIM4,ENABLE);//TIM4时钟使能
         RCC_AHB1PeriphClockCmd(RCC_AHB1Periph_GPIOB,ENABLE);//使能PORTA时钟

         /* 定时器复用引脚 */
         GPIO_PinAFConfig( GPIOB,GPIO_Pin_6,GPIO_AF_TIM4);
         GPIO_PinAFConfig( GPIOB,GPIO_Pin_7,GPIO_AF_TIM4);
       
       
         GPIO_InitStructure.GPIO_Pin = GPIO_Pin_6 |GPIO_Pin_7;//PB6,PB7
//         GPIO_InitStructure.GPIO_Mode =GPIO_Mode_IN_FLOATING;//浮空输入
        GPIO_InitStructure.GPIO_Mode = GPIO_Mode_AF;  
//         GPIO_InitStructure.GPIO_OType = GPIO_OType_PP;
//         GPIO_InitStructure.GPIO_Speed = GPIO_Speed_100MHz;
         GPIO_InitStructure.GPIO_PuPd=GPIO_PuPd_NOPULL;
         GPIO_Init(GPIOB, &GPIO_InitStructure);
         
         
         
         TIM_DeInit(TIM4);//重新将Timer设置为缺省值
         TIM_TimeBaseStructInit(&TIM_TimeBaseStructure);
         
         TIM_TimeBaseStructure.TIM_Prescaler = 2-1;  // 不分频
         
         TIM_TimeBaseStructure.TIM_Period =0xFFFF;
         TIM_TimeBaseStructure.TIM_ClockDivision =TIM_CKD_DIV1;//选择时钟分频:不分频
         TIM_TimeBaseStructure.TIM_CounterMode =TIM_CounterMode_Up; //向上计数模式
                                                                                                                                                                                                                                        //(当配置为中央对齐模式或者编码器模式时,此位只读)
         TIM_TimeBaseInit(TIM4,&TIM_TimeBaseStructure);
         
         TIM_EncoderInterfaceConfig(TIM4,TIM_EncoderMode_TI12, TIM_ICPolarity_Rising, TIM_ICPolarity_Rising);//TI1和TI2的输入均在上升沿和下降沿有效
                                                                                                //选择模式 :两相计数(速度和方向)
                                                                                               
         TIM_ICStructInit(&TIM_ICInitStructure);
         TIM_ICInitStructure.TIM_Channel = TIM_Channel_1;//选择通道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 = 0x03;//0011 对应8个事件输出一个跳变
         TIM_ICInit(TIM4,&TIM_ICInitStructure);
//          TIM_PWMIConfig(ADVANCE_TIM, &TIM_ICInitStructure);
         
         TIM_ICInitStructure.TIM_Channel = TIM_Channel_2;//选择通道2
//         TIM_ICInitStructure.TIM_ICPolarity = TIM_ICPolarity_Rising;
         TIM_ICInitStructure.TIM_ICSelection = TIM_ICSelection_DirectTI;//映射到 TI2 上
         TIM_ICInitStructure.TIM_ICPrescaler = TIM_ICPSC_DIV1;
         TIM_ICInitStructure.TIM_ICFilter = 0x03;
         TIM_ICInit(TIM4,&TIM_ICInitStructure);
         
//         TIM_ICPreloadConfig(ADVANCE_TIM, TIM_OCPreload_Enable);
         
   TIM_ClearFlag(TIM4, TIM_FLAG_Update);//清除TIM的更新标志位
   TIM_ITConfig(TIM4, TIM_IT_Update, ENABLE);
         
         TIM_SetCounter(TIM4,0);
         TIM_Cmd(TIM4, ENABLE);
回复 支持 反对

使用道具 举报

 楼主| 发表于 2016-11-1 21:01:44 | 显示全部楼层
                Encoder_L= TIM_GetCounter(TIM4);        //===获取正交解码2数据       
          TIM_SetCounter(TIM4,0);              //===计数器清零
                Encoder_Left=(uint8_t) Encoder_L;
                printf("Encoder_Left = %d\r\n",Encoder_L);
                printf("Encoder_Left = %d\r\n",Encoder_Left);
回复 支持 反对

使用道具 举报

 楼主| 发表于 2016-11-1 21:02:23 | 显示全部楼层
大神帮看看有没有问题,它总是输出零
回复 支持 反对

使用道具 举报

发表于 2016-11-2 08:54:30 | 显示全部楼层
可以看看开源平衡车栏目里的测速代码
回复 支持 反对

使用道具 举报

发表于 2016-11-7 10:01:50 | 显示全部楼层
我现在看到PA6PA7就想吧这两脚给掰掉,怎么都不出数据
回复 支持 反对

使用道具 举报

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

本版积分规则

联系站长|手机版|野火电子官网|野火淘宝店铺|野火电子论坛 ( 粤ICP备14069197号 ) 大学生ARM嵌入式2群

GMT+8, 2025-1-13 10:38 , Processed in 0.034574 second(s), 23 queries , Gzip On.

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

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