移位操作的疑问

2019-08-02 16:33发布

Code of TMS320F28335 CCS4v120DSP2833x_exampleseqep_pos_speedExample_posspeed.c文件中有这么一段是计算机械角度的:
   pos16bval=(unsigned int)EQep1Regs.QPOSCNT;     // capture position once per QA/QB period
      p->theta_raw = pos16bval+ p->cal_angle;        // raw theta = current pos. + ang. offset from QA

   // The following lines calculate p->theta_mech ~= QPOSCNT/mech_scaler [current cnt/(total cnt in 1 rev.)]
   // where mech_scaler = 4000 cnts/revolution
1     tmp = (long)((long)p->theta_raw*(long)p->mech_scaler);   // Q0*Q26 = Q26
2     tmp &= 0x03FFF000;                                       
3     p->theta_mech = (int)(tmp>>11);           // Q26 -> Q15
4     p->theta_mech &= 0x7FFF;   

1~4为什么要这样进行位操作,请解释一下,多谢!
友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。
该问题目前已经被作者或者管理员关闭, 无法添加新回复
6条回答
chuxh
1楼-- · 2019-08-02 16:59
 精彩回答 2  元偷偷看……
dingy
2楼-- · 2019-08-02 19:02
是啊,首先的知道怎么计算角度的公式啊。
chuxh
3楼-- · 2019-08-03 00:05
是啊,楼主你需要首先知道计算的公式是什么。
liuzaiy
4楼-- · 2019-08-03 01:31
哦,好吧
liuzaiy
5楼-- · 2019-08-03 05:12
算我没说吧,先结贴了哈
airwill
6楼-- · 2019-08-03 05:40
 精彩回答 2  元偷偷看……

一周热门 更多>