静态函数的好处

C语言中使用静态函数的好处:

     静态函数会被自动分配在一个一直使用的存储区,直到退出应用程序实例,避免了调用函数时压栈出栈,速度快很多。 

     关键字“static”,译成中文就是“静态的”,所以内部函数又称静态函数。但此处“static”的含义不是指存储方式,而是指对函数的作用域仅局限于本文件。 

使用内部函数的好处是:不同的人编写不同的函数时,不用担心自己定义的函数,是否会与其它文件中的函数同名,因为同名也没有关系。

     c语言中static的语义

1.static变量:

     1).局部

a.静态局部变量在函数内定义,生存期为整个源程序,但作用域与自动变量相同,只能在定义该变量的函数内使用。退出该函数后, 尽管该变量还继续存在,但不能使用它。

b.对基本类型的静态局部变量若在说明时未赋以初值,则系统自动赋予0值。而对自动变量不赋初值,则其值是不定的。

     2).全局全局变量本身就是静态存储方式, 静态全局变量当然也是静态存储方式。但是他们的作用域,非静态全局 变量的作用域是整个源程序(多个源文件可以共同使用);而静态全局变量则限制了其作用域, 即只在定义该变量的源文件内有效, 在同一源程序的其它源文件中不能使用它。

2.static函数(也叫内部函数)只能被本文件中的函数调用,而不能被同一程序其它文件中的函数调用。

区别于一般的非静态函数(外部函)staticc里面可以用来修饰变量,也可以用来修饰函数。先看用来修饰变量的时候。变量在c里面可分为存在全局数据区、栈和堆里。其实我们平时所说的堆栈是栈而不包含对,不要弄混。 

#define Gyro_Gr 0.0002663  //角速度变成弧度速度 (32768=500/S=(500*0.01745329252)弧度/s=8.7266弧度/s  8.7266/32768=0.0002663弧度/s )

3.14/180=0.01745329252

如果是硬件IIC就复用,如果是模拟就通用!

卡尔曼滤波是一种递归的估计,即只要获知上一时刻状态的估计值以及当前状态的观测值就可以计算出当前状态的估计值,因此不需要记录观测或者估计的历史信息。

卡尔曼滤波器与大多数滤波器不同之处,在于它是一种纯粹的时域滤波器,它不需要像低通滤波器等频域滤波器那样,需要在频域设计再转换到时域实现。

  经度差=当前经度-目标经度

纬度差=当前纬度-目标纬度

机体横滚方向差=经度差*cos(地磁角)-纬度差*sin(地磁角)

机体俯仰方向差=纬度差*cos(地磁角)+经度差*sin(地磁角)

目标横滚角=p机体横滚方向差+d机体横滚方向差(微分)+i机体横滚方向差(积分)

目标俯仰角=p机体俯仰方向差+d机体俯仰方向差(微分)+i机体俯仰方向差(积分)

机体横滚方向差=经度差*cos(地磁角)-纬度差*sin(地磁角)

机体俯仰方向差=纬度差*cos(地磁角)+经度差*sin(地磁角)

可能有错误的就是这两句里面的正负号,可能是反的

猜你喜欢

转载自blog.csdn.net/prideofme/article/details/52799911
今日推荐