K_A22_005 基于STM32驱动360度编码器模块 串口与数码管双显示

实物参考链接 直戳跳转

一、资源说明

二、基本参数

引脚说明

三、驱动说明

对应程序:
STM32 程序:

//中断配置:
/**
  * @brief  配置嵌套向量中断控制器NVIC
  * @param  无
  * @retval 无
  */
static void NVIC_Configuration(void)
{
  NVIC_InitTypeDef NVIC_InitStructure;
  
  /* 配置NVIC为优先级组1 */
  NVIC_PriorityGroupConfig(NVIC_PriorityGroup_1);
  
  /* 配置中断源:按键1 */
  NVIC_InitStructure.NVIC_IRQChannel = ECC11_A_INT_EXTI_IRQ;
  /* 配置抢占优先级 */
  NVIC_InitStructure.NVIC_IRQChannelPreemptionPriority = 1;
  /* 配置子优先级 */
  NVIC_InitStructure.NVIC_IRQChannelSubPriority = 1;
  /* 使能中断通道 */
  NVIC_InitStructure.NVIC_IRQChannelCmd = ENABLE;
  NVIC_Init(&NVIC_InitStructure);
  
//  /* 配置中断源:按键2,其他使用上面相关配置 */  
//  NVIC_InitStructure.NVIC_IRQChannel = ECC11_B_INT_EXTI_IRQ;
//  NVIC_Init(&NVIC_InitStructure);
}

 /**
  * @brief  配置 IO为EXTI中断口,并设置中断优先级
  * @param  无
  * @retval 无
  */
void EXTI_Key_Config(void)
{
	GPIO_InitTypeDef GPIO_InitStructure; 
	EXTI_InitTypeDef EXTI_InitStructure; 

	/*开启按键GPIO口的时钟*/
	RCC_APB2PeriphClockCmd(ECC11_A_INT_GPIO_CLK,ENABLE);
												
	/* 配置 NVIC 中断*/
	NVIC_Configuration();
	
/*--------------------------ECC11_A配置-----------------------------*/
	/* 选择按键用到的GPIO */	
  GPIO_InitStructure.GPIO_Pin = ECC11_A_INT_GPIO_PIN;
  /* 配置为浮空输入 */	
  GPIO_InitStructure.GPIO_Mode = GPIO_Mode_IN_FLOATING;
  GPIO_Init(ECC11_A_INT_GPIO_PORT, &GPIO_InitStructure);

	/* 选择EXTI的信号源 */
  GPIO_EXTILineConfig(ECC11_A_INT_EXTI_PORTSOURCE, ECC11_A_INT_EXTI_PINSOURCE); 
  EXTI_InitStructure.EXTI_Line = ECC11_A_INT_EXTI_LINE;
	
	/* EXTI为中断模式 */
  EXTI_InitStructure.EXTI_Mode = EXTI_Mode_Interrupt;
	/* 下降沿中断 */
  EXTI_InitStructure.EXTI_Trigger = EXTI_Trigger_Rising_Falling;
  /* 使能中断 */	
  EXTI_InitStructure.EXTI_LineCmd = ENABLE;
  EXTI_Init(&EXTI_InitStructure);
	
//  /*--------------------------ECC11_B配置-----------------------------*/
//	/* 选择按键用到的GPIO */	
  GPIO_InitStructure.GPIO_Pin = ECC11_B_INT_GPIO_PIN;
  /* 配置为浮空输入 */	
  GPIO_InitStructure.GPIO_Mode = GPIO_Mode_IN_FLOATING;
  GPIO_Init(ECC11_B_INT_GPIO_PORT, &GPIO_InitStructure);


  GPIO_InitStructure.GPIO_Pin = GPIO_Pin_6;
  /* 配置为浮空输入 */	
  GPIO_InitStructure.GPIO_Mode = GPIO_Mode_Out_PP;
	GPIO_InitStructure.GPIO_Speed=GPIO_Speed_50MHz;
  GPIO_Init(GPIOA, &GPIO_InitStructure);
}
中断服务函数:
void ECC11_A_IRQHandler(void)
{
  //确保是否产生了EXTI Line中断
	if(EXTI_GetITStatus(ECC11_A_INT_EXTI_LINE) != RESET) 
	{

		if(!(GPIO_ReadInputDataBit(ECC11_A_INT_GPIO_PORT, ECC11_A_INT_GPIO_PIN)))
		{
				A_B_Flag=1;		
		}
		if((GPIO_ReadInputDataBit(ECC11_A_INT_GPIO_PORT, ECC11_A_INT_GPIO_PIN))&&A_B_Flag)
		{
			EC11_flag=1;
			A_B_Flag=0;		
			if(GPIO_ReadInputDataBit(ECC11_B_INT_GPIO_PORT, ECC11_B_INT_GPIO_PIN))
			{
				timer--;
				if(timer>=255)
				{
					timer=0;
				}
				
			}
			else
			{
				timer++;
				if(timer>=255)
				{
					timer=255;
				}
				
			}
		}
		
    //清除中断标志位
		EXTI_ClearITPendingBit(ECC11_A_INT_EXTI_LINE);     
	}  
}

