关于STM32编码器接口模式

2019-07-14 21:57发布

这个编码器模式可以检测出电机旋转方向,比如我下面这段程序,首先对CNT计数器清零,10ms检测一下CNT计数器,来判断接收到的编码盘的脉冲数,那么在向下计数的时候,因为一开始CNT计数器被清零,那么CNT就为-1,-2,,,关键计数器不能为赋值啊!但是下面的程序却能返回赋值,说是补码什么的,不太理解求解释!
//读计数个数
int tiM2_Encoder_Read(void)
{
    TIM2_Encoder_Write(0);        //计数器清0
        delay_ms(10);          //检测时间,可调节
    return (int)((s16)(TIM2->CNT));           //数据类型转换
                             //记录边沿变化次数(几个栅格被记录4次)
}

友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。
该问题目前已经被作者或者管理员关闭, 无法添加新回复
2条回答
dragon7799
1楼-- · 2019-07-15 11:35
最小值减一为最大值。0 减一后 为 65535,不过65535的二进制形式如果理解为负数,因为负数是补码表示的,-1的补码二进制和65535的二进制是一样的,都是 0xFFFF
wodezpyzz
2楼-- · 2019-07-15 16:39
dragon7799 发表于 2015-9-3 16:46
最小值减一为最大值。0 减一后 为 65535,不过65535的二进制形式如果理解为负数,因为负数是补码表示的,-1的补码二进制和65535的二进制是一样的,都是 0xFFFF

是不是这个补码存在CNT计数器里面呢?然后发生下溢,CNT计数器更新为ARR的重载值?然后继续向下计数?

一周热门 更多>