当前位置: 首页 > news >正文

STM32学习——编码器接口测速

1.编码器接口测速

1.基本要点

1.void TIM_EncoderInterfaceConfig(TIM_TypeDef* TIMx, uint16_t TIM_EncoderMode,
uint16_t TIM_IC1Polarity, uint16_t TIM_IC2Polarity);

//配置定时器编码器接口模式的核心函数,用于将定时器配置为编码器模式,实现对正交编码器(如光电编码器、增量式编码器)的脉冲计数,从而获取电机 / 机械结构的转速、转向等信息。

2.上拉,下拉和浮空输入,这三个的选择可以根据外接模块的默认输出电平来选择,好比,外部模块默认输出高电平,则上拉输入。

模式内部电阻连接无外部输入时的电平电平读取逻辑典型电阻值
浮空输入(IN_FLOATING)无上拉 / 下拉电阻不确定(悬浮)直接读取引脚外部电平
上拉输入(IPU)上拉电阻接 VDD高电平(VDD)外部拉低时为低,否则为高30~50kΩ
下拉输入(IPD)下拉电阻接 VSS低电平(VSS)外部拉高时为高,否则为低30~50kΩ

3.极性选择在不同情况下的的含义——TIM_ICPolarity_Rising在输入捕获中代表当上升沿时触发捕获操作,而在编码器中则代表的对于信号源波形是否进行反向,这里是不进行反向。相应的下降沿代表进行反相操作。

2.代码

1.Encoder.h/c

#ifndef __ENCODER_H #define __ENCODER_H void Encoder_Init(void); int16_t Encoder_Get(void); #endif
#include "stm32f10x.h" // Device header void Encoder_Init(void) { RCC_APB1PeriphClockCmd(RCC_APB1Periph_TIM3, ENABLE); RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOA, ENABLE); GPIO_InitTypeDef GPIO_InitStructure; GPIO_InitStructure.GPIO_Mode = GPIO_Mode_IPU; GPIO_InitStructure.GPIO_Pin = GPIO_Pin_6 | GPIO_Pin_7; GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz; GPIO_Init(GPIOA, &GPIO_InitStructure); TIM_TimeBaseInitTypeDef TIM_TimeBaseInitStructure; TIM_TimeBaseInitStructure.TIM_ClockDivision = TIM_CKD_DIV1; TIM_TimeBaseInitStructure.TIM_CounterMode = TIM_CounterMode_Up; TIM_TimeBaseInitStructure.TIM_Period = 65536 - 1; //ARR TIM_TimeBaseInitStructure.TIM_Prescaler = 1 - 1; //PSC TIM_TimeBaseInitStructure.TIM_RepetitionCounter = 0; TIM_TimeBaseInit(TIM3, &TIM_TimeBaseInitStructure); TIM_ICInitTypeDef TIM_ICInitStructure; TIM_ICStructInit(&TIM_ICInitStructure); TIM_ICInitStructure.TIM_Channel = TIM_Channel_1; TIM_ICInitStructure.TIM_ICFilter = 0xF; TIM_ICInit(TIM3, &TIM_ICInitStructure); TIM_ICInitStructure.TIM_Channel = TIM_Channel_2; TIM_ICInitStructure.TIM_ICFilter = 0xF; TIM_ICInit(TIM3, &TIM_ICInitStructure); //TIM_ICPolarity_Rising在编码器中指不进行反相 TIM_EncoderInterfaceConfig(TIM3, TIM_EncoderMode_TI12, TIM_ICPolarity_Rising, TIM_ICPolarity_Rising); TIM_Cmd(TIM3, ENABLE); } int16_t Encoder_Get(void) { int16_t Temp; Temp=TIM_GetCounter(TIM3); TIM_SetCounter(TIM3,0); return Temp; }

2.main函数

#include "stm32f10x.h" // Device header寄存器头文件 #include "Delay.h" #include "OLED.H" #include "Timer.h" #include "Encoder.h" int16_t Speed; int main(void) { OLED_Init(); Timer_Init(); Encoder_Init(); OLED_ShowString(1,1,"Speed:"); while(1) { OLED_ShowSignedNum(1,7,Speed,5);//每隔一秒读取一次数值,即得速度 } } void TIM2_IRQHandler(void) { if(TIM_GetITStatus(TIM2,TIM_IT_Update)==SET) { Speed=Encoder_Get(); TIM_ClearITPendingBit(TIM2,TIM_IT_Update); } }
http://www.cnnetsun.cn/news/167694.html

相关文章:

  • 对比:Qwen-VL与传统的CNN在图像处理应用
  • 【硬件设计】DC12V输入的防护+滤波设计
  • 快!太快了!一键生成!一键导出!微信自动统计数据报表来了!
  • 智能决策系统日志系统设计:AI架构师的调试与分析技巧
  • 力扣 11.盛最多水的容器 简单的双指针算法 题解
  • 深度学习驱动的论文降重工具有效规避查重风险,智能改写段落
  • 温度传感器PT1000与NTC10K介绍
  • 震惊!这家酶制剂供应商竟让行业炸锅
  • 数学建模与排版无忧?这10个AI论文工具精准解决复现难题
  • AI对打工人的三个影响
  • 小程序/APP接入分账系统:4大核心注意事项,避开合规与技术坑
  • 靠谱的厦门考研公司哪个好
  • 二叉搜索树的最近公共祖先:别再蛮力了,用规则思维找“血缘关系”
  • 推荐6个AI论文网站,提供降重与自然改写功能避免标红
  • 智能学术支持:6个AI论文平台解析,自动润色让内容更专业
  • 从手动测试到自动化测试的转型之路:策略、挑战与未来
  • 大数据工程师必看:批处理性能优化的10个黄金法则
  • 2026年AI全面爆发!AI原生、物理AI、多模态与世界模型的革命性变革
  • 【扣子Coze教程】文案一键仿写+飞书自动发布
  • 提示词工程精华总结:掌握ICIO框架与五大核心要素,AI应用效率翻倍,建议收藏!
  • 还在手动选品?RPA+AI生成希音爆款推荐,效率提升100倍![特殊字符]
  • 8个AI论文工具,自考学生轻松搞定毕业论文!
  • 8个降AI率工具推荐,继续教育学生必备
  • CTFer常见高频工具清单
  • 痞子衡嵌入式:16MB以上NOR Flash地址模式切换会造成软复位后i.MXRT无法正常启动
  • 爬山算法:无需微积分的机器学习之旅
  • 【Ctfer训练计划】——命令执行的解题技巧(持续更新中)
  • CTF wed安全(攻防世界)练习题
  • CTF进阶解题,掌握这套框架+技巧就够了!
  • Vue面试中,经常会被问到的面试题/Vue知识点整理,收藏这篇就够了