在使用TI提供的例程中我们经常会看到使用强制类型转换的语句(LONG),例如下面的程序时对事件管理器定时器1的周期寄存器进行配置,我们在TI的例程中看到如下描述:
int m_period;
long tmp;
tmp = (long)(p->n_period*p->Mfunc_p);Mfunc_p=7FFF
m_period = (int)(tmp>>16) + (int)(p->n_period>>1);
EvaRegs.T1PR = m_period;
在上面程序中p->n_period*p->Mfunc_p已经溢出,后经LONG强制转换以后,高十六位就变成FFFF,不知这样做的目的是什么原因,同时从表面看起来好像这段程序时给p->n_period*除了一个2,不知这样做有什么意义?请高手指教!谢谢!