一、接线
旋转编码器,旋钮会不断接触断开触点产生电波。 由于两个电波之间相差90°,即为正交波,一个电波处于高电平时另一个处于低电平,所以可以用来判断旋转方向。
二、代码
复制粘贴4-1的工程文件,重命名为“5-2 旋转编码器计次”,在“Hardware”文件夹右键新建“Encoder.c”及“Encoder.h”,注意文件路径。
Encoder.c:
#include "stm32f10x.h" // Device header
int16_t Encoder_Count;
void Encoder_Init(void)
{
RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOB,ENABLE);
RCC_APB2PeriphClockCmd(RCC_APB2Periph_AFIO,ENABLE);
GPIO_InitTypeDef GPIO_InitStruture;
GPIO_InitStruture.GPIO_Mode = GPIO_Mode_IPU;
GPIO_InitStruture.GPIO_Pin = GPIO_Pin_0 | GPIO_Pin_1;
GPIO_InitStruture.GPIO_Speed = GPIO_Speed_50MHz;
GPIO_Init(GPIOB,&GPIO_InitStruture);
GPIO_EXTILineConfig(GPIO_PortSourceGPIOB,GPIO_PinSource0);
GPIO_EXTILineConfig(GPIO_Port