在学习江科大的stm32课程编码器正转反转时,出现一些问题,
主函数代码如下:
#include "stm32f10x.h" // Device header
#include "Delay.h"
#include "OLED.h"
#include "Encoder.h"
int16_t Num; //定义待被旋转编码器调节的变量
int main(void)
{
OLED_Init(); //OLED初始化
Encoder_Init(); //旋转编码器初始化
while (1)
{
Num += Encoder_Get(); //获取旋转编码器的增量值
OLED_ShowSignedNum(1, 5, Num, 5); //显示Num
}
}
其中Num += Encoder_Get(); 修改为Num = Encoder_Get();则实现不了编码器正反转OLED显示数值增减的现象。一直找不到问题出在哪里?
另外如果编码器模块里的状态获取函数更改为:
int16_t Encoder_Get(void)
{
return Encoder_Count;
}
然后主函数更改为:
while (1)
{
OLED_ShowSignedNum(1, 5, Encoder_Get(), 5);
}
也是可以的。还请大佬们指导下,本人小白,刚接触,一直没想明白。
另外还有一个问题:keil软件Debug时,如何查看中间变量值?比如Temp,我想通过watch窗口查看,显示非法数据,有什么方法可以看到中间变量值么?