STM32输入AB相脉冲的编码器程序

发布者:CelestialSoul最新更新时间:2018-09-16 来源: eefocus关键字:STM32  AB相脉冲  编码器 手机看文章 扫描二维码
随时随地手机看文章

// STM32输入AB相脉冲的编码器程序

//  程序中使用TIM5计数器计数AB相脉冲,如果将TIM5修改成其他定时器也能适用。

// PA0和PA1分别作为A、B相脉冲输入

// 可以另外再使用一个定时器,定时读出脉冲数TIM5->CNT

//  作者: bjtea 

// http://blog.csdn.net/bjtea/article/details/8528389

// 以下程序摘自本人做的一个项目,因此可以放心代码的使用

 #include "stm32f10x_tim.h"


void T5_Encoder_Configration(void)

  GPIO_InitTypeDef GPIO_InitStructure;

  TIM_TimeBaseInitTypeDef   TIM_TimeBaseStructure;
  TIM_ICInitTypeDef  TIM_ICInitStructure;

 /* TIM5 clock source enable */
  RCC_APB1PeriphClockCmd(RCC_APB1Periph_TIM5, ENABLE);

//PA0-A相, PA1-B相                                                 
  GPIO_StructInit(&GPIO_InitStructure);                     
  GPIO_InitStructure.GPIO_Pin = GPIO_Pin_0 | GPIO_Pin_1;    // 使用PA0,PA1

  GPIO_InitStructure.GPIO_Mode = GPIO_Mode_IN_FLOATING;
  GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;
  GPIO_Init(GPIOA,&GPIO_InitStructure);


  /* Timer configuration in Encoder mode */
  TIM_DeInit(TIM5);                   //TIM5复位 
  
  TIM_TimeBaseStructure.TIM_Prescaler = 0x0;  // No prescaling 
  TIM_TimeBaseStructure.TIM_Period = 10000;  
  TIM_TimeBaseStructure.TIM_ClockDivision = TIM_CKD_DIV1;
  TIM_TimeBaseStructure.TIM_CounterMode = TIM_CounterMode_Up;   
  TIM_TimeBaseInit(TIM5, &TIM_TimeBaseStructure);
 
 // 设TIM5为编码模式3
  TIM_EncoderInterfaceConfig(TIM5, TIM_EncoderMode_TI12, TIM_ICPolarity_Rising, TIM_ICPolarity_Rising);
  TIM_ICStructInit(&TIM_ICInitStructure);    // 初始化为默认值
  TIM_ICInitStructure.TIM_ICFilter = 6;
  TIM_ICInit(TIM5, &TIM_ICInitStructure);
   
  //Reset counter
  TIM5->CNT = 0;
  TIM_Cmd(TIM5, ENABLE); 

}

//  TIM5->CNT的内容就是编码器的计数脉冲。


关键字:STM32  AB相脉冲  编码器 引用地址:STM32输入AB相脉冲的编码器程序

上一篇:基于STM32的旋转编码器
下一篇:基于stm32的测速实现

推荐阅读最新更新时间:2024-03-16 16:14

