1、分别定义两个IO口并将其初始化
#define A_ENCODER_PORT JL_PORTA
#define B_ENCODER_PORT JL_PORTA
#define A_ENCODER_BIT BIT(3)
#define B_ENCODER_BIT BIT(4)
#define ENCODER_INIT() do{A_ENCODER_PORT->DIR |= (A_ENCODER_BIT);A_ENCODER_PORT->PD &= ~
(A_ENCODER_BIT);A_ENCODER_PORT->PU |= (A_ENCODER_BIT);
B_ENCODER_PORT->DIR |= (B_ENCODER_BIT);B_ENCODER_PORT->PD &= ~
(B_ENCODER_BIT);B_ENCODER_PORT->PU |= (B_ENCODER_BIT);}while(0)
#define A_ENCODER_IN ((A_ENCODER_PORT->IN & A_ENCODER_BIT))
#define B_ENCODER_IN ((B_ENCODER_PORT->IN & B_ENCODER_BIT))
2、 扫描编码器子函数
/**********************************************************
在编码器引脚A为低电平期间:
编码器引脚B从0到1为正转,编码器引脚B从1到0为反转。
**********************************************************/
static void encoder_scan(void)
{
static u8 Aold = 0, Bold = 0; //定义了两个变量用来储蓄上一次调用此方法是编