📄 float_main.c
字号:
//**********************************************************************
//功能 : 浮点滤波程序
//作者 : lihj
//创建日期 : 2004-06-13
//版本 : V1.0
//修改记录 :
//***********************************************************************
#include "math.h"
//系统参数配置
#define TS 5 //信号采样周期定义,单位是100ms
#define TF 20 //滤波时间常数定义,单位是100ms
//全局变量定义
float g_fPreInput; //上一周期的采样值
float g_fQ; //滤波因子
//内部函数声明
float Filter(float); //滤波函数
//外部函数声明
float Sample(void); //信号采样接口函数
void HardIni(void); //硬件初始化接口
//主循环
void main(void)
{
float CurSigVal; //当前信号值
int i;
//硬件初始化
HardIni();
//全局变量初始化
g_fPreInput = 0;
g_fQ = (float)TS/(TF+TS);
while(1)
{
CurSigVal = Filter(Sample()); //采样并滤波
for(i=0;i<20000;i++); //待机一段时间后,开始下一循环
}
}
//一阶惯性滤波
//滤波耗时:
float Filter(float CurInput)
{
float t;
//如果信号没有改变,则直接返回
if(g_fPreInput == CurInput)
{
return CurInput; //信号没有改变直接返回
}
//滤波精度处理
if(CurInput < 0.000001)
{
CurInput = 0;
}
//已经逼进最终值时的处理
if(fabs(CurInput - g_fPreInput) < 0.000001)
{
g_fPreInput = CurInput;
return(CurInput);
}
//滤波
t = g_fPreInput + (CurInput- g_fPreInput )*g_fQ;
g_fPreInput = t; //保存本周期的计算值
return t;
}
//硬件初始化接口
void HardIni(void)
{
}
//信号采样接口
float Sample(void)
{
return 1.0;
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -