STM32定时器——编码器模式采集EC11旋转编码器

2023-10-28

目录

一、EC11旋转编码器介绍

二、定时器编码器模式介绍

三、编码器初始化代码介绍

四、旋转EC11向串口发送数据


一、EC11旋转编码器介绍

EC11旋转编码器广泛用于车载DVD,车载导航,汽车影音上,常被人称为车载编码器。编码器主要用于频率调节高度调节,温度调节及音量调节的参数控制。注意编码器避免储藏于高温潮湿及腐蚀的场所,拆包装后未使用完的剩余产品请在防潮防毒的环境下保存

上图中的A、B端子就是旋转编码器的信号引脚,当我们顺时针和逆时针转动时,A、B端子的闭合先后顺序不一样

顺时针: A端子先闭合先断开

 

 

逆时针:B端子先闭合先断开

 

 

简述一下:因为旋转编码器的AB引脚输出的电平信号存在相位差,如上图所示,我们可以借此分辨出其旋转方向。具体的原理在这里就不细说了,可以参考厂家给的参考手册 密码1234

二、定时器编码器模式介绍

编码器接口模式基本上相当于使用了一个带有方向选择的外部时钟。这意味着计数器只在0到
TIMx_ARR寄存器的自动装载值之间连续计数(根据方向,或是0到ARR计数,或是ARR到0计
数)。所以在开始计数之前必须配置TIMx_ARR;

 

顺时针:可以看到当TI1(也就是A端子)处于上升沿时,参考TI2是低电平,向上计数。

                                TI1(也就是A端子)处于下降沿时,参考TI2是高电平,向上计数。

                                TIMx_ARR的值会加2

 

 逆时针:可以看到当TI1(也就是A端子)处于上升沿时,参考TI2是高电平,向下计数。

                                 TI1(也就是A端子)处于下降沿时,参考TI2是低电平,向下计数。

                                 TIMx_ARR的值会减2

 同理,在TI2计数时也是相同的道理。在TI1和TI2都计数时,在每个跳变沿计数。

 三、编码器初始化代码介绍

我这里选用的时在TI1和TI2上都计数模式。

void MX_TIM1_Init(void)
{

  /* USER CODE BEGIN TIM1_Init 0 */

  /* USER CODE END TIM1_Init 0 */

  TIM_Encoder_InitTypeDef sConfig = {0};

  /* USER CODE BEGIN TIM1_Init 1 */

  /* USER CODE END TIM1_Init 1 */
  htim1.Instance = TIM1;//使用那个定时器
  htim1.Init.Prescaler = 0;//分频值
  htim1.Init.CounterMode = TIM_COUNTERMODE_UP;//计数方式,向上计数
  htim1.Init.Period = 65535;//重载值
  htim1.Init.ClockDivision = TIM_CLOCKDIVISION_DIV2;//时钟分频因子
  htim1.Init.RepetitionCounter = 0;//重复次数
  htim1.Init.AutoReloadPreload = TIM_AUTORELOAD_PRELOAD_ENABLE;//自动重装载
	
  sConfig.EncoderMode = TIM_ENCODERMODE_TI12;//工作模式
  sConfig.IC1Polarity = TIM_ICPOLARITY_RISING;//通道捕获方式
  sConfig.IC1Selection = TIM_ICSELECTION_DIRECTTI;//设置通道1连接方式
  sConfig.IC1Prescaler = TIM_ICPSC_DIV1;//分频值
  sConfig.IC1Filter = 0x8;//滤波值

  sConfig.IC2Polarity = TIM_ICPOLARITY_RISING;
  sConfig.IC2Selection = TIM_ICSELECTION_DIRECTTI;
  sConfig.IC2Prescaler = TIM_ICPSC_DIV1;
  sConfig.IC2Filter = 0x8;
  if (HAL_TIM_Encoder_Init(&htim1, &sConfig) != HAL_OK)
  {
    Error_Handler();
  }
	
  
  /* USER CODE BEGIN TIM1_Init 2 */
	__HAL_TIM_CLEAR_FLAG(&htim1,TIM_FLAG_UPDATE);//在初始化时,会让标志位置位,所以要清楚标志位
	HAL_TIM_Encoder_Start_IT(&htim1,TIM_CHANNEL_ALL);
  /* USER CODE END TIM1_Init 2 */

}

四、旋转EC11向串口发送数据 

