打印
[应用相关]

STM32F103正交解码采集编码器圈数和方向程序

[复制链接]
1049|12
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
tpgf|  楼主 | 2021-9-7 08:01 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
我的硬件连接是PA0->TIM2_CH1,PA1->TIM2_CH2
需要注意的是编码器需要接上拉电阻,下面是代码


        GPIO_InitTypeDef GPIO_InitStructure;        //定义一个GPIO结构体变量
        TIM_TimeBaseInitTypeDef  TIM_TimeBaseStructure;//定义一个定时器结构体变量
        TIM_ICInitTypeDef TIM_ICInitStructure;        //定义一个定时器编码器结构体变量


        RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOA, ENABLE);//使能GPIOA时钟
        RCC_APB1PeriphClockCmd(RCC_APB1Periph_TIM2, ENABLE);//使能定时器2


        GPIO_InitStructure.GPIO_Pin = GPIO_Pin_0|GPIO_Pin_1;                //配置PA0->TIM2_CH1,PA1->TIM2_CH2
        GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;                //设置50MHz时钟
        GPIO_InitStructure.GPIO_Mode = GPIO_Mode_IPD;                //设置为下拉输入模式
        GPIO_Init(GPIOA, &GPIO_InitStructure);


        TIM_TimeBaseStructure.TIM_Period = 0xffff;        //计数器最大值       
        TIM_TimeBaseStructure.TIM_Prescaler = 0;        //时钟不分频
        TIM_TimeBaseStructure.TIM_ClockDivision = 0;        // 使用的采样频率之间的分频比例
        TIM_TimeBaseStructure.TIM_CounterMode = TIM_CounterMode_Up;        //向上计数
        TIM_TimeBaseInit(TIM2, &TIM_TimeBaseStructure);        //初始化定时器2


        TIM_EncoderInterfaceConfig(TIM2, TIM_EncoderMode_TI12,TIM_ICPolarity_Falling, TIM_ICPolarity_Falling);
        TIM_ICStructInit(&TIM_ICInitStructure);
        TIM_ICInitStructure.TIM_ICFilter = 6;
        TIM_ICInit(TIM2, &TIM_ICInitStructure);


        TIM_SetCounter(TIM2, 0x7fff);


        //  TIM_ClearITPendingBit(TIM2, TIM_IT_Update);                //清除定时器2中断标志位
        TIM_ClearFlag(TIM2, TIM_FLAG_Update);


        //        TIM_ITConfig(TIM2, TIM_IT_Update, ENABLE);                //打开定时器2中断
        TIM_Cmd(TIM2, ENABLE);  //计数器使能,开始计数



获取计数值
        encoderCount=TIM_GetCounter(TIM2)-0x7fff;
        TIM_SetCounter(TIM2, 0x7fff);

减去0x7fff是因为区分正反转,正转值为正 反转值为负

使用特权

评论回复
沙发
caigang13| | 2021-9-7 09:29 | 只看该作者
学习了,谢谢分享。

使用特权

评论回复
板凳
tpgf|  楼主 | 2021-9-7 18:44 | 只看该作者
caigang13 发表于 2021-9-7 09:29
学习了,谢谢分享。

哈哈哈 非常感谢您的支持和肯定

使用特权

评论回复
地板
aspoke| | 2021-10-6 15:15 | 只看该作者
看到很多人都是使用的中断实现的。   

使用特权

评论回复
5
232321122| | 2021-10-6 15:15 | 只看该作者
这个可以采集几路 的信号?   

使用特权

评论回复
6
ghuca| | 2021-10-6 15:15 | 只看该作者
怎么计算圈数呢   

使用特权

评论回复
7
soodesyt| | 2021-10-6 15:16 | 只看该作者
用过按键和编码器那种的。     

使用特权

评论回复
8
mnynt121| | 2021-10-6 15:16 | 只看该作者
这个方向是怎么判断出来的呢   

使用特权

评论回复
9
plsbackup| | 2021-10-6 15:17 | 只看该作者
可以应用在小车上了。     

使用特权

评论回复
10
kmzuaz| | 2021-10-6 15:17 | 只看该作者
还是使用光栅吧,那个简单            

使用特权

评论回复
11
pl202| | 2021-10-6 15:17 | 只看该作者
学习一下STM32F103正交解码采集   

使用特权

评论回复
12
eefas| | 2021-10-6 15:17 | 只看该作者
看到过别人控制这个编码器。     

使用特权

评论回复
13
qiufengsd| | 2021-10-6 15:18 | 只看该作者
时钟不分频可以提高多大的速度呢  

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

2028

主题

15903

帖子

13

粉丝