OpenEdv-开源电子网

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

STM32F4编码器问题

[复制链接]

9

主题

13

帖子

0

精华

初级会员

Rank: 2

积分
190
金钱
190
注册时间
2016-7-10
在线时间
59 小时
发表于 2016-7-17 21:59:04 | 显示全部楼层 |阅读模式
1金钱
求大神解答,为何PB6,PB7无法实现编码器接口功能?(寄存器的值一直为0)
void ENC_Init2(void)
{
  TIM_TimeBaseInitTypeDef  TIM_TimeBaseStructure;
  TIM_ICInitTypeDef TIM_ICInitStructure;

/* Encoder unit connected to TIM3, 4X mode */   
  GPIO_InitTypeDef GPIO_InitStructure;
  NVIC_InitTypeDef NVIC_InitStructure;

  /* TIM3 clock source enable */
  RCC_APB1PeriphClockCmd(RCC_APB1Periph_TIM4, ENABLE);
  /* Enable GPIOA, clock */
  RCC_AHB1PeriphClockCmd(RCC_AHB1Periph_GPIOB, ENABLE);
       

  GPIO_StructInit(&GPIO_InitStructure);
        GPIO_PinAFConfig(GPIOB, GPIO_PinSource6, GPIO_AF_TIM4);       
        GPIO_PinAFConfig(GPIOB, GPIO_PinSource7, GPIO_AF_TIM4);

        GPIO_InitStructure.GPIO_Pin   = GPIO_Pin_6 | GPIO_Pin_7;
        GPIO_InitStructure.GPIO_Mode  = GPIO_Mode_AF;
        GPIO_InitStructure.GPIO_OType = GPIO_OType_PP;
        GPIO_InitStructure.GPIO_PuPd  = GPIO_PuPd_UP ;
        GPIO_InitStructure.GPIO_Speed = GPIO_Speed_100MHz;   
        GPIO_Init(GPIOB, &GPIO_InitStructure);

  /* Enable the TIM3 Update Interrupt */
  NVIC_InitStructure.NVIC_IRQChannel = TIM4_IRQn;
  NVIC_InitStructure.NVIC_IRQChannelPreemptionPriority = TIMx_PRE_EMPTION_PRIORITY;
  NVIC_InitStructure.NVIC_IRQChannelSubPriority = TIMx_SUB_PRIORITY;
  NVIC_InitStructure.NVIC_IRQChannelCmd = ENABLE;
  NVIC_Init(&NVIC_InitStructure);

  /* Timer configuration in Encoder mode */
  TIM_DeInit(TIM4);
  TIM_TimeBaseStructInit(&TIM_TimeBaseStructure);

  TIM_TimeBaseStructure.TIM_Prescaler = 0x0;  // No prescaling
  TIM_TimeBaseStructure.TIM_Period = (4*ENCODER_PPR)-1;  
  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);
  TIM_ICStructInit(&TIM_ICInitStructure);
  TIM_ICInitStructure.TIM_ICFilter = ICx_FILTER;
  TIM_ICInit(TIM4, &TIM_ICInitStructure);

// Clear all pending interrupts
  TIM_ClearFlag(TIM4, TIM_FLAG_Update);
  TIM_ITConfig(TIM4, TIM_IT_Update, ENABLE);
  //Reset counter
//  TIM2->CNT = COUNTER_RESET;

//  ENC_Clear_Speed_Buffer();

  TIM_Cmd(TIM4, ENABLE);  
}
void TIM4_IRQHandler(void)
{  
  /* Clear the interrupt pending flag */
        if(TIM_GetITStatus(TIM4,TIM_IT_Update)==SET)
        {
  TIM_ClearFlag(TIM4, TIM_FLAG_Update);
  }
//  if (hEncoder_Timer_Overflow != U16_MAX)  
//  {
//   hEncoder_Timer_Overflow++;
//  }
}

最佳答案

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