void HAL_TIM_IC_CaptureCallback(TIM_HandleTypeDef *htim)
{
  if(htim->Instance==TIM1)//判断是否是定时器1
	{
		if(htim->Channel==HAL_TIM_ACTIVE_CHANNEL_1)//判断是否是通道1触发
		{
			if(__HAL_TIM_IS_TIM_COUNTING_DOWN(htim))//判断DIR,计数方向向下
			{
				u1_printf("顺时针转动");//串口输出提示信息
				num=((int16_t)HAL_TIM_ReadCapturedValue(htim,TIM_CHANNEL_1)-1)/4;//根据CNT计数器的值少计数1,所以加一
				u1_printf("%d\r\n",num);
			}
		}
		else if(htim->Channel==HAL_TIM_ACTIVE_CHANNEL_2)
		{
			if(!__HAL_TIM_IS_TIM_COUNTING_DOWN(htim))
			{
				u1_printf("逆时针转动");
				num=((int16_t)HAL_TIM_ReadCapturedValue(htim,TIM_CHANNEL_2)+1)/4;
				u1_printf("%d\r\n",num);
			}
		}
	}
	
}

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

STM32定时器——编码器模式采集EC11旋转编码器 的相关文章

  • 蒙特卡洛在发电系统中的应用(Matlab代码实现)

    欢迎来到本博客 博主优势 博客内容尽量做到思维缜密 逻辑清晰 为了方便读者 座右铭 行百里者 半于九十 本文目录如下 目录 1 概述 2 运行结果 3 参考文献 4 Matlab代码实现
  • 问CHAT很繁琐的问题会不会有答案呢?

    问CHAT 什么已有的基于极值理论的极端温度重现期主要针对极端高温事件 对极端低温事件研究较少 CHAT 回复 为这主要可能是由于以下几个原因 1 气候变化与全球变暖 当前 全球变暖和气候变化的问题备受关注 这导致科研者更加关注极端高温事件
  • 用CHAT写一份标题为职业教育教师教学能力提升培训总结

    CHAT回复 标题 职业教育教师教学能力提升培训总结 一 活动概述 本次由学校组织的职业教育教师教学能力提升培训于8月15日至8月20日顺利进行 来自全校的60位职业教育教师参与了此次培训 主讲人为享有盛名的教育专家马丁先生 二 培训内容与
  • 喜报|华测导航荣获“张江之星”领军型企业称号

    近日 2023年度 张江之星 企业培育名单发布 上海华测导航荣获2023年度 张江之星 领军型企业称号 据悉 张江之星 企业培育是上海科创办为落实 关于推进张江高新区改革创新发展建设世界领先科技园区的若干意见 张江高新区加快世界领先科技园区
  • 让CHAT介绍下V2ray

    CHAT回复 V2Ray是一个网络工具 主要用于科学上网和保护用户的网络安全 它的名字源自Vmess Ray 光线 通过使用新的网络协议 为用户提供稳定且灵活的代理服务 下面是一些V2Ray的主要特性 1 多协议支持 V2Ray 提供了大量
  • 链上繁荣,合作不断,外媒热议波场 TRON 2023 年度成绩

    近日 权威外媒Theblock 美联社和Decrypt等就波场 TRON 2023大事件进行了年度盘点 报道指出 波场TRON网络在2023年取得了一系列的发展和合作 提升了其在Web3领域的地位 其中 波场TRON网络账户数量增加了 54
  • 用CHAT分析高校体育智慧教学体系构建与探索研究现状

    CHAT回复 现阶段 高校体育智慧教学体系的构建与探索研究还处于初级阶段 但全球数字化转型大潮的推动下 一些较为前沿的研究和实践已经开始出现 1 教学平台的建设 很多高校已经开始尝试使用在线教育平台进行体育教学 把传统的面对面授课模式转变为
  • 扬帆证券:三只松鼠去年扣非净利预增超1.4倍

    在 高端性价比 战略驱动下 三只松鼠 300783 重拾增势 1月15日晚间 三只松鼠发布成绩预告 预计2023年度净赢利为2亿元至2 2亿元 同比增加54 97 至70 47 扣非后净赢利为1亿元至1 1亿元 同比增速达146 9 至17
  • 活动日程&直播预约|智谱AI技术开放日 Zhipu DevDay

    点击蓝字 关注我们 AI TIME欢迎每一位AI爱好者的加入 直播预约通道 关于AI TIME AI TIME源起于2019年 旨在发扬科学思辨精神 邀请各界人士对人工智能理论 算法和场景应用的本质问题进行探索 加强思想碰撞 链接全球AI学
  • 多模态、长文本、智能体,智谱AI推出GLM-4模型全家桶,发布即上线!

    点击蓝字 关注我们 AI TIME欢迎每一位AI爱好者的加入 2024年01月16日 智谱AI首届技术开放日 Zhipu DevDay 在北京中关村国家自主创新示范区展示中心成功举办 现场 智谱AI团队全面展示了其投身于大模型事业三年多来所
  • 基于opencv的大米计数统计(详细处理流程+代码)

    在我每周的标准作业清单中 有一项是编写计算机视觉算法来计算该图像中米粒的数量 因此 当我的一个好朋友M给我发了一张纸上的扁豆照片 显然是受到上述转发的启发 请我帮他数一下谷物的数量时 它勾起了我怀旧的回忆 因此 我在我的旧硬盘上寻找很久以前
  • 毕业设计:基于深度学习的微博谣言检测系统 人工智能

    目录 前言 设计思路 一 课题背景与意义 二 算法理论原理 三 检测的实现 最后 前言 大四是整个大学期间最忙碌的时光 一边要忙着备考或实习为毕业后面临的就业升学做准备 一边要为毕业设计耗费大量精力 近几年各个学校要求的毕设项目越来越难 有
  • STM32H5 Nucleo-144 board开箱

    文章目录 开发板资料下载 目标 点亮LD1 绿 LD2 黄 和LD3 红 三个LED灯 开箱过程 博主使用的是STM32CubeMX配置生成代码 具体操作如下 打开STM32CubeMX File gt New project 选择开发板型
  • 如何用GPT进行论文润色与改写?

    详情点击链接 如何用GPT GPT4进行论文润色与改写 一OpenAI 1 最新大模型GPT 4 Turbo 2 最新发布的高级数据分析 AI画图 图像识别 文档API 3 GPT Store 4 从0到1创建自己的GPT应用 5 模型Ge
  • 史上最全自动驾驶岗位介绍

    作者 自动驾驶转型者 编辑 汽车人 原文链接 https zhuanlan zhihu com p 353480028 点击下方 卡片 关注 自动驾驶之心 公众号 ADAS巨卷干货 即可获取 点击进入 自动驾驶之心 求职交流 技术交流群 本
  • 考虑光伏出力利用率的电动汽车充电站能量调度策略研究(Matlab代码实现)

    欢迎来到本博客 博主优势 博客内容尽量做到思维缜密 逻辑清晰 为了方便读者 座右铭 行百里者 半于九十 本文目录如下 目录 1 概述 2 运行结果 3 参考文献 4 Matlab代码 数据
  • 考虑光伏出力利用率的电动汽车充电站能量调度策略研究(Matlab代码实现)

    欢迎来到本博客 博主优势 博客内容尽量做到思维缜密 逻辑清晰 为了方便读者 座右铭 行百里者 半于九十 本文目录如下 目录 1 概述 2 运行结果 3 参考文献 4 Matlab代码 数据
  • 对中国手机作恶的谷歌,印度CEO先后向三星和苹果低头求饶

    日前苹果与谷歌宣布合作 发布了 Find My Device Network 的草案 旨在规范蓝牙追踪器的使用 在以往苹果和谷歌的生态形成鲜明的壁垒 各走各路 如今双方竟然达成合作 发生了什么事 首先是谷歌安卓系统的市场份额显著下滑 数年来
  • STM32 上的位置无关代码 - 指针

    我已成功在 STM32 上构建并运行位置无关的代码 向量表和 GOT 已修补 一切正常 但我对这样的代码有问题 double myAdd double x return x 0 1 double ptrmyAdd double myAdd
  • 使用 STM32F0 ADC 单独读取不同的输入

    STM32F072CBU 微控制器 我有多个 ADC 输入 并且希望单独读取它们 STMcubeMX 生成样板代码 假设我希望按顺序读取所有输入 但我无法弄清楚如何纠正这个问题 这篇博文 http blog koepi info 2015

