|
#define READ_ENCODER_A (GPIOC->IDR & GPIO_OTYPER_IDR_14) #define READ_ENCODER_B (GPIOC->IDR & GPIO_OTYPER_IDR_15) uint8_t g_u8_AngleSize =0; //-------------------编码器--------------------------------- // 在定时器 里面被调用,每 500us-1ms 之间均可 void KEY_EnCoderFunc(void) { static u16 oldbit = FALSE; if (oldbit && (!READ_ENCODER_A)) //判断前后状态以识别是否发生下降沿 { if (READ_ENCODER_B) //判断另一相电平 { if (g_u8_AngleSize <= 235) g_u8_AngleSize += 5; } else { if (g_u8_AngleSize >= 35) g_u8_AngleSize -= 5; } } oldbit = READ_ENCODER_A; //刷新位暂存值 } |
微信公众号
手机版