你的程序写的太复杂了,我发一份我已经调试好的程序给你看看。仅供参考。
正点原子逻辑分析仪DL16劲爆上市
回复

使用道具 举报

15

主题

118

帖子

0

精华

论坛元老

Rank: 8Rank: 8

积分
3060
金钱
3060
注册时间
2015-12-20
在线时间
299 小时
发表于 2016-7-17 21:59:05 | 显示全部楼层
你的程序写的太复杂了,我发一份我已经调试好的程序给你看看。仅供参考。

编码器(TIM4).rar

3.05 MB, 下载次数: 2047

回复

使用道具 举报

530

主题

11万

帖子

34

精华

管理员

Rank: 12Rank: 12Rank: 12

积分
165508
金钱
165508
注册时间
2010-12-1
在线时间
2115 小时
发表于 2016-7-17 23:09:10 | 显示全部楼层
帮顶
回复

使用道具 举报

9

主题

13

帖子

0

精华

初级会员

Rank: 2

积分
190
金钱
190
注册时间
2016-7-10
在线时间
59 小时
 楼主| 发表于 2016-7-18 10:11:14 | 显示全部楼层
董董 发表于 2016-7-17 22:53
你的程序写的太复杂了,我发一份我已经调试好的程序给你看看。仅供参考。

谢谢,但你这个似乎不可以用....
回复

使用道具 举报

0

主题

9

帖子

0

精华

初级会员

Rank: 2

积分
56
金钱
56
注册时间
2016-4-11
在线时间
10 小时
发表于 2016-10-22 15:30:46 | 显示全部楼层
本帖最后由 yyfnfqp 于 2016-10-22 15:45 编辑

董董:你发的东西没看懂写的啥,有说明么?有没有写好的增量记录脉冲数的呀?比如:对增量式正交编码器,它产生两个方波信号A和B,它们相差+/- 90°,其符号由转动方向决定。计数A和B包括上升沿和下降沿,通过通讯端口发送给上位机
回复

使用道具 举报

2

主题

37

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
202
金钱
202
注册时间
2015-8-7
在线时间
53 小时
发表于 2016-10-23 20:59:22 | 显示全部楼层
增量式编码器用IO做和中断做都可以,其实没必要用定时器来做。
回复

使用道具 举报

5

主题

9

帖子

0

精华

新手上路

积分
29
金钱
29
注册时间
2017-4-10
在线时间
4 小时
发表于 2017-4-11 09:12:47 | 显示全部楼层
请问楼主问题解决了么  求一份代码
回复

使用道具 举报

1

主题

11

帖子

0

精华

新手上路

积分
38
金钱
38
注册时间
2017-3-5
在线时间
4 小时
发表于 2018-3-3 11:42:31 | 显示全部楼层
董董 发表于 2016-7-17 21:59
你的程序写的太复杂了,我发一份我已经调试好的程序给你看看。仅供参考。

谢谢了,代码很好用
回复

使用道具 举报

0

主题

9

帖子

0

精华

新手上路

积分
32
金钱
32
注册时间
2019-7-14
在线时间
6 小时
发表于 2019-7-16 13:19:29 | 显示全部楼层
董董 发表于 2016-7-17 21:59
你的程序写的太复杂了,我发一份我已经调试好的程序给你看看。仅供参考。

在吗,兄弟,能加个qq吗
回复

使用道具 举报

0

主题

9

帖子

0

精华

新手上路

积分
32
金钱
32
注册时间
2019-7-14
在线时间
6 小时
发表于 2019-7-16 13:20:09 | 显示全部楼层
栀子花开 发表于 2018-3-3 11:42
谢谢了,代码很好用

为什么我下载来之后,打不开程序啊
回复

使用道具 举报

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

本版积分规则



关闭

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

正点原子公众号

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

GMT+8, 2025-5-15 07:51

Powered by OpenEdv-开源电子网

© 2001-2030 OpenEdv-开源电子网

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