STM32CubeMX EC11旋转编码器驱动

简介: STM32CubeMX EC11旋转编码器驱动

一、接线图,外接上拉



二、CubeMX配置



时钟配置




引脚配置



打开串口一,选择异步



生成工程




三、代码



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



顺便打开烧录自动复位



并取消pack选项



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 */
}



运行效果


 

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

目录
相关文章
|
3月前
【STM32】基于HAL库的360度编码器、摇杆代码编写
【STM32】基于HAL库的360度编码器、摇杆代码编写
小巴陪你搞技术-STM32驱动1602时钟
小巴陪你搞技术-STM32驱动1602时钟
|
29天前
STM32Cubemx PWM驱动加湿器模拟火山喷发效果
STM32Cubemx PWM驱动加湿器模拟火山喷发效果
37 14
|
29天前
STM32Cubemx PWM驱动SG90舵机
STM32Cubemx PWM驱动SG90舵机
50 13
|
29天前
STM32CubeMX mpu6050驱动
STM32CubeMX mpu6050驱动
37 10
|
29天前
STM32CubeMX OLED驱动
STM32CubeMX OLED驱动
42 10
|
29天前
|
芯片
STM32CubeMX TM1637驱动数码管
STM32CubeMX TM1637驱动数码管
36 6
|
29天前
STM32CubeMX WS2812B灯驱动
STM32CubeMX WS2812B灯驱动
25 1
|
29天前
STM32CubeMX ULN2003步进电机驱动
STM32CubeMX ULN2003步进电机驱动
19 0