BasicMath.c
2.17 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
#include "includes.h"
#include "hardware.h"
#include "all_value.h"
void VaIndexB_W(u8 * VA,u8 Index,u8 TF)//单字节置位函数
{
if (TF){*VA|=(1<<Index);} else{*VA&=~(1<<Index);}
}
u8 VaIndexB_R(u8 * VA,u8 Index)//单字节读取某位函数
{
return (*VA>>Index)&0x01;
}
void VaIndexDW_W(int * VA,u8 Index,u8 TF)//4字节置位函数
{
if (TF){*VA|=(1<<Index);} else{*VA&=~(1<<Index);}
}
u8 VaIndexDW_R(int * VA,u8 Index)//4字节读取某位函数
{
return (*VA>>Index)&0x01;
}
u8 Sum_Crc(u8*Addr,u8 Leng,u8 SumInit)//求数组和
{
u8 i;
u8 Sum;
Sum=SumInit;
for(i=0;i<Leng;i++)Sum+=Addr[i];
return Sum;
}
u8 XOR_Crc(u8*Buffer,u8 Leng,u8 CrcInit)//数据异或
{
u8 Crc=0;
u8 i;
Crc=CrcInit;
for(i=0;i<Leng;i++)
{
Crc^=Buffer[i];
}
return Crc;
}
u8 NOT(u8 Va)//0-1取反函数
{
if (Va)return 0;
else return 1;
}
u8 UnSame_Campare(u8*Buf1,u8*Buf2,u8 Leng)//比较是否有不相同,有返回1
{
u8 i;
u8 End=0;
for(i=0;i<Leng;i++)
{
if( (*(Buf1+i)) != (*(Buf2+i)) )//
{ End=1;
break;
}
}
return End;
}
void AngDeal(float*Ang)//角度过滤处理
{
if( (*Ang)>=360)*Ang-=360.0f;
else if( (*Ang)<0)*Ang+=360.0f;
}
/*********************************************************************************
函数名:Flash
功能:闪烁
参数:
返回:0/1。
实现方法:
编程:pcy
日期:2021-12-07
*********************************************************************************/
u8 TIM4_Flash1Nums;//同周期性闪烁定时变量
u8 TIM4_Flash2Nums;//闪烁几次定时计时变量
u8 TIM4_Flash3Nums;
u8 TIM4_Flash4Nums;
u8 Out_Flash3=0;//快闪烁
u8 Out_Flash4=0;//慢闪烁
u8 Flash(u8 Tms)//同周期性闪烁
{
static u8 Q=0;
if (TIM4_Flash1Nums>=Tms){Q=~Q;TIM4_Flash1Nums=0;}
if (TIM4_Flash3Nums>=35){Out_Flash3=~Out_Flash3;TIM4_Flash3Nums=0;}
if (TIM4_Flash4Nums>=80){Out_Flash4=~Out_Flash4;TIM4_Flash4Nums=0;}
return Q;
}
u8 Flash2(u8 ClkNums,u8 Tms)//闪烁函数2
{
static u8 Q=0;
static u8 WaitEn=0;
static u8 Qold=0;
static u8 TNums=0;
if (TIM4_Flash2Nums>=Tms&&WaitEn==0){Q=~Q;TIM4_Flash2Nums=0;}
if (ClkNums>0)
{ if (Q<Qold){TNums++;}
Qold=Q;
if (TNums>=ClkNums){TNums=0;WaitEn=1;Q=0;}
if (TIM4_Flash2Nums>=150&&WaitEn==1){WaitEn=0;Q=0;TIM4_Flash2Nums=0;}
}
else{WaitEn=0;TNums=0;Qold=0;}
return Q;
}