OpenEdv-开源电子网

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

STM32编码器为什么time3-CNT只有0和1?

[复制链接]

1

主题

2

帖子

0

精华

新手入门

积分
17
金钱
17
注册时间
2016-12-5
在线时间
1 小时
发表于 2016-12-5 21:49:49 | 显示全部楼层 |阅读模式
1金钱
void  ENC_Init(void)
{
         TIM_TimeBaseInitTypeDef TIM_TimeBaseStructure;
         TIM_ICInitTypeDef TIM_ICInitStructure;
         /* Encoder unit connected to TIM3, 4X mode */   
         GPIO_InitTypeDef GPIO_InitStructure; //IO¿úÅäÖýá11ìå
         NVIC_InitTypeDef NVIC_InitStructure; //ÖD¶ÏÅäÖýá11ìå
       
         /* TIM3 clock source enable */
         RCC_APB1PeriphClockCmd(RCC_APB1Periph_TIM3, ENABLE);
         /* Enable GPIOA, clock */
         RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOA|RCC_APB2Periph_GPIOC|RCC_APB2Periph_AFIO, ENABLE);
         GPIO_StructInit(&GPIO_InitStructure);
        ////////////////////////////////////////////////////////////
//         /* Configure PA.06,07 as encoder input */
         GPIO_InitStructure.GPIO_Pin = GPIO_Pin_6 | GPIO_Pin_7;        //PA6¡¢7IO¿úÅäÖÃ
         GPIO_InitStructure.GPIO_Mode = GPIO_Mode_IN_FLOATING; //IO¿úÄ£ê½ÅäÖÃ
         GPIO_Init(GPIOA, &GPIO_InitStructure);
        /////////////////////////////////////////////////////////////
       
//         GPIO_InitStructure.GPIO_Pin = GPIO_Pin_6| GPIO_Pin_7| GPIO_Pin_8| GPIO_Pin_9;        //PA6¡¢7IO¿úÅäÖÃ
//         GPIO_InitStructure.GPIO_Mode = GPIO_Mode_IN_FLOATING; //IO¿úÄ£ê½ÅäÖÃ
//         GPIO_Init(GPIOC, &GPIO_InitStructure);       
//   GPIO_PinRemapConfig(GPIO_FullRemap_TIM3, ENABLE);       
       
       
         /* Enable the TIM3 Update Interrupt */
         NVIC_InitStructure.NVIC_IRQChannel = TIM3_IRQn;  //TIM3ÖD¶Ï          
         NVIC_InitStructure.NVIC_IRQChannelPreemptionPriority =0; //ÇàÕ¼óÅÏ輶 //1
         NVIC_InitStructure.NVIC_IRQChannelSubPriority = 0;        //Ïìó|óÅÏ輶
         NVIC_InitStructure.NVIC_IRQChannelCmd = ENABLE; //ê1ÄüÖD¶Ï
         NVIC_Init(&NVIC_InitStructure);
         /* Timer configuration in Encoder mode */
         TIM_DeInit(ENCODER_TIMER);         //¸′λ TIM3
         TIM_TimeBaseStructInit(&TIM_TimeBaseStructure);
                                                                                          //¼ÆêyÂö3åμÄ·ÖÆμ
         TIM_TimeBaseStructure.TIM_Prescaler = 0; //IM_PrescaleréèÖÃáËóÃà′×÷ÎaTIMxê±ÖóÆμÂê3yêyμÄÔ¤·ÖÆμÖμ¡£ËüμÄè¡Öμ±ØDëÔú0x0000oí0xFFFFÖ®¼ä¡£
         TIM_TimeBaseStructure.TIM_Period =65535; //¼Æêyμ½òç3ö        TIM_PeriodéèÖÃáËÔúÏÂò»¸ö¸üDÂê¼t×°èë»î¶ˉμÄ×Ô¶ˉÖØ×°ÔؼÄ′æÆ÷ÖüÆúμÄÖμ¡£ËüμÄè¡Öμ±ØDëÔú0x0000oí0xFFFFÖ®¼ä¡£
         TIM_TimeBaseStructure.TIM_ClockDivision = TIM_CKD_DIV1;         //TIM_ClockDivisionéèÖÃáËê±Öó·Ö¸î
         TIM_TimeBaseStructure.TIM_CounterMode = TIM_CounterMode_Up;   
         
         TIM_TimeBaseInit(ENCODER_TIMER, &TIM_TimeBaseStructure);
         TIM_EncoderInterfaceConfig(ENCODER_TIMER, TIM_EncoderMode_TI12,  //tim3 ±àÂëÆ÷Ä£ê½3 ±àÂëÆ÷Ëı¶Æμ
                                     TIM_ICPolarity_BothEdge, TIM_ICPolarity_BothEdge);//??????
                                                                                                                         
         TIM_ICStructInit(&TIM_ICInitStructure);
         TIM_ICInitStructure.TIM_ICFilter =6; //êäèë±è½ÏÂË2¨Æ÷        ¸Ã2Îêyè¡ÖμÔú0x0oí0xFÖ®¼ä
         TIM_ICInit(ENCODER_TIMER, &TIM_ICInitStructure);         
         TIM_ClearFlag(ENCODER_TIMER, TIM_FLAG_Update);// Clear all pending interrupts
         TIM_ITConfig(ENCODER_TIMER, TIM_IT_Update, ENABLE);  //ê1ÄüTIM ÖD¶ÏÔ′
         //Reset counter
         TIM3->CNT = 0;
        // ENC_Clear_Speed_Buffer();
         TIM_Cmd(ENCODER_TIMER, ENABLE);


}
//void TIM3_IRQHandler(void)
//{       

//        if (TIM_GetITStatus(TIM3,TIM_IT_Update)!=RESET)
//        {
//                TIM_ClearITPendingBit(TIM3,TIM_FLAG_Update);

//                  
//    }

//}
串口打印 TIM3->CNT 只有0和1??不是应该累加么


最佳答案

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

找到原因,编码器输出上拉电阻不够大,换成20K可以用
正点原子逻辑分析仪DL16劲爆上市
回复

使用道具 举报

1

主题

2

帖子

0

精华

新手入门

积分
17
金钱
17
注册时间
2016-12-5
在线时间
1 小时
 楼主| 发表于 2016-12-5 21:49:50 | 显示全部楼层
黄藤酒126 发表于 2017-1-10 17:14
请问楼主解决了吗,我也是一模一样的问题。。。

找到原因,编码器输出上拉电阻不够大,换成20K可以用
回复

使用道具 举报

530

主题

11万

帖子

34

精华

管理员

Rank: 12Rank: 12Rank: 12

积分
165359
金钱
165359
注册时间
2010-12-1
在线时间
2110 小时
发表于 2016-12-8 22:26:16 | 显示全部楼层
帮顶
回复

使用道具 举报

黄藤酒126 该用户已被删除
发表于 2017-1-10 17:14:34 | 显示全部楼层
提示: 作者被禁止或删除 内容自动屏蔽
回复

使用道具 举报

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

本版积分规则



关闭

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

正点原子公众号

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

GMT+8, 2024-12-18 16:20

Powered by OpenEdv-开源电子网

© 2001-2030 OpenEdv-开源电子网

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