EC11系列编码器

EC1102编码器图

EC1102编码器原理图

1:编码器中添加了两个上拉电阻,所以在软件配置中,配置下拉有效。

EC1102编码器资料手册

2:在EC1102编码器资料手册中,工作电压是1.5V以下有效,3.5V以上是无效,在这里需要注意延时消抖,1-3ms,在这里设置1ms。

 好了原理已经知道,直接上代码

1:初始化

 void EnCoder() //编码器
{

   GPIO_InitTypeDef GPIO_InitStructure;
   EXTI_InitTypeDef EXTI_InitStruct;
   NVIC_InitTypeDef NVIC_InitStruct;
	
   RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOC|RCC_APB2Periph_GPIOA\
   |RCC_APB2Periph_AFIO, ENABLE); 

   GPIO_InitStructure.GPIO_Pin  =GPIO_Pin_7;
   GPIO_InitStructure.GPIO_Mode =GPIO_Mode_IPD; 
   GPIO_Init(GPIOA,&GPIO_InitStructure);

   GPIO_InitStructure.GPIO_Pin  =GPIO_Pin_3;
   GPIO_InitStructure.GPIO_Mode =GPIO_Mode_IPD; 
   GPIO_Init(GPIOC,&GPIO_InitStructure);
  
	
	NVIC_InitStruct.NVIC_IRQChannel    =EXTI3_IRQn;
	NVIC_InitStruct.NVIC_IRQChannelCmd =ENABLE;
	NVIC_InitStruct.NVIC_IRQChannelPreemptionPriority =3;
	NVIC_InitStruct.NVIC_IRQChannelSubPriority = 0;
	NVIC_Init(&NVIC_InitStruct);
	
	NVIC_InitStruct.NVIC_IRQChannel    =EXTI9_5_IRQn;
	NVIC_InitStruct.NVIC_IRQChannelCmd =ENABLE;
	NVIC_InitStruct.NVIC_IRQChannelPreemptionPriority =3;
	NVIC_InitStruct.NVIC_IRQChannelSubPriority = 1;
	NVIC_Init(&NVIC_InitStruct);
	
	
	
	GPIO_EXTILineConfig(GPIO_PortSourceGPIOA,GPIO_PinSource7);
	EXTI_InitStruct.EXTI_Line    =EXTI_Line7;
	EXTI_InitStruct.EXTI_LineCmd =ENABLE;
    EXTI_InitStruct.EXTI_Mode    =EXTI_Mode_Interrupt;
	EXTI_InitStruct.EXTI_Trigger =EXTI_Trigger_Falling;
    EXTI_Init(&EXTI_InitStruct);
	
	GPIO_EXTILineConfig(GPIO_PortSourceGPIOC,GPIO_PinSource3);
	EXTI_InitStruct.EXTI_Line    =EXTI_Line3;
	EXTI_InitStruct.EXTI_LineCmd =ENABLE;
    EXTI_InitStruct.EXTI_Mode    =EXTI_Mode_Interrupt;
	EXTI_InitStruct.EXTI_Trigger =EXTI_Trigger_Falling;
    EXTI_Init(&EXTI_InitStruct);


}
2:中断配置
#define alv GPIO_ReadInputDataBit(GPIOA,GPIO_Pin_7)
#define blv GPIO_ReadInputDataBit(GPIOC,GPIO_Pin_3)

volatile uint32_t encoder_left_ENABLE = 0;
volatile uint32_t encoder_right_ENABLE = 0; 

uint32_t time_A=0,time_B = 0;

//左边
void EXTI3_IRQHandler(void)
{

    Delay_ms(1);

	if (blv==0)
	{
        if(alv==0)
	    {

		    encoder_left_ENABLE=1;
			encoder_right_ENABLE=0;			 
			if(Buzzer_Stup)
			Buzzer_Time_ms=20;
			EC11_Time_B=0;
	    } 
	}
	
      EXTI_ClearITPendingBit(EXTI_Line3);  
}


//右边
void EXTI9_5_IRQHandler(void)
{


     Delay_ms(1);	

    if (alv==0)
	{
		if(blv==0)
		{ 
	
	        encoder_left_ENABLE=0;
		    encoder_right_ENABLE=1;
			if(Buzzer_Stup)
			Buzzer_Time_ms=20;
			EC11_Time_A=0;
					
		}
	}
	
     EXTI_ClearITPendingBit(EXTI_Line7); 
} 

 波形图效果

效果视频

WeChat_20231124111747-CSDN直播

  • 7
    点赞
  • 11
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值