四、部分代码说明

接线引脚定义

需要自定义引脚可在此处更改,STM32要自定义引脚的话也要注意引脚时钟使能的更改

STM32F103C8T6+360度编码器模块

//360度编码器模块引脚定义
//360度编码器模块引脚定义
#define ECC11_A_INT_GPIO_PORT         GPIOA
#define								ECC11_A_INT_GPIO_CLK          (RCC_APB2Periph_GPIOA|RCC_APB2Periph_AFIO)
#define ECC11_A_INT_GPIO_PIN          GPIO_Pin_4

#define ECC11_B_INT_GPIO_PORT         GPIOA
#define ECC11_B_INT_GPIO_CLK          (RCC_APB2Periph_GPIOA)
#define ECC11_B_INT_GPIO_PIN          GPIO_Pin_5

//数码管模块引脚定义					
#define DIN_GPIO_PORT    	GPIOA		              /* GPIO端口 */
#define DIN_GPIO_CLK 	    RCC_APB2Periph_GPIOA		/* GPIO端口时钟 */
#define DIN_GPIO_PIN			GPIO_Pin_1			        

#define CS_GPIO_PORT    	GPIOA			              /* GPIO端口 */
#define CS_GPIO_CLK 	    RCC_APB2Periph_GPIOA		/* GPIO端口时钟 */
#define CS_GPIO_PIN		    GPIO_Pin_2			        

#define CLK_GPIO_PORT    	GPIOA			              /* GPIO端口 */
#define CLK_GPIO_CLK 	    RCC_APB2Periph_GPIOA		/* GPIO端口时钟 */
#define CLK_GPIO_PIN		  GPIO_Pin_3			
//无源蜂鸣器引脚定义PA6
GPIOA->ODR ^= GPIO_Pin_6;

五、基础知识学习

STC89C52RC程序下载 直戳跳转

STM32F103C8T6程序下载

1、串口下载  直戳跳转

2、ST-LINK下载  直戳跳转

3、J-LINK下载  直戳跳转

4、DAP-LINK下载  直戳跳转

OLED0.96程序说明 直戳跳转

串口助手下载与使用
1、安信可调试助手使用 直戳跳转
2、 sscom33串口调试助手使用 直戳跳转
3、STC-ISP串口调试助手使用 直戳跳转

六、视频效果展示与程序资料获取

演示视频连接 直戳跳转
资料获取 直戳跳转

实物参考链接 直戳跳转

七、注意事项

1、VCC GND请勿接反,接反易烧
2、OLED显示异常时,排除接线接触不良

八、接线说明

可参考程序main.c最上面接线说明


所有相关实物与程序套件可在我们店铺找到

X
深圳市咱们电子科技有限公司