STM32数据手册开发实现按键输入功能
上一篇我们讲解了如何通过数据手册和库函数手册开发STM32的LED驱动(也就是通用GPIO的输出功能),今天我们讲解其输入功能实现。接上篇寄存器介绍(STM32根据数据手册完成LED驱动开发(寄存器版和库函数版介绍),GPIO有关寄存器有7个,本节用到端口配置低寄存器(因为根据电路原理图设计,用到引脚PC5),端口输入数据寄存器。 就开发驱动流程讲,先要看硬件电路接口,定义错了接口,啥功能都实现不了。根据硬件连接情况,我们分析并使用KEY0进行设计。KEY0 的一端接地,一端接单片机PC5引脚,表示我们的按键是按下采集低电平信号,也就是读取的数据是0。好,那么我们按照上节课讲解的八种工作模式,我们肯定是输入模式,但是是哪一种呢
[单片机]
<font color='red'>STM32</font>数据手册开发实现按键输入功能
STM32官方固件库简析
STM32固件库目录结构如下图所示: 我们主要关注的是 Libraries这个文件夹。 1、_htmresc 是ST图标,Project是一些列子和模板可以参考学习,Utilities是ST官方评估板的例程。 2、Libraries 中 CMSIS(Cortex Microcontroller Software Interface Standand)为Cortex微控制器软件接口标准。 CoreSupport 中包含内核文件 core_cm3.h, core_cm3.c 用于访问CortexM3内核 设备驱动文件 stm32f10x.h, system_stm32f10
[单片机]
STM32常用的一些开发工具汇总
本文为大家汇总 STM32 常用的一些开发工具。 IDE(集成开发环境) IDE:IntegratedDevelopmentEnvironment,集成开发环境。 IDE通常包含编辑器、编译器、调试器、图形用户界面等集成多种工具的应用程序(也就是大家写代码的上位机软件)。 通用IDE 1.KeilMDK 2.IAREWARM 3.Embedded Studio 专用IDE 1.STM32CubeIDE ST官方推出的集成开发环境,集成了TrueSTUDIO+STM32CubeMX 两个工具。 2.RT-Thread Studio 该IDE支持大部分STM32,集成了RT-Thread实时操作系统。 搭建IDE 自己搭建开发
[单片机]
stm32驱动TB6600控制42/57步进电机的案例(TIM中断和PWM实验)
步进电机的简单使用 接线: TB6600驱动盒的详细说明: 程序设计: 工程文件: 做毕业设计要用到57步进电机,所以花了两天时间做了一下电机函数 从淘宝查的资料: 接线如图: 接线: DIR- && PUL- 接 单片机GND DIR+ 接 PA1 PUL+ 接 PA0 驱动盒TB6600 VCC 24V 驱动盒TB6600 GND 24V的GND 我测出来的 A组(绿+蓝- ) B组(黄+红-) 如何确定AB两组看这个: 关于42步进电机驱动——基于STM32 HAL库实现 接线方法 TB6600驱动盒的详细说明: 先冲英说明: Microstep Driver 微步驱动程序 Microstep 微步
[单片机]
<font color='red'>stm32</font>驱动TB6600控制42/57步进电机的案例(TIM中断和PWM实验)
stm32 驱动DS18B20温度传感器
#include temp.h #define u8 uint8_t #define u16 uint16_t #define u32 uint32_t #define DS18B20_PORT GPIOA #define DS18B20_PIN GPIO_Pin_1 #define DS18B20_CLK RCC_APB2Periph_GPIOA #define RW1820_DQ_HIGH GPIO_SetBits(DS18B20_PORT, DS18B20_PIN); #define RW1820_DQ_LOW GPIO_ResetBits(DS18B20_PORT
[单片机]
关于STM32正交编码器边沿的理解
STM32中的TIM_EncoderInterfaceConfig()函数。其配置的定时器有编码器接口等功能,一般是定时器的通道1和通道2才能作为编码器的输入口,对应编码器输出的两项。 TIMx参数就是使用哪个定时器作为编码器接口的捕捉定时器。 一般一个编码器占用一个定时器。 TIM_EncoderMode参数是模式,是单相计数(只能反映速度)还是两相计数(速度和方向)。 TIM_IC1Polarity和TIM_IC2Polarity参数就是通道1、2的捕捉极性。 但是一般来说,STM32对应的都是两相计数,一项计数容易误判,也就是说,你可以按一路计数,但是接线时好像两相的编码线A,B都是需要接上的,否则容易误判。
[单片机]
关于<font color='red'>STM32</font>正交<font color='red'>编码器</font>边沿的理解
STM32延时函数
void delay_init(u8 SYSCLK) { SysTick- CTRL&=0xfffffffb; fac_us=SYSCLK/8; fac_ms=(u16)fac_us*1000; } Systick 主要的作用就是拿来计时,其原理和应用简述一下就是这样的:通过配置寄存器 SysTick- CTRL来设定Systick的计时频率并Enable使Systick开始计数,这里的 SysTick- CTRL&=0xfffffffb应该很好理解,把第2位设定为0,查找应用手册可以知道这是把Systick的计时频率设定为CPU主频(SYSCLK)的1/8。
[单片机]
基于NiosII的低码率实时H.264视频编码器
引 言   H.264标准作为新一代视频编码标准,是面向多比特率的视频编码标准,也称JVT/AVC标准,既可用于高码率的HDTV和数字存储系统,也可用于低码率的实时通信系统。在相同的图像质量情况下,H.264比H.263和MPEG一4可以节省20%~50%的码率。就其基本档次而言,编码器的复杂度是H.263的10倍左右。H.264良好的网络亲和性和优异的压缩性能使其成为视频应用的首选,但其巨大的运算量成为许多应用的瓶颈。笔者基于NiosII设计了一种低码率实时应用的编码系统。该系统充分利用FPGA的并行设计结构,对视频数据采用高压缩比的H.264标准编码,能很好地满足低码率实时编码的要求。    1 H.264编码系统结构设
[手机便携]
基于NiosII的低码率实时H.264视频<font color='red'>编码器</font>
小广播
添点儿料...
无论热点新闻、行业分析、技术干货……
设计资源 培训 开发板 精华推荐

最新单片机文章
何立民专栏 单片机及嵌入式宝典

北京航空航天大学教授,20余年来致力于单片机与嵌入式系统推广工作。

换一换 更多 相关热搜器件
电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 电信业务审批[2006]字第258号函 京公网安备 11010802033920号 Copyright © 2005-2024 EEWORLD.com.cn, Inc. All rights reserved