MF32BSP_XerolySkinner 2.0.0
C++版本的驱动库
载入中...
搜索中...
未找到
bsp_Calculus.cpp
浏览该文件的文档.
1/*----------------------------------------------------------------------------------------------------
2 #
3 # Copyright (c) 2022 Yuankang Liang(XerolySkinner)
4 #
5 # 本软件按原样提供,无任何明示或暗示
6 # 在任何情况下,作者都不承担任何损害赔偿责任
7 #
8 # 使用的许可声明:
9 # 1. 不得歪曲本软件的来源,你不能声称你编写了原始软件.
10 # 2. 免费授予以任何目的,前提是版权声明出现在所有副本中.
11 # 并且版权声明和许可声明同时出现.
12 # 3. 你有使用,复制,修改,分发,和销售本软件的许可.
13 # 4. 如果你在产品中使用,产品文档中的声明是赞赏的但不是必须的.
14 # 5. 本通知不得从任何来源删除或更改.
15 #
16 # Yuankang Liang(XerolySkinner)
17 # E-mail:zabbcccbbaz@163.com
18 # QQ:2715099320
19 # Mobile Phone:13005636215
20 #
21 # All rights reserved.
22 */
23
35//----------------------------------------------------------------------------------------------------
36// 头文件
37#include "bsp_Calculus.h"
39//----------------------------------------------------------------------------------------------------
40// 类函数
47 static float old=var;
48 float result= (var - old) / dt;
49 old = var;
50 return result;}
52//----------------------------------------------------------------------------------------------------
53// 类函数
59float bsp_Integral::Integral(float var) {
60 results += var * dt;
61 return results;}
62//----------------------------------------------------------------------------------------------------
67void bsp_Integral::Integral_set(float results) {
69//----------------------------------------------------------------------------------------------------
76 result_list = (float*)malloc(sizeof(float)* len);
77 result_len = len;
79 return (u32)result_list;}
80//----------------------------------------------------------------------------------------------------
87 static u32 len=0;
88 results += var * dt;
89 // 保存历史
90 result_list[len] = var * dt;
91 // 轮盘转
92 ++len;
93 if (len == result_len)len = 0;
94 // 去除尾值
95 if (len < result_len - 1)
96 results -= result_list[len + 1];
97 else
98 results -= result_list[0];
99 //
100 return results;}
101//----------------------------------------------------------------------------------------------------
106 free(result_list);
107 result_len = 0;
108 result_list = NULL;}
109//----------------------------------------------------------------------------------------------------
114 if (result_list == NULL)return;
115 for (u32 i = 0; i < result_len; i++)
116 result_list[i] = 0;}
离散微积分
float Differential(float var)
对数据微分
float dt
时间参数
Definition: bsp_Calculus.h:50
float dt
时间参数
Definition: bsp_Calculus.h:80
void Integral_dellist(void)
删除并释放历史缓冲区
float * result_list
数据历史
Definition: bsp_Calculus.h:77
u32 result_len
历史缓冲区长度
Definition: bsp_Calculus.h:78
float Integral_list(float var)
进行带有缓冲区的积分
u32 Integral_makelist(u32 len)
赋予历史缓存长度
float results
积分缓存
Definition: bsp_Calculus.h:79
void Integral_clslist(void)
清空历史缓存区
void Integral_set(float results)
重设当前积分值
float Integral(float var)
对数据积分
uint32_t u32
32位无符号数类型
Definition: varint.h:42