|
#define READ_ENCODER_A (GPIOC->IDR & GPIO_OTYPER_IDR_14) #define READ_ENCODER_B (GPIOC->IDR & GPIO_OTYPER_IDR_15) $ K- M0 ~! ^9 h uint8_t g_u8_AngleSize =0; //-------------------编码器--------------------------------- // 在定时器 里面被调用,每 500us-1ms 之间均可 void KEY_EnCoderFunc(void)% ?/ V. w. r* S1 f { static u16 oldbit = FALSE;) @( ^7 F* h" U% u2 ~2 l ? if (oldbit && (!READ_ENCODER_A)) //判断前后状态以识别是否发生下降沿 { if (READ_ENCODER_B) //判断另一相电平' a& }& a8 r( W3 k7 z; d& z+ ~ {( a7 p: \3 O. Y7 d& E if (g_u8_AngleSize <= 235)! D0 D2 L7 j; M9 _1 ` g_u8_AngleSize += 5; } else Y4 U9 ^* S- G& l( K { if (g_u8_AngleSize >= 35)+ Y5 C! w! J: M. a3 d; I g_u8_AngleSize -= 5;$ e7 x# z' E G6 A }9 R0 r7 S0 H/ v! | }6 }6 ?' G. D2 u oldbit = READ_ENCODER_A; //刷新位暂存值 + d9 E- K2 x) z, o' o3 U } |
微信公众号
手机版