1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
26
27
30
31
34
35
38
41
42
45
48
49
52
55
56
57
60
61
62
65
66
67
70
73
74
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
100
101
106
107
108
109
115
120
121
124
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
148
149
155
160
161
167
171
172
177
189
190
193
194
197
198
201
202
/* ... */
#include "stm32f429i_discovery_io.h"
/* ... */
/* ... */
/* ... */
/* ... */
/* ... */
/* ... */
/* ... */
/* ... */
/* ... */
/* ... */
static IO_DrvTypeDef *IoDrv;
/* ... */
/* ... */
/* ... */
/* ... */
/* ... */
uint8_t BSP_IO_Init(void)
{
uint8_t ret = IO_ERROR;
if (stmpe811_io_drv.ReadID(IO_I2C_ADDRESS) == STMPE811_ID)
{
IoDrv = &stmpe811_io_drv;
ret = IO_OK;
}if (stmpe811_io_drv.ReadID(IO_I2C_ADDRESS) == STMPE811_ID) { ... }
if (ret == IO_OK)
{
IoDrv->Init(IO_I2C_ADDRESS);
IoDrv->Start(IO_I2C_ADDRESS, IO_PIN_ALL);
}if (ret == IO_OK) { ... }
return ret;
}{ ... }
/* ... */
uint8_t BSP_IO_ITGetStatus(uint16_t IoPin)
{
return (IoDrv->ITStatus(IO_I2C_ADDRESS, IoPin));
}{ ... }
/* ... */
void BSP_IO_ITClear(void)
{
IoDrv->ClearIT(IO_I2C_ADDRESS, IO_PIN_ALL);
}{ ... }
/* ... */
void BSP_IO_ConfigPin(uint16_t IoPin, IO_ModeTypedef IoMode)
{
IoDrv->Config(IO_I2C_ADDRESS, IoPin, IoMode);
}{ ... }
/* ... */
void BSP_IO_WritePin(uint16_t IoPin, uint8_t PinState)
{
IoDrv->WritePin(IO_I2C_ADDRESS, IoPin, PinState);
}{ ... }
/* ... */
uint16_t BSP_IO_ReadPin(uint16_t IoPin)
{
return (IoDrv->ReadPin(IO_I2C_ADDRESS, IoPin));
}{ ... }
/* ... */
void BSP_IO_TogglePin(uint16_t IoPin)
{
if (IoDrv->ReadPin(IO_I2C_ADDRESS, IoPin) == 1 )
{
IoDrv->WritePin(IO_I2C_ADDRESS, IoPin, 0 );
}if (IoDrv->ReadPin(IO_I2C_ADDRESS, IoPin) == 1 /* Set */) { ... }
else
{
IoDrv->WritePin(IO_I2C_ADDRESS, IoPin, 1 );
}else { ... }
}{ ... }
/* ... */
/* ... */
/* ... */
/* ... */