STM32CubeMX EC11旋转编码器驱动

一、接线图,外接上拉

STM32CubeMX EC11旋转编码器驱动_第1张图片

二、CubeMX配置

STM32CubeMX EC11旋转编码器驱动_第2张图片

时钟配置

STM32CubeMX EC11旋转编码器驱动_第3张图片STM32CubeMX EC11旋转编码器驱动_第4张图片

引脚配置

STM32CubeMX EC11旋转编码器驱动_第5张图片 打开串口一,选择异步

STM32CubeMX EC11旋转编码器驱动_第6张图片

生成工程

STM32CubeMX EC11旋转编码器驱动_第7张图片STM32CubeMX EC11旋转编码器驱动_第8张图片

三、代码

STM32CubeMX EC11旋转编码器驱动_第9张图片

K2引脚的下降沿检测K3引脚的电平
K2引脚的上升沿检测K3引脚的电平

串口重定向和定义引脚

/* USER CODE BEGIN Includes */

#include "stdio.h"
#define EC11_DATA_A HAL_GPIO_ReadPin(GPIOA,GPIO_PIN_3) 
#define EC11_DATA_B   HAL_GPIO_ReadPin(GPIOA,GPIO_PIN_4)
#define EC11_DATA_key  HAL_GPIO_ReadPin(GPIOA,GPIO_PIN_5)
int fputc(int ch,FILE *f)
{
    HAL_UART_Transmit(&huart1,(uint8_t*)&ch,1,0xFFFF);
    return ch;
}
/* USER CODE END Includes */

 此处需要打开use MicroLIB

STM32CubeMX EC11旋转编码器驱动_第10张图片

顺便打开烧录自动复位

STM32CubeMX EC11旋转编码器驱动_第11张图片 并取消pack选项

STM32CubeMX EC11旋转编码器驱动_第12张图片

main.c中

/* USER CODE BEGIN 0 */
int16_t Encoder_EC11_Scan(int16_t key,int16_t EC11_A,int16_t EC11_B) 
{
  static int8_t sta=0,sta_key=0;
  int16_t ScanResult = 0;   
  if(sta_key==0 && key==1){sta_key=1;}
  else if(sta_key==1){
    if(key==0){sta_key=2;}
  }
  else if(sta_key==2){
    if(key==1){
      sta_key=0;
      ScanResult=3;
    }
  }
  if(EC11_A==0 && sta==0){
    sta=1;
  } 
  else if(sta==1){
    if(EC11_A==1){
      if(EC11_B==1){
        if(key==0){ScanResult=2;sta_key=0;}
        else {ScanResult=1;}
      }      
      else if(EC11_B==0){
        if(key==0){ScanResult=-2;sta_key=0;}
        else {ScanResult=-1;}
      }
      sta=0;
    }
  }
  if(ScanResult!=0)printf("%d\r\n",ScanResult);	//输出查看,不需要可删除
  return ScanResult;      //返回值的取值:   0:无动作;  1:正转; -1:反转;  2:按下正转; -2:按下反转; 3:只按下并松开
}

/* USER CODE END 0 */

while

 while (1)
  {	Encoder_EC11_Scan(EC11_DATA_key,EC11_DATA_A,EC11_DATA_B);
			/* USER CODE END WHILE */

    /* USER CODE BEGIN 3 */
  }
  /* USER CODE END 3 */
}

 运行效果

STM32CubeMX EC11旋转编码器驱动_第13张图片
 

链接: https://pan.baidu.com/s/1pvYa3uHqwQEmemLVQ-cfnA?pwd=7via 提取码: 7via 

你可能感兴趣的:(STM32CubeMX,stm32,嵌入式硬件,单片机)