1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
30
31
32
33
40
44
45
46
52
67
68
73
74
75
76
77
78
79
80
81
82
83
84
103
122
123
124
125
126
127
128
129
136
137
138
139
144
145
146
150
151
152
157
158
159
160
161
162
163
164
169
170
171
172
173
174
175
176
195
215
216
217
218
219
220
221
222
225
226
/* ... */
#include "mems.h"
/* ... */
/* ... */
Includes
extern __IO uint8_t UserPressButton;
int16_t ThresholdHigh = 1000;
int16_t ThresholdLow = -1000;
Private variables
static void ACCELERO_ReadAcc(void);
static void GYRO_ReadAng(void);
Private function prototypes
/* ... */
void ACCELERO_MEMS_Test(void)
{
if(BSP_ACCELERO_Init() != HAL_OK)
{
Error_Handler();
}if (BSP_ACCELERO_Init() != HAL_OK) { ... }
UserPressButton = 0;
while(!UserPressButton)
{
ACCELERO_ReadAcc();
}while (!UserPressButton) { ... }
}{ ... }
/* ... */
static void ACCELERO_ReadAcc(void)
{
int16_t buffer[3] = {0};
int16_t xval, yval = 0x00;
BSP_ACCELERO_GetXYZ(buffer);
xval = buffer[0];
yval = buffer[1];
if((ABS(xval))>(ABS(yval)))
{
if(xval > ThresholdHigh)
{
BSP_LED_On(LED5);
HAL_Delay(10);
}if (xval > ThresholdHigh) { ... }
else if(xval < ThresholdLow)
{
BSP_LED_On(LED4);
HAL_Delay(10);
}else if (xval < ThresholdLow) { ... }
else
{
HAL_Delay(10);
}else { ... }
}if ((ABS(xval))>(ABS(yval))) { ... }
else
{
if(yval < ThresholdLow)
{
BSP_LED_On(LED6);
HAL_Delay(10);
}if (yval < ThresholdLow) { ... }
else if(yval > ThresholdHigh)
{
BSP_LED_On(LED3);
HAL_Delay(10);
}else if (yval > ThresholdHigh) { ... }
else
{
HAL_Delay(10);
}else { ... }
}else { ... }
BSP_LED_Off(LED3);
BSP_LED_Off(LED4);
BSP_LED_Off(LED5);
BSP_LED_Off(LED6);
}{ ... }
/* ... */
void GYRO_MEMS_Test(void)
{
if(BSP_ACCELERO_Init() != HAL_OK)
{
Error_Handler();
}if (BSP_ACCELERO_Init() != HAL_OK) { ... }
UserPressButton = 0;
while(!UserPressButton)
{
GYRO_ReadAng();
}while (!UserPressButton) { ... }
}{ ... }
/* ... */
static void GYRO_ReadAng(void)
{
float Buffer[3];
float Xval, Yval = 0x00;
if(BSP_GYRO_Init() != HAL_OK)
{
Error_Handler();
}if (BSP_GYRO_Init() != HAL_OK) { ... }
BSP_GYRO_GetXYZ(Buffer);
Xval = ABS((Buffer[0]));
Yval = ABS((Buffer[1]));
if(Xval>Yval)
{
if(Buffer[0] > 5000.0f)
{
BSP_LED_On(LED5);
HAL_Delay(10);
}if (Buffer[0] > 5000.0f) { ... }
else if(Buffer[0] < -5000.0f)
{
BSP_LED_On(LED4);
HAL_Delay(10);
}else if (Buffer[0] < -5000.0f) { ... }
else
{
HAL_Delay(10);
}else { ... }
}if (Xval>Yval) { ... }
else
{
if(Buffer[1] < -5000.0f)
{
BSP_LED_On(LED6);
HAL_Delay(10);
}if (Buffer[1] < -5000.0f) { ... }
else if(Buffer[1] > 5000.0f)
{
BSP_LED_On(LED3);
HAL_Delay(10);
}else if (Buffer[1] > 5000.0f) { ... }
else
{
HAL_Delay(10);
}else { ... }
}else { ... }
BSP_LED_Off(LED3);
BSP_LED_Off(LED4);
BSP_LED_Off(LED5);
BSP_LED_Off(LED6);
}{ ... }
/* ... */
/* ... */