金牌会员
 
- 积分
- 1782
- 金钱
- 1782
- 注册时间
- 2014-6-27
- 在线时间
- 964 小时
|
发表于 2014-10-3 15:16:48
|
显示全部楼层
呵呵,不错,楼主一定收获很大吧,这种用法我都用了几年了,其实,C语言里面数据处理很重要的,但也是C语言基础,其实不仅仅是这些,还有很多细要注意的,我也分享一下曾经写过的一个函数,里面就有这样的方法:
// ------------------------------------------------------------------------
// /* --------------------------- calcPT5541 --------------------------------- */
// /* ------------------------------------------------------------------------ */
void calcPTMS5541(float *pressure, float *temperature,u32 *p0, u32 *p1)
{
float dt, off, sens;
*p0 = *p0 & 0xFFFF;
*(p0+1) = *(p0+1) & 0xFFFF;
dt = -10000.0f + *(p0+1) - (8.0f * (*(p1+8)));
off = 10000.0f + (*(p1+5)) + ( ( ( *(p1+7)-250.0f) * dt ) / 4096.0f);
sens = 3000.0f + (*(p1+4) / 2.0f) + ( ( ( *(p1+6)+200.0f) * dt ) / 8192.0f);
if(pressure!=NULL)
*pressure = 1000.0f + (( sens * (*p0- off)) / 4096.0f);
if(temperature!=NULL)
{
if(dt<0.0f)
{
dt=dt-(dt/128*dt/128)/2;
}
else
{
dt=dt-(dt/128*dt/128)/8;
}
*temperature = ( 200.0f + (( dt * ( *(p1+9)+100.0f) ) / 2048.0f)) / 10.0f;
}
} |
|