1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
31
32
33
34
35
36
41
42
43
44
45
50
51
52
53
54
55
56
57
58
59
67
68
82
83
84
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
117
118
119
120
121
122
123
124
125
126
127
133
139
145
151
153
154
155
156
157
158
164
169
170
171
172
173
174
175
176
177
178
179
180
181
182
185
186
/* ... */
#include "main.h"
/* ... */
/* ... */
Includes
static JOYState_TypeDef JoyState = JOY_NONE;
static void Joystick_SetHint(void);
void Joystick_SetCursorPosition(void);
Private function prototypes
/* ... */
void Joystick_demo (void)
{
uint8_t status = 0;
Joystick_SetHint();
status = BSP_JOY_Init();
if (status != HAL_OK)
{
BSP_LCD_SetBackColor(LCD_COLOR_WHITE);
BSP_LCD_SetTextColor(LCD_COLOR_RED);
BSP_LCD_DisplayStringAt(0, BSP_LCD_GetYSize()- 70, (uint8_t *)"ERROR", CENTER_MODE);
BSP_LCD_DisplayStringAt(0, BSP_LCD_GetYSize()- 55, (uint8_t *)"Joystick cannot", CENTER_MODE);
BSP_LCD_DisplayStringAt(0, BSP_LCD_GetYSize()- 40, (uint8_t *)"be initialized", CENTER_MODE);
}if (status != HAL_OK) { ... }
while (1)
{
if (status == HAL_OK)
{
JoyState = BSP_JOY_GetState();
Joystick_SetCursorPosition();
}if (status == HAL_OK) { ... }
if(CheckForUserInput() > 0)
{
return;
}if (CheckForUserInput() > 0) { ... }
HAL_Delay(6);
}while (1) { ... }
}{ ... }
/* ... */
static void Joystick_SetHint(void)
{
BSP_LCD_Clear(LCD_COLOR_WHITE);
BSP_LCD_SetTextColor(LCD_COLOR_BLUE);
BSP_LCD_FillRect(0, 0, BSP_LCD_GetXSize(), 40);
BSP_LCD_SetTextColor(LCD_COLOR_WHITE);
BSP_LCD_SetBackColor(LCD_COLOR_BLUE);
BSP_LCD_SetFont(&Font24);
BSP_LCD_SetFont(&Font12);
BSP_LCD_DisplayStringAt(0, 10, (uint8_t *)"Joystick Demo", CENTER_MODE);
BSP_LCD_DisplayStringAt(0, 25, (uint8_t *)"Move the pointer", CENTER_MODE);
BSP_LCD_SetTextColor(LCD_COLOR_BLUE);
BSP_LCD_DrawRect(10, 50, BSP_LCD_GetXSize() - 20, BSP_LCD_GetYSize()- 60);
BSP_LCD_DrawRect(11, 51, BSP_LCD_GetXSize() - 22, BSP_LCD_GetYSize()- 62);
}{ ... }
/* ... */
void Joystick_SetCursorPosition(void)
{
static uint16_t xPtr = 12;
static uint16_t yPtr = 52;
static uint16_t old_xPtr = 12;
static uint16_t old_yPtr = 52;
switch(JoyState)
{
case JOY_UP:
if(yPtr > 52)
{
yPtr--;
}if (yPtr > 52) { ... }
break; case JOY_UP:
case JOY_DOWN:
if(yPtr < (BSP_LCD_GetYSize() - 12 - 11))
{
yPtr++;
}if (yPtr < (BSP_LCD_GetYSize() - 12 - 11)) { ... }
break; case JOY_DOWN:
case JOY_LEFT:
if(xPtr > 12)
{
xPtr--;
}if (xPtr > 12) { ... }
break; case JOY_LEFT:
case JOY_RIGHT:
if(xPtr < (BSP_LCD_GetXSize() - 8 - 11))
{
xPtr++;
}if (xPtr < (BSP_LCD_GetXSize() - 8 - 11)) { ... }
break; case JOY_RIGHT:
default:
break; default
}switch (JoyState) { ... }
BSP_LCD_SetBackColor(LCD_COLOR_WHITE);
BSP_LCD_SetTextColor(LCD_COLOR_BLUE);
if(JoyState == JOY_SEL)
{
BSP_LCD_SetTextColor(LCD_COLOR_RED);
BSP_LCD_DisplayChar(xPtr, yPtr, 'X');
}if (JoyState == JOY_SEL) { ... }
else if(JoyState == JOY_NONE)
{
BSP_LCD_SetTextColor(LCD_COLOR_BLUE);
BSP_LCD_DisplayChar(xPtr, yPtr, 'X');
}else if (JoyState == JOY_NONE) { ... }
else
{
BSP_LCD_SetTextColor(LCD_COLOR_WHITE);
BSP_LCD_DisplayChar(old_xPtr, old_yPtr, 'X');
BSP_LCD_SetTextColor(LCD_COLOR_BLUE);
BSP_LCD_DisplayChar(xPtr, yPtr, 'X');
old_xPtr = xPtr;
old_yPtr = yPtr;
}else { ... }
}{ ... }
/* ... */
/* ... */