⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 float_main.c

📁 本文件提供各种驱动程序和汇编代码,包括温度芯片驱动等等.
💻 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 + -