你好我好大家好! 发表于 2017-11-30 18:53:12

数据计算顺序影响计算结果

      程序中宏定义一下常量:                                          #define BASE_FREQ400

                                          #define P                          16
      根据以上宏定义,计算以下公式:BASE_SPEED=120*BASE_FREQ /P,然后将BASE_SPEED带入速度计算公式,在电机不转动的情况下,上位机反馈转速在0与10000多之间来回跳动,检查代码发现,120*BASE_FREQ =120*400=48000>32767,int为16为带符号整形数,范围为-32768~32767,因为在计算120*BASE_FREQ 会将这个中间结果存入int类型的内存区域,这时候4800会溢出内存,所以会导致上述现象。将上式改为BASE_SPEED=120*(BASE_FREQ /P)即可避免上述问题。
页: [1]
查看完整版本: 数据计算顺序影响计算结果