| BlueNRG-1 Peripherals drivers APIs

- Main Page
- Modules
- Classes
- Files

- File List
- File Members

BlueNRG1_gpio.h
Go to the documentation of this file.
1
23 /* Define to prevent recursive inclusion -------------------------------------*/
24 #ifndef BLUENRG1_GPIO_H
25 #define BLUENRG1_GPIO_H
26
27 #ifdef __cplusplus
28 extern "C" {
29 #endif
30
31 /* Includes ------------------------------------------------------------------*/
32 #include "BlueNRG1.h"
33
50 typedef struct
51 {
52 uint16_t GPIO_Pin;
55 uint8_t GPIO_Mode;
58 FunctionalState GPIO_HighPwr;
61 FunctionalState GPIO_Pull;
63 } GPIO_InitType;
64
65
66
70 typedef struct
71 {
72 uint32_t GPIO_Pin;
75 uint32_t GPIO_IrqSense;
78 uint32_t GPIO_Event;
81 } GPIO_EXTIConfigType;
82
83
87 typedef enum
88 {
89 Bit_RESET = 0,
90 Bit_SET
91 } BitAction;
92
94 #define IS_GPIO_BIT_ACTION(ACTION) (((ACTION) == Bit_RESET) || ((ACTION) == Bit_SET))
95
111 #define GPIO_Input ((uint8_t)0)
112 #define Serial1_Mode ((uint8_t)1)
113 #define Serial0_Mode ((uint8_t)4)
114 #define Microphone_Mode ((uint8_t)5)
115 #define GPIO_Output ((uint8_t)6)
117 /* This macro checks if MODE is a valid mode value for GPIO, please refer to the DATASHEET GPIO mode table */
118 #define IS_GPIO_MODE(MODE) (((MODE) == GPIO_Input) || \
119 ((MODE) == GPIO_Output) || \
120 ((MODE) == Serial1_Mode) || \
121 ((MODE) == Serial0_Mode) || \
122 ((MODE) == Microphone_Mode))
123
133 #define GPIO_Pin_0 ((uint16_t)0x0001)
134 #define GPIO_Pin_1 ((uint16_t)0x0002)
135 #define GPIO_Pin_2 ((uint16_t)0x0004)
136 #define GPIO_Pin_3 ((uint16_t)0x0008)
137 #define GPIO_Pin_4 ((uint16_t)0x0010)
138 #define GPIO_Pin_5 ((uint16_t)0x0020)
139 #define GPIO_Pin_6 ((uint16_t)0x0040)
140 #define GPIO_Pin_7 ((uint16_t)0x0080)
141 #define GPIO_Pin_8 ((uint16_t)0x0100)
142 #define GPIO_Pin_9 ((uint16_t)0x0200)
143 #define GPIO_Pin_10 ((uint16_t)0x0400)
144 #define GPIO_Pin_11 ((uint16_t)0x0800)
145 #define GPIO_Pin_12 ((uint16_t)0x1000)
146 #define GPIO_Pin_13 ((uint16_t)0x2000)
147 #define GPIO_Pin_14 ((uint16_t)0x4000)
148 #define GPIO_Pin_All ((uint16_t)0x7FFF)
150 /* Number of total available GPIO pins */
151 #define GPIO_PIN_COUNT (15)
152
153 #define IS_GPIO_PIN(PIN) (((PIN) == GPIO_Pin_0) || ((PIN) == GPIO_Pin_1) || \
154 ((PIN) == GPIO_Pin_2) || ((PIN) == GPIO_Pin_3) || \
155 ((PIN) == GPIO_Pin_4) || ((PIN) == GPIO_Pin_5) || \
156 ((PIN) == GPIO_Pin_6) || ((PIN) == GPIO_Pin_7) || \
157 ((PIN) == GPIO_Pin_8) || ((PIN) == GPIO_Pin_9) || \
158 ((PIN) == GPIO_Pin_10) || ((PIN) == GPIO_Pin_11) || \
159 ((PIN) == GPIO_Pin_12) || ((PIN) == GPIO_Pin_13) || \
160 ((PIN) == GPIO_Pin_14))
161
162
163 /* This macro checks if PIN is a valid pin combination value */
164 #define IS_GPIO_PINS(PIN) ((PIN & GPIO_Pin_All) != 0)
165
166
176 #define GPIO_IrqSense_Edge (0)
177 #define GPIO_IrqSense_Level (1)
180 #define IS_GPIO_IRQSENSE(IS) (((IS) == GPIO_IrqSense_Edge) || ((IS) == GPIO_IrqSense_Level))
181
190 #define GPIO_Event_Low (0)
191 #define GPIO_Event_High (1)
192 #define GPIO_Event_Both (2)
195 #define IS_GPIO_EVENT(EV) (((EV) == GPIO_Event_Low) || \
196 ((EV) == GPIO_Event_High) || \
197 ((EV) == GPIO_Event_Both))
198
211 /*
212 * GPIO Configuration
213 */
214
215 /* GPIO Input Signal */
216 #define GPIO_InitInputPinx(PIN_NAME) GPIO_Init(&(GPIO_InitType){PIN_NAME, GPIO_Input, DISABLE, DISABLE});
217
218 /* GPIO Output Signal */
219 #define GPIO_InitOutputPinx(PIN_NAME) GPIO_Init(&(GPIO_InitType){PIN_NAME, GPIO_Output, DISABLE, DISABLE});
220
221
222 /*
223 * UART Port Configuration
224 */
225
226 /* UART RX Signal */
227 #define GPIO_InitUartRxPin4() GPIO_Init(&(GPIO_InitType){GPIO_Pin_4, Serial1_Mode, DISABLE, DISABLE});
228 #define GPIO_InitUartRxPin11() GPIO_Init(&(GPIO_InitType){GPIO_Pin_11, Serial1_Mode, DISABLE, DISABLE});
229
230 /* UART TX Signal */
231 #define GPIO_InitUartTxPin5() GPIO_Init(&(GPIO_InitType){GPIO_Pin_5, Serial1_Mode, DISABLE, DISABLE});
232 #define GPIO_InitUartTxPin8() GPIO_Init(&(GPIO_InitType){GPIO_Pin_8, Serial1_Mode, DISABLE, DISABLE});
233
234 /* UART CTS Signal */
235 #define GPIO_InitUartCtsPin0() GPIO_Init(&(GPIO_InitType){GPIO_Pin_0, Serial1_Mode, DISABLE, DISABLE});
236 #define GPIO_InitUartCtsPin7() GPIO_Init(&(GPIO_InitType){GPIO_Pin_7, Serial1_Mode, DISABLE, DISABLE});
237 #define GPIO_InitUartCtsPin13() GPIO_Init(&(GPIO_InitType){GPIO_Pin_13, Serial1_Mode, DISABLE, DISABLE});
238
239 /* UART RTS Signal */
240 #define GPIO_InitUartRtsPin1() GPIO_Init(&(GPIO_InitType){GPIO_Pin_1, Serial1_Mode, DISABLE, DISABLE});
241 #define GPIO_InitUartRtsPin6() GPIO_Init(&(GPIO_InitType){GPIO_Pin_6, Serial1_Mode, DISABLE, DISABLE});
242
243
244 /*
245 * SPI Port Configuration
246 */
247
248 /* SPI Clock Signal */
249 #define GPIO_InitSpiClkPin0() GPIO_Init(&(GPIO_InitType){GPIO_Pin_0, Serial0_Mode, DISABLE, DISABLE});
250 #define GPIO_InitSpiClkPin8() GPIO_Init(&(GPIO_InitType){GPIO_Pin_8, Serial0_Mode, DISABLE, DISABLE});
251 #define GPIO_InitSpiClkPin14() GPIO_Init(&(GPIO_InitType){GPIO_Pin_14, Serial0_Mode, DISABLE, DISABLE});
252
253 /* SPI CS Signal */
254 #define GPIO_InitSpiCsPin1() GPIO_Init(&(GPIO_InitType){GPIO_Pin_1, Serial0_Mode, DISABLE, DISABLE});
255 #define GPIO_InitSpiCsPin11() GPIO_Init(&(GPIO_InitType){GPIO_Pin_11, Serial0_Mode, DISABLE, DISABLE});
256
257 /* SPI MOSI Signal */
258 #define GPIO_InitSpiMosiPin2() GPIO_Init(&(GPIO_InitType){GPIO_Pin_2, Serial0_Mode, DISABLE, DISABLE});
259 #define GPIO_InitSpiMosiPin10() GPIO_Init(&(GPIO_InitType){GPIO_Pin_10, Serial0_Mode, DISABLE, DISABLE});
260
261 /* SPI MISO Signal */
262 #define GPIO_InitSpiMisoPin9() GPIO_Init(&(GPIO_InitType){GPIO_Pin_9, Serial0_Mode, DISABLE, DISABLE});
263 #define GPIO_InitSpiMisoPin3() GPIO_Init(&(GPIO_InitType){GPIO_Pin_3, Serial0_Mode, DISABLE, DISABLE});
264
265
266 /*
267 * I2C1 Port Configuration
268 */
269
270 /* I2C1 Clock Signal */
271 #define GPIO_InitI2c1ClkPin12() GPIO_Init(&(GPIO_InitType){GPIO_Pin_12, Serial0_Mode, DISABLE, DISABLE});
272
273 /* I2C1 Data Signal */
274 #define GPIO_InitI2c1DataPin13() GPIO_Init(&(GPIO_InitType){GPIO_Pin_13, Serial0_Mode, DISABLE, DISABLE});
275 #define GPIO_InitI2c1ClkPin14() GPIO_Init(&(GPIO_InitType){GPIO_Pin_14, Serial1_Mode, DISABLE, DISABLE});
276
277
278 /*
279 * I2C2 Port Configuration
280 */
281
282 /* I2C2 Clock Signal */
283 #define GPIO_InitI2c2ClkPin4() GPIO_Init(&(GPIO_InitType){GPIO_Pin_4, Serial0_Mode, DISABLE, DISABLE});
284 #define GPIO_InitI2c2ClkPin6() GPIO_Init(&(GPIO_InitType){GPIO_Pin_6, Serial0_Mode, DISABLE, DISABLE});
285
286 /* I2C2 Data Signal */
287 #define GPIO_InitI2c2DataPin5() GPIO_Init(&(GPIO_InitType){GPIO_Pin_5, Serial0_Mode, DISABLE, DISABLE});
288 #define GPIO_InitI2c2DataPin7() GPIO_Init(&(GPIO_InitType){GPIO_Pin_7, Serial0_Mode, DISABLE, DISABLE});
289
290
291 /*
292 * PWM Configuration
293 */
294
295 /* PWM0 Signal */
296 #define GPIO_InitPwm0Pin2() GPIO_Init(&(GPIO_InitType){GPIO_Pin_2, Serial1_Mode, DISABLE, DISABLE});
297 #define GPIO_InitPwm0Pin4() GPIO_Init(&(GPIO_InitType){GPIO_Pin_4, Microphone_Mode, DISABLE, DISABLE});
298
299 /* PWM1 Signal */
300 #define GPIO_InitPwm1Pin3() GPIO_Init(&(GPIO_InitType){GPIO_Pin_3, Serial1_Mode, DISABLE, DISABLE});
301 #define GPIO_InitPwm1Pin5() GPIO_Init(&(GPIO_InitType){GPIO_Pin_5, Microphone_Mode, DISABLE, DISABLE});
302
303
304 /*
305 * PDM Configuration
306 */
307
308 /* PDM Data Signal */
309 #define GPIO_InitPdmDataPin1() GPIO_Init(&(GPIO_InitType){GPIO_Pin_1, Microphone_Mode, DISABLE, DISABLE});
310 #define GPIO_InitPdmDataPin6() GPIO_Init(&(GPIO_InitType){GPIO_Pin_6, Microphone_Mode, DISABLE, DISABLE});
311 #define GPIO_InitPdmDataPin8() GPIO_Init(&(GPIO_InitType){GPIO_Pin_8, Microphone_Mode, DISABLE, DISABLE});
312 #define GPIO_InitPdmDataPin14() GPIO_Init(&(GPIO_InitType){GPIO_Pin_14, Microphone_Mode, DISABLE, DISABLE});
313
314 /* PDM Clock Signal */
315 #define GPIO_InitPdmClockPin2() GPIO_Init(&(GPIO_InitType){GPIO_Pin_2, Microphone_Mode, DISABLE, DISABLE});
316 #define GPIO_InitPdmClockPin3() GPIO_Init(&(GPIO_InitType){GPIO_Pin_3, Microphone_Mode, DISABLE, DISABLE});
317 #define GPIO_InitPdmClockPin7() GPIO_Init(&(GPIO_InitType){GPIO_Pin_7, Microphone_Mode, DISABLE, DISABLE});
318
319
329 /* Initialization */
330 void GPIO_DeInit(void);
331 void GPIO_Init(GPIO_InitType* GPIO_InitStruct);
332 void GPIO_StructInit(GPIO_InitType* GPIO_InitStruct);
334 /* Data read */
335 BitAction GPIO_ReadBit(uint16_t GPIO_Pins);
337 /* Data write */
338 void GPIO_WriteBit(uint16_t GPIO_Pins, BitAction BitVal);
340 /* Bit operations */
341 void GPIO_SetBits(uint16_t GPIO_Pins);
342 void GPIO_ResetBits(uint16_t GPIO_Pins);
343 void GPIO_ToggleBits(uint16_t GPIO_Pins);
345 /* GPIO interrupts */
346 void GPIO_EXTIStructInit(GPIO_EXTIConfigType* GPIO_EXTIInitStruct);
347 void GPIO_EXTIConfig(GPIO_EXTIConfigType* EXTIConfig);
348 void GPIO_EXTICmd(uint16_t GPIO_Pins, FunctionalState NewState);
349 void GPIO_ClearITPendingBit(uint16_t GPIO_Pins);
350 FlagStatus GPIO_GetITPendingBit(uint16_t GPIO_Pin);
365 #ifdef __cplusplus
366 }
367 #endif
368
369 #endif /* BLUENRG1_GPIO_H */
370
371 /******************* (C) COPYRIGHT 2016 STMicroelectronics *****END OF FILE****/
Bit_RESET
Definition: BlueNRG1_gpio.h:89
GPIO_EXTIConfigType
Structure definition of GPIO EXTernal Interrupt initialization.
Definition: BlueNRG1_gpio.h:70
GPIO_EXTIStructInit
void GPIO_EXTIStructInit(GPIO_EXTIConfigType *GPIO_EXTIInitStruct)
Fills each GPIO_EXTIStruct member with its default value.
Definition: BlueNRG1_gpio.c:274
GPIO_InitType::GPIO_HighPwr
FunctionalState GPIO_HighPwr
Definition: BlueNRG1_gpio.h:58
GPIO_WriteBit
void GPIO_WriteBit(uint16_t GPIO_Pins, BitAction BitVal)
Sets or clears the selected IO pin bit.
Definition: BlueNRG1_gpio.c:240
GPIO_EXTICmd
void GPIO_EXTICmd(uint16_t GPIO_Pins, FunctionalState NewState)
Enables or disables interrupts on specified pins.
Definition: BlueNRG1_gpio.c:333
GPIO_Init
void GPIO_Init(GPIO_InitType *GPIO_InitStruct)
Initializes the GPIO peripheral according to the specified parameters in the GPIO_InitStruct.
Definition: BlueNRG1_gpio.c:116
GPIO_EXTIConfigType::GPIO_Event
uint32_t GPIO_Event
Definition: BlueNRG1_gpio.h:78
GPIO_InitType
Structure definition of GPIO initialization.
Definition: BlueNRG1_gpio.h:50
GPIO_SetBits
void GPIO_SetBits(uint16_t GPIO_Pins)
Sets the selected IO pin bit.
Definition: BlueNRG1_gpio.c:208
GPIO_InitType::GPIO_Mode
uint8_t GPIO_Mode
Definition: BlueNRG1_gpio.h:55
GPIO_InitType::GPIO_Pin
uint16_t GPIO_Pin
Definition: BlueNRG1_gpio.h:52
GPIO_ToggleBits
void GPIO_ToggleBits(uint16_t GPIO_Pins)
Toggles data to the specified IO pin.
Definition: BlueNRG1_gpio.c:261
GPIO_ClearITPendingBit
void GPIO_ClearITPendingBit(uint16_t GPIO_Pins)
Clears the GPIO interrupt pending bits.
Definition: BlueNRG1_gpio.c:353
GPIO_GetITPendingBit
FlagStatus GPIO_GetITPendingBit(uint16_t GPIO_Pin)
Checks whether the specified enabled GPIO interrupt is active.
Definition: BlueNRG1_gpio.c:369
BitAction
BitAction
Bit_SET and Bit_RESET enumeration.
Definition: BlueNRG1_gpio.h:87
GPIO_EXTIConfigType::GPIO_Pin
uint32_t GPIO_Pin
Definition: BlueNRG1_gpio.h:72
GPIO_ResetBits
void GPIO_ResetBits(uint16_t GPIO_Pins)
Clears the selected IO pin bits.
Definition: BlueNRG1_gpio.c:223
Bit_SET
Definition: BlueNRG1_gpio.h:90
GPIO_StructInit
void GPIO_StructInit(GPIO_InitType *GPIO_InitStruct)
Fills the GPIO_InitStruct member with its default value.
Definition: BlueNRG1_gpio.c:172
GPIO_EXTIConfig
void GPIO_EXTIConfig(GPIO_EXTIConfigType *EXTIConfig)
Selects the GPIO pins used as EXTI Line.
Definition: BlueNRG1_gpio.c:289
GPIO_InitType::GPIO_Pull
FunctionalState GPIO_Pull
Definition: BlueNRG1_gpio.h:61
GPIO_EXTIConfigType::GPIO_IrqSense
uint32_t GPIO_IrqSense
Definition: BlueNRG1_gpio.h:75
GPIO_ReadBit
BitAction GPIO_ReadBit(uint16_t GPIO_Pins)
Reads the specified input pin value.
Definition: BlueNRG1_gpio.c:187
GPIO_DeInit
void GPIO_DeInit(void)
Deinitializes the GPIO peripheral registers to their default reset values.
Definition: BlueNRG1_gpio.c:92