1.编码器
图1 编码器示意图
图1为编码器的示意图,中间是一个带光栅的码盘,光通过光栅,接收管接收到高电平,没通过,接收到低电平。电机旋转一圈,码盘上有多少光栅,接受管就会接收多少个高电平。
2.stm32编码器接口模式(寄存器)
STM32的编码器接口模式在STM32中文参考手册中有详细的说明。
图2 STM芯片编码器接口模式说明
下图是一个计数器操作的实例,显示了计数信号的产生和方向控制。它还显示了当选择了双边沿时,输入抖动是如何被抑制的;抖动可能会在传感器的位置靠近一个转换点时产生。在这个例子中,我们假定配置如下:
图3 编码器模式下的计数器操作实例
TI 1波形先于TI 2波形90°时,每当边沿变化,计数器加1(可通过寄存器设置加减),可以看出一个光栅,被计数了4次。TI 1波形后于TI 2波形90°时 ,每遇到一次边沿变化,计数器减1。
1. //TIM2_Encoder_Init,Tim2_CH1(PA0);Tim2_CH2(PA1)
2. //arr:自动重装值 0XFFFF
3. //psc:时钟预分频数 ,不分频
4. void TIM2_Encoder_Init(u16 arr,u16 psc)
5. {
6. RCC->APB1ENR|=1<<0; //TIM2时钟使能
7. RCC->APB2ENR|=1<<2; //使能PORTA时钟
8.
9. GPIOA->CRL&=0XFFFFFF00; //PA0、PA1 清除之前设置
10. GPIOA->CRL|=0X00000044; //PA0、PA1 浮空输入
11.
12. TIM2->ARR=arr; //设定计数器自动重装值
13. TIM2->PSC=psc; //预分频器
14.
15. TIM2->CCMR1 |= 1<<0; //输入模式,IC1FP1映射到TI1上
16. TIM2->CCMR1 |= 1<<8; //输入模式,IC2FP2映射到TI2上
17. TIM2->CCER |= 0<<1; //IC1不反向
18. TIM2->CCER |= 0<<5; //IC2不反向
19. TIM2->SMCR |= 3<<0; //所用输入均在上升沿或下降沿有效
20. TIM2->CR1 |= 1<<0; //使能计数器
21. }
关键字:STM32 编码器 接口模式
引用地址:
STM32编码器接口模式
推荐阅读最新更新时间:2024-03-16 16:23
STM32快速初始化引脚 一行代码完成引脚初始化
前言 平时开发STM32的时候,经常涉及到初始化引脚,便编写了一个快速初始化引脚函数,可分别在F1、F4使用,建议放在sys.c中 硬件准备 STM32开发平台 程序设计 对于STM32F1平台: //以下宏定义等内容放在sys.h #define PA RCC_APB2Periph_GPIOA #define PB RCC_APB2Periph_GPIOB #define PC RCC_APB2Periph_GPIOC #define PD RCC_APB2Periph_GPIOD #define PE RCC_APB2Periph_GPIOE #define PF RCC_APB2Periph_GPIOF #defin
[单片机]
基于STM32的带触摸屏的无线解说器
本实例是以STM32F103系列单片机作为核心处理器,利用VS1003芯片进行音频解码的一种无线解说器。通过对触摸显示屏的操作,实现手持部分和终端部分二者的无线通讯。系统采用大容量的SD卡作为存储部分,通过SPI将VS1003B与SD卡的数据与STM32进行交互通信。本解说器在播放时没有出现理论上的断续情况,音质较好,占用的软硬件资源也较少,为后续的扩展留下了很大空间。 无线讲解器通常用于工厂、博物馆、景区等室外空旷场所供参观介绍用,通过事先在场所安放无线发射模块,并控制发射模块的工作范围。听众到达景点后,手上的讲解器将自动接收各个地点的无线编码信号,经解码后即可将存储在SD卡中的语音播放,以便清晰地全程收听全部介绍内容。 1
[电源管理]
STM32通定时器时间设置步骤和计算公式方法寄存器值
一、STM32通用定时器原理 STM32 系列的CPU,有多达8个定时器,其中TIM1和TIM8是能够产生三对PWM互补输出的高级定时器,常用于三相电机的驱动,它们的时钟由APB2的输出产生。其它6个为普通定时器,时钟由APB1的输出产生。 下图是STM32参考手册上时钟分配图中,有关定时器时钟部分的截图: 从图中可以看出,定时器的时钟不是直接来自APB1或APB2,而是来自于输入为APB1或APB2的一个倍频器,图中的蓝色部分。 下面以通用定时器2的时钟说明这个倍频器的作用:当APB1的预分频系数为1时,这个倍频器不起作用,定时器的时钟频率等于APB1的频率;当APB1的预分频系数为其它数值(
[单片机]
STM32 KEIL下的堆栈设置问题
刚接手 STM32 时,你只编写一个 int main() { while(1); } BUILD://Program Size: Code=340 RO-data=252 RW-data=0 ZI-data=1632 编译后,就会发现这么个程序已用了1600多的RAM,要是在51单片机上,会心疼死了,这1600多的RAM跑哪儿去了,分析map,你会发现是堆和栈占用的 在startup_stm32f10x_md.s文件中,它的前面几行就有以上定义,这下该明白了吧。 Stack_Size EQU 0x00000400 Heap_Size EQU 0x00000200 顺便记号,关注此帖:
[单片机]
stm32 GPIO原理: 输入和输出控制
pre name= code class= html #include stm32f10x.h int main(void) { //1.PA.0 工作在推揽输出,50MHZ; PA.8输入 浮空输入 GPIOA- CRL=0X03; GPIOA- CRH=0X04; //2. PA.0 输出 = PA.8输入 while(1){ if((GPIOA- IDR&0X0100)==0X0100) GPIOA- ODR=0X01; else GPIOA- ODR=0x00; } return 0; }
[单片机]
基于Xmodem的STM32的IAP升级【转】
实验平台:windows7 + STM32F103ZET6 实验目的:你不需要任何烧录工具,就可以对你的产品进行远程升级代码! 1. Xmodem协议简介 2. IAP编程原理 3. Boot与App程序设计 4. 实验步骤 5. 远程升级应用 1.modem 协议 串行通信的文件传输协议主要有:Xmodem、Ymodem、Zmodem和KERMIT等。 Xmodem 协议传输由接收程序和发送程序完成。先由接收程序发送协商字符,协商校验方式,协商通过之后发送程序就开始发送数据包,接收程序接收到完整的一个数据包之后, 按照协商的方式对数据包进行校验。校验通过之后发送确认字符,然后发送程序继续发送下一包;如果校验失败,则发送否认字
[单片机]
定时器周期计算公式
例如: TIM_TimeBaseStructure.TIM_Period = 10000-1; //当定时器从0计数到10000,即为10000次,为一个定时周期10khz TIM_TimeBaseStructure.TIM_Prescaler = 71; //设置预分频:1us/clk TIM_TimeBaseStructure.TIM_ClockDivision = TIM_CKD_DIV1 ; //设置时钟分频系数:不分频(是对外部时钟TIMXETR进行滤波的) TIM_TimeBaseStructure.TIM_CounterMode = TIM_CounterMode_Up; //向上计数模式 T
[单片机]
STM32速成笔记(3)—按键检测
一、按键 检测 原理 按键检测原理比较简单,按键按下和不按下,其连接引脚的电平是不一样的,按键检测正是通过检测按键引脚的电平变化来实现的。比如按键未按下时引脚电平为高电平,按键按下后为低电平。我们在检测按键时只需要检测按键引脚是否变为低电平来确定按键是否按下。 二、 硬件 连接 按键的硬件连接决定了我们在配置按键IO时IO的状态。以我们使用的普中核心板为例,上面有三个按键 普中核心板按键硬件电路图 其中K1一端接VCC,另一端接单片机。K2和K3一端接地,另一端接单片机。硬件电路不同,导致他们在进行按键检测时IO的配置不同。 针对K1这种按键电路,按键按下时, 单片机 的引脚接到VCC,因此在未按下的情况下该引脚的默认电平
[单片机]