随机推荐

  • 408知识点-计算机网络

    计算机网络 408系列参考王道2021系列书籍 文章目录 计算机网络 前言 绪论 物理层 数据链路层 网络层 传输层 应用层 总结 前言 今天正式放假 虽然已经咸鱼了三周了 考研初试结束 把我记在我的笔记本上的东西搬上来分享一下 里面有一些
  • Java21天打卡Day7-循环

    public class Day7 循环语句 while do while for 题目1 求1 100之和 题目2 嵌套循环 在控制台输出九九乘法表 public static void main String args int sum
  • STM32-学习入门

    软件环境 MDK ARM http www myir tech com download asp Jlink驱动 https download csdn net download lblmlms 12332349 串口助手 https do
  • JavaWeb项目创建和Tomcat配置

    1 Javaweb项目创建 2 Tomcat配置 点击File gt New gt Project 点击Java Enterprise gt 勾选Web Application 输入项目名称 创建后的项目目录 在src目录下创建包 serv
  • 分页存储管理

    连续分配方式会形成许多 碎片 如果允许一个进程直接分散地装入到许多不相邻接的分区中 便可充分地利用内存空间 所以产生了离散的分配方式 根据离散时分配地址空间的基本单位不同 可分为三种 这里我们只讲解分页存储管理 1 页面和物理块 1 页面
  • 【语义分割】【SOTA】【NeuralPS 2022】SegNeXt Note

    Topic 我愿称之为国货之光 来自清华和南开的NeuralPS 2022 Paper Abstract 我们提出了一种简单的用于语义分割的卷积网络结构SegNeXt 由于自我注意在编码空间信息时的效率 最近的基于transform的模型已
  • Qt核心机制与原理

    了解Qt和C 的关系 掌握Qt的信号 槽机制的原理和使用方法 了解Qt的元对象系统 掌握Qt的架构 理解Qt的事件模型 掌握其使用的时机 信号与槽 元对象系统 事件模型是Qt机制的核心 如果您想要掌握Qt编程 就需要对它们有比较深入的了解
  • vue 高德地图使用热力图

    代码 在public index html中加入
  • cuDNN的下载安装

    大家好 下面将进行cuDNN的下载安装 下载安装的详细步骤描述如下 1 cuDNN下载 https download csdn net download qq 41104871 87457998 2 cuDNN安装 1 首先 需要解压缩下载
  • stm32读写SD卡(SPI模式)

    目录 一 SD卡简介 二 源码下载 三 移植条件 1 芯片参数 2 硬件连接 四 驱动代码 1 依赖宏如下 2 驱动代码实现 3 测试代码 4 运行截图 一 SD卡简介 SD卡有SD驱动模式和SPI驱动模式 本例中使用SPI模式驱动SD卡
  • 大公司都有哪些开源项目~~~阿里,百度,腾讯,360,新浪,网易,小米等

    红色字体是现阶段比较火的 奇虎360 https github com Qihoo360 1 MySQL中间层 Atlas Atlas是由 Qihoo 360 Web平台部基础架构团队开发维护的一个基于MySQL协议的数据中间层项目 它在M
  • STM32控制脉搏血氧心率MAX30102模块程序(I2C)

    一 简介 MAX30102是一个集成的脉搏血氧仪和心率监测仪生物传感器的模块 芯片 它集成了一个660nm红光LED 880nm红外光LED 光电检测器 光器件 以及带环境光抑制的低噪声电子电路 可通过软件关断模块 待机电流为零 实现电源始
  • 《海龟投资法则》读书笔记

    本文用于辅助阅读 海龟投资法则 市场 价格形态的类型 核心思想就是把价格波动抽成了波动性和趋势性 怎么让人联想到了光的波粒二象性 根据是否带有波动性和趋势性 可以分成四类价格形态 分别是 平稳 0 0 横向波动 0 1 平稳趋势 1 0 波
  • vue中swiper vue-awesome-swiper的使用方法和爬坑大法

    文章目录 由版本引起的一系列坑 正确的使用姿势 安装 指定版本 组件中使用 总结 由版本引起的一系列坑 时间 2020 07 08 时间 版本很重要 坑的起源 这两天在vue中使用swiper做轮播图 就随手百度了一下 找个帖子开始参考 坑
  • 从原理上理解JDBC的七个步骤,不再死记硬背

    由于平时经常使用持久层框架 早已把最初的JDBC忘到脑后去了 但是JDBC是一切持久层框架的根本 如果想要深入理解框架 就必须要掌握JDBC 最初学JDBC的时候只知道死记硬背那7个步骤 却从来没有理解那些步骤的由来 首先我们要理解JDBC
  • Windwos10最新版开启卓越性能

    老版本开启卓越性能的方法不管用了 1 首先右击开始菜单 打开power shell 管理员 将下面代码复制粘贴进去按回车 powercfg duplicatescheme e9a42b02 d5df 448d aa00 03f14749eb
  • 【多模态】UNIMO

    一 unimo 1 优点 训练数据包含文本 图像 图文对数据训练 不局限于图文对 2 策略和模型 1 文本改写 Text Rewriting 为了增强图文在多个粒度上的语义对齐能力 论文将图像的文本描述从句子级 短语级和词汇级别三个粒度进行
  • 【PCIE体系结构十】链路两端的参考时钟有频偏怎么办?

    个人主页 highman110 作者简介 一名硬件工程师 持续学习 不断记录 保持思考 输出干货内容 参考书籍 PCI EXPRESS系统体系结构标准教材 Mindshare PCIE规范中有描述PCIE支持公共参考时钟架构和独立参考时钟架
  • 合并排序

    与很多有用的算法类似 合并排序基于这样一个技巧 将 2 个大小为 N 2 的已排序序列合并为一个 N 元素已排序序列仅需要 N 次操作 这个方法叫做合并 我们用个简单的例子来看看这是什么意思 通过此图你可以看到 在 2 个 4元素序列里你只
  • STM32定时器——编码器模式采集EC11旋转编码器

    目录 一 EC11旋转编码器介绍 二 定时器编码器模式介绍 三 编码器初始化代码介绍 四 旋转EC11向串口发送数据 一 EC11旋转编码器介绍 EC11旋转编码器广泛用于车载DVD 车载导航 汽车影音上 常被人称为车载编码器 编码器主要用