int16_t Num;
int main(void)
{
OLED_Init();
Encoder_Init();
OLED_ShowString(1, 1, "Num:");
while (1)
{
Num += Encoder_Get();
OLED_ShowSignedNum(1, 5, Num, 5);
}
}
int16_t Encoder_Get(void)
{
int16_t Temp;
Temp = Encoder_Count;
Encoder_Count = 0;
return Temp;
}
//不直接返回Encoder_Count这个变量了,而是返回每次调用这个Get函数后,返回Count的变化值,用于外部加减一个变量,所以在这里需要返回Count,然后把Count清0,因为返回Count之后,函数就结束了,没法清0了,所以先定义一个临时变量Temp
上面难理解,修改后同样效果:
int16_t Num;
int main(void)
{
OLED_Init();
Encoder_Init();
OLED_ShowString(1, 1, "Num:");
while (1)
{
Num = Encoder_Get();
OLED_ShowSignedNum(1, 5, Num, 5);
}
}
int16_t Encoder_Get(void)
{
return Encoder_Count;
}
只改int16_t Encoder_Get(void),现象是数字一直加或减,把主函数Num+的“+”去掉后,效果相同