主控STM32F103C8T6
while(1)
{
if( TIMIRQCNT > pd1000ms+1000*ITS_PER_MS-1) // every 1000ms
{
angNum1s=angNum;
Num1s=Num;
angNum=0;
Num=0;
pd1000ms=TIMIRQCNT;
}
Num++;
delay_ms(10);
}
主程序,仿真发现Num1s确实=100,说明运行上面的if语句频率是1s/次
当我去掉delay_ms(10)时,Num1s=1996855;
当我把程序改成如下时
while(1)
{
if( TIMIRQCNT > pd1000ms+1000*ITS_PER_MS-1) // every 1000ms
{
angNum1s=angNum;
Num1s=Num;
angNum=0;
Num=0;
pd1000ms=TIMIRQCNT;
}
if(mpu_dmp_get_data(&pitch,&roll,&yaw)==0) //6050已设置200Hz输出频率
{
MPU_Get_Gyroscope(&gyrox,&gyroy,&gyroz);
angNum++;
}
Num++;
}
仿真发现angNum1s=200,确实符合200Hz的输出频率,但是Num1s却只有1190而已
从不读取角度的1996855变成1190,看来F1运行浮点数真的很慢啊
那F1做飞控怎么做啊啊啊啊啊
友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。
嗯嗯,谢谢原子哥回答
一周热门 更多>