STM32F4单片机读取光电编码器的小理解

大家好! 我是木兔同学,这是我第一次发CSDN的博客,本人接触的单片机主要是STM32f407,今天谈一谈STM32F4单片机读取光电编码器的小理解,希望大家多多批评指正。>__<

讲述方式

1.对单片机的理解往往是对寄存器的理解操作
2. 通过代码的描述来理解
3. 增加了寄存器的手册部分

编码器原理:

说白了就是编码器把轮子的转速转换成差个相位的两路可测频率的方波,单片机通过读取方波的个数来测速。

一、先看一下配置32定时器编码器的代码:

void TIM2_ENC_Init(void)//Motor_A
{
GPIO_InitTypeDef GPIO_InitStructure;
RCC_APB1PeriphClockCmd(RCC_APB1Periph_TIM2, ENABLE);
RCC_AHB1PeriphClockCmd(RCC_AHB1Periph_GPIOA, ENABLE);
RCC_AHB1PeriphClockCmd(RCC_AHB1Periph_GPIOB, ENABLE);
GPIO_InitStructure.GPIO_Pin = GPIO_Pin_15;
GPIO_InitStructure.GPIO_Speed = GPIO_Speed_100MHz;
GPIO_InitStructure.GPIO_Mode = GPIO_Mode_AF;
GPIO_InitStructure.GPIO_OType = GPIO_OType_OD; //开漏输出
GPIO_InitStructure.GPIO_PuPd = GPIO_PuPd_UP;
GPIO_Init(GPIOA, &GPIO_InitStructure);
GPIO_InitStructure.GPIO_Pin = GPIO_Pin_3;
GPIO_Init(GPIOB, &GPIO_InitStructure);GPIO_PinAFConfig(GPIOA,GPIO_PinSource15,GPIO_AF_TIM2);
GPIO_PinAFConfig(GPIOB,GPIO_PinSource3,GPIO_AF_TIM2);//引脚复用TIM_EncoderInterfaceConfig(TIM2,TIM_EncoderMode_TI1,TIM_ICPolarity_Rising,TIM_ICPolarity_Rising);//编码器接口配置TIM_Cmd(TIM2, ENABLE);
}

当然,这块代码中最重要的就是
//编码器接口配置
TIM_EncoderInterfaceConfig(TIM2,TIM_EncoderMode_TI1,TIM_ICPolarity_Rising,TIM_ICPolarity_Rising);

可以探寻寄存器一下

这个函数有4个参数
第一个是选定定时器
第二个是编码器模式:指定TIMx编码器模式
第三四个是指定IC1、IC2极性

第一个不用多说,选哪个定时器,我查了一下,stm32f407直接支持外接编码器的是定时器TIM1—TIM5和TIM8.

第二个是编码器模式:一共有3种

对应的寄存器是:TIMx 从模式控制寄存器 (TIMx_SMCR)的位 2:0 SMS:

第三四个是指定IC1、IC2极性:

对应的寄存器是:TIMx 捕获/比较使能寄存器 (TIMx_CCER)的0-3位:

二、STM32F407的中文参考手册中也有总体的概括:






(在这里给大家贴的全一点,就不用大家再去翻中文手册喽>-<)

三、最后说一下定时器对编码器的数据提取:

说一下为什么是TIM2->CR1&0x01
又到了寄存器环节(看吧,寄存器真的好重要的)


因为是16位寄存器,0x10就是0000 0000 0001 0000
就是位4,计数的方向,为1就是递减计数,就是一开始寄存器是最大值,读取几个就减几个,所以有了
Encoder_Date[0] = 0xffffffff-TIM2->CNT;
编码器提供的数据就储存在Encoder_Date[0] 这个数组里,就可以使用了。

好了,这次博客就说这么多了,谢谢大家,希望大家能够提出宝贵意见,之后博客会持续更新,欢迎大家关注,给大家拜年啦!!!

STM32F4单片机读取光电编码器的小理解相关推荐

  1. 单片机c语言计数器测速,基于51单片机的光电编码器测速.doc

    课程设计报告 课程名称: 微机原理课程设计 题 目: 基于51单片机的光电编码器测速 摘要 光电编码器是高精度位置控制系统常用的一种位移检测传感器.在位置控制系统中,由于电机既可能正转,也可能反转,所 ...

  2. 单片机c语言编程编码器数值,基于单片机的光电编码器测速报告详解.doc

    课程设计报告 课程名称: 微机原理课程设计 题 目: 基于51单片机的光电编码器测速 摘要 光电编码器是高精度位置控制系统常用的一种位移检测传感器.在位置控制系统中,由于电机既可能正转,也可能反转,所 ...

  3. STM32F4单片机读取AT24c02

    ​STM32F4是由ST(意法半导体)开发的一种高性能微控制器系列.其采用了90nm的NVM工艺和ART技术(自适应实时存储加速器,Adaptive Real-Time MemoryAccelerat ...

  4. 51单片机电机测速程序c语言,基于51单片机光电编码器测速.doc

    基于51单片机光电编码器测速 PAGE PAGE 2 课程设计报告 课程名称: 微机原理课程设计 题 目: 基于51单片机的光电编码器测速 摘要 光电编码器是高精度位置控制系统常用的一种位移检测传感器 ...

  5. STM8单片机定时器1编码器功能使用详解

    ​​​​​​​目录 编码器简介 硬件接线图 编码器接口模式介绍 编写代码 寄存器简介 初始化代码 仿真调试 添加实时观察变量 观察变量值变化 编码器用法总结 查询方式读取 中断方式读取 编码器简介 这 ...

  6. 基于STM32F4单片机对步进电机的控制(有代码)

    步进电机简介 步进电机是将电脉冲控制信号转变为角位移或线位移的一种常用的数字控制执行元件,又称为脉冲电机.在驱动电源的作用下,步进电机受到脉冲的控制,其转子的角位移量和速度严格地与输入脉冲的数量和脉冲 ...

  7. c语言 输出音频 单片机,单片机播放WAV格式音频的理解

    CSDN账号注册了3年,一直没有上来过,更不用说写博客了.我不知道博客的具体用途,我只想把它当做一种心得来发表,可能是一些技术上的理解或者生活上的小故事.好了,下面我将记录我对WAV播放器的理解. 很 ...

  8. WinCE下光电编码器的驱动程序设计

    原文:http://article.ednchina.com/Embedded/20071209103917.htm 来源:中电网 | 作者:杨振坤 甘朝晖 蒋旻 引言 近年来,嵌入式技术发展迅速,嵌 ...

  9. 单片机播放WAV格式音频的理解

    CSDN账号注册了3年,一直没有上来过,更不用说写博客了.我不知道博客的具体用途,我只想把它当做一种心得来发表,可能是一些技术上的理解或者生活上的小故事.好了,下面我将记录我对WAV播放器的理解. 很 ...

最新文章

  1. Nature Genetics:微生物如何适应植物的?(articles)
  2. JAVA多线程学习小结
  3. 求字符串中最长无重复子序列
  4. java 不可修改的集合对象_[改善Java代码]asList方法产生的List对象不可更改
  5. 详解Python垃圾回收机制
  6. hibernate更新部分字段的几种方法
  7. 两个Python web框架:Django Tornado比较
  8. display:none的表单也会被提交
  9. Enterprise Vault 10.0.4 FOR Exchange2013 部署之三-日记邮件归档
  10. supermap试用许可过期如何重新申请
  11. 跨平台 webapp 开发技术之 Hybrid App
  12. spring核心知识点分析
  13. mysql8 bigint类型和datetime类型的转换
  14. 系统故障模拟及修复实验
  15. 关于联想oem系统激活方法尝试
  16. idea console窗口不见了_Python 闲谈 14——安利下IDEA开发神器中好用到爆的插件
  17. Python打地鼠小游戏源代码
  18. 设计模式(2)-抽象工厂模式(Abstract Factory)与生成器模式(Builder)模式
  19. Polkit授权管理
  20. android手机有哪些版本,支持安卓5.0的手机有哪些 android5.0手机汇总

热门文章

  1. 移动端适配iphoneX、iPhone XS、iPhone XS Max、iPhone XR方法
  2. git:SSL证书问题:无法获取本地颁发者证书
  3. CSS基础(复合选择器-三大特性)
  4. 讹传的Win7睡眠(待机)快捷方式“rundll32.exe powrprof.dll,SetSuspendState 0,1,0”
  5. java毕业设计融呗智慧金融微资讯移动平台服务端源码+lw文档+mybatis+系统+mysql数据库+调试
  6. DownloadSDKServer.exe 是什么,DownloadSDKServer.exe 内存占用高怎么办
  7. AMD显卡安装Caffe|深度学习|Ubuntu
  8. 【研报笔记】光大技术择时系列1:基于阻力支撑相对强度(RSRS)的市场择时
  9. 【社区图书馆】携程架构与实践图书
  10. 3D建模 UG8.0 32位安装过程