| BlueNRG-1 Peripherals drivers APIs

- Main Page
- Modules
- Classes
- Files

- File List
- File Members

BlueNRG1_gpio.c
Go to the documentation of this file.
1
22 /* Includes ------------------------------------------------------------------*/
23 #include "BlueNRG1_gpio.h"
24
92 void GPIO_DeInit(void)
93 {
94 /* Set all GPIO registers to default/reset configuration */
95 GPIO->OEN = 0x00000000;
96 GPIO->PE = 0x03FFFFFF;
97 GPIO->DS = 0x00000000;
98 GPIO->IS = 0x00000000;
99 GPIO->IBE = 0x00000000;
100 GPIO->IEV = 0x00000000;
101 GPIO->IE = 0x00000000;
102 GPIO->IC = 0xFFFFFFFF;
103 GPIO->MODE0 = 0x00000000;
104 GPIO->MODE1 = 0x00000110;
105 GPIO->MFTX = 0x00000000;
106 }
107
108
116 void GPIO_Init(GPIO_InitType* GPIO_InitStruct)
117 {
118 uint8_t tmp;
119
120 /* Check the parameters */
121 assert_param(IS_GPIO_PINS(GPIO_InitStruct->GPIO_Pin));
122 assert_param(IS_GPIO_MODE(GPIO_InitStruct->GPIO_Mode));
123 assert_param(IS_FUNCTIONAL_STATE(GPIO_InitStruct->GPIO_Pull));
124 assert_param(IS_FUNCTIONAL_STATE(GPIO_InitStruct->GPIO_HighPwr));
125
126 /* Configure the IO mode */
127 if(GPIO_InitStruct->GPIO_Mode == GPIO_Input) {
128 CLEAR_BIT(GPIO->OEN, GPIO_InitStruct->GPIO_Pin);
129 }
130 else if(GPIO_InitStruct->GPIO_Mode == GPIO_Output) {
131 GPIO_InitStruct->GPIO_Mode = GPIO_Input;
132 SET_BIT(GPIO->OEN, GPIO_InitStruct->GPIO_Pin);
133 }
134
135 for(uint8_t i = 0; i < GPIO_PIN_COUNT; i++) {
136 tmp = (uint8_t)((GPIO_InitStruct->GPIO_Pin>>i) & 0x01);
137 if(tmp!=0) {
138
139 if(i < 8) {
140 MODIFY_REG(GPIO->MODE0, (0xF<<(i*4)), (GPIO_InitStruct->GPIO_Mode << (i*4)) );
141 }
142 else if(i < 16) {
143 MODIFY_REG(GPIO->MODE1, (0xF<<((i-8)*4)), (GPIO_InitStruct->GPIO_Mode << ((i-8)*4)) );
144 }
145 }
146 }
147
148 /* Set the current mode */
149 if(GPIO_InitStruct->GPIO_HighPwr == ENABLE) {
150 SET_BIT(GPIO->DS, GPIO_InitStruct->GPIO_Pin);
151 }
152 else {
153 CLEAR_BIT(GPIO->DS, GPIO_InitStruct->GPIO_Pin);
154 }
155
156 /* Set the pull on IO */
157 if(GPIO_InitStruct->GPIO_Pull == ENABLE) {
158 SET_BIT(GPIO->PE, GPIO_InitStruct->GPIO_Pin);
159 }
160 else {
161 CLEAR_BIT(GPIO->PE, GPIO_InitStruct->GPIO_Pin);
162 }
163
164 }
165
172 void GPIO_StructInit(GPIO_InitType* GPIO_InitStruct)
173 {
174 /* Reset GPIO init structure parameters values */
175 GPIO_InitStruct->GPIO_Pin = 0x0000;
176 GPIO_InitStruct->GPIO_Mode = GPIO_Input;
177 GPIO_InitStruct->GPIO_Pull = DISABLE;
178 GPIO_InitStruct->GPIO_HighPwr = DISABLE;
179 }
180
187 BitAction GPIO_ReadBit(uint16_t GPIO_Pins)
188 {
189 /* Check the parameters */
190 assert_param(IS_GPIO_PIN(GPIO_Pins));
191
192 if(READ_BIT(GPIO->DATA, GPIO_Pins)) {
193 return Bit_SET;
194 }
195 else {
196 return Bit_RESET;
197 }
198 }
199
200
208 void GPIO_SetBits(uint16_t GPIO_Pins)
209 {
210 /* Check the parameters */
211 assert_param(IS_GPIO_PINS(GPIO_Pins));
212
213 WRITE_REG(GPIO->DATS, GPIO_Pins);
214 }
215
223 void GPIO_ResetBits(uint16_t GPIO_Pins)
224 {
225 /* Check the parameters */
226 assert_param(IS_GPIO_PINS(GPIO_Pins));
227
228 WRITE_REG(GPIO->DATC, GPIO_Pins);
229 }
230
240 void GPIO_WriteBit(uint16_t GPIO_Pins, BitAction BitVal)
241 {
242 /* Check the parameters */
243 assert_param(IS_GPIO_PINS(GPIO_Pins));
244 assert_param(IS_GPIO_BIT_ACTION(BitVal));
245
246 if (BitVal == Bit_SET) {
247 WRITE_REG(GPIO->DATS, GPIO_Pins);
248 }
249 else {
250 WRITE_REG(GPIO->DATC, GPIO_Pins);
251 }
252 }
253
261 void GPIO_ToggleBits(uint16_t GPIO_Pins)
262 {
263 /* Check the parameters */
264 assert_param(IS_GPIO_PINS(GPIO_Pins));
265
266 GPIO->DATA ^= GPIO_Pins;
267 }
268
274 void GPIO_EXTIStructInit(GPIO_EXTIConfigType* GPIO_EXTIInitStruct)
275 {
276 /* Reset GPIO init structure parameters values */
277 GPIO_EXTIInitStruct->GPIO_Pin = 0x0000;
278 GPIO_EXTIInitStruct->GPIO_IrqSense = GPIO_IrqSense_Edge;
279 GPIO_EXTIInitStruct->GPIO_Event = GPIO_Event_Low;
280 }
281
282
289 void GPIO_EXTIConfig(GPIO_EXTIConfigType* EXTIConfig)
290 {
291 /* Check the parameters */
292 assert_param(IS_GPIO_PINS(EXTIConfig->GPIO_Pin));
293 assert_param(IS_GPIO_IRQSENSE(EXTIConfig->GPIO_IrqSense));
294 assert_param(IS_GPIO_EVENT(EXTIConfig->GPIO_Event));
295
296 /* Interrupt sense configuration */
297 if (EXTIConfig->GPIO_IrqSense == GPIO_IrqSense_Level) {
298 /* Configure level detection */
299 SET_BIT(GPIO->IS, EXTIConfig->GPIO_Pin);
300 }
301 else {
302 /* Configure edge detection */
303 CLEAR_BIT(GPIO->IS, EXTIConfig->GPIO_Pin);
304 }
305
306 /* Configure event */
307 if (EXTIConfig->GPIO_Event == GPIO_Event_High) {
308 /* Configure interrupt on high level or rising edge event */
309 SET_BIT(GPIO->IEV, EXTIConfig->GPIO_Pin);
310 CLEAR_BIT(GPIO->IBE, EXTIConfig->GPIO_Pin);
311 }
312 else if (EXTIConfig->GPIO_Event == GPIO_Event_Low) {
313 /* Configure interrupt on low level or falling edge event */
314 CLEAR_BIT(GPIO->IEV, EXTIConfig->GPIO_Pin);
315 CLEAR_BIT(GPIO->IBE, EXTIConfig->GPIO_Pin);
316 }
317 else {
318 /* Configure interrupt on both edge */
319 SET_BIT(GPIO->IBE, EXTIConfig->GPIO_Pin);
320 }
321
322 }
323
333 void GPIO_EXTICmd(uint16_t GPIO_Pins, FunctionalState NewState)
334 {
335 /* Check the parameters */
336 assert_param(IS_GPIO_PINS(GPIO_Pins));
337
338 if (NewState != DISABLE) {
339 SET_BIT(GPIO->IE, GPIO_Pins);
340 }
341 else {
342 CLEAR_BIT(GPIO->IE, GPIO_Pins);
343 }
344 }
345
353 void GPIO_ClearITPendingBit(uint16_t GPIO_Pins)
354 {
355 /* Check the parameters */
356 assert_param(IS_GPIO_PINS(GPIO_Pins));
357
358 SET_BIT(GPIO->IC, GPIO_Pins);
359 }
360
361
369 FlagStatus GPIO_GetITPendingBit(uint16_t GPIO_Pin)
370 {
371 /* Check the parameters */
372 assert_param(IS_GPIO_PIN(GPIO_Pin));
373
374 if(READ_BIT(GPIO->MIS, GPIO_Pin) != (uint32_t)RESET) {
375 return SET;
376 }
377 else {
378 return RESET;
379 }
380 }
381
382
399 /******************* (C) COPYRIGHT 2016 STMicroelectronics *****END OF FILE****/
GPIO_SetBits
void GPIO_SetBits(uint16_t GPIO_Pins)
Sets the selected IO pin bit.
Definition: BlueNRG1_gpio.c:208
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_EXTIConfig
void GPIO_EXTIConfig(GPIO_EXTIConfigType *EXTIConfig)
Selects the GPIO pins used as EXTI Line.
Definition: BlueNRG1_gpio.c:289
IS_GPIO_PIN
#define IS_GPIO_PIN(PIN)
Definition: BlueNRG1_gpio.h:153
Bit_RESET
Definition: BlueNRG1_gpio.h:89
GPIO_EXTIConfigType
Structure definition of GPIO EXTernal Interrupt initialization.
Definition: BlueNRG1_gpio.h:70
GPIO_EXTICmd
void GPIO_EXTICmd(uint16_t GPIO_Pins, FunctionalState NewState)
Enables or disables interrupts on specified pins.
Definition: BlueNRG1_gpio.c:333
IS_GPIO_BIT_ACTION
#define IS_GPIO_BIT_ACTION(ACTION)
Definition: BlueNRG1_gpio.h:94
GPIO_InitType::GPIO_HighPwr
FunctionalState GPIO_HighPwr
Definition: BlueNRG1_gpio.h:58
GPIO_PIN_COUNT
#define GPIO_PIN_COUNT
Definition: BlueNRG1_gpio.h:151
IS_GPIO_MODE
#define IS_GPIO_MODE(MODE)
Definition: BlueNRG1_gpio.h:118
GPIO_ClearITPendingBit
void GPIO_ClearITPendingBit(uint16_t GPIO_Pins)
Clears the GPIO interrupt pending bits.
Definition: BlueNRG1_gpio.c:353
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_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_Input
#define GPIO_Input
Definition: BlueNRG1_gpio.h:111
GPIO_EXTIStructInit
void GPIO_EXTIStructInit(GPIO_EXTIConfigType *GPIO_EXTIInitStruct)
Fills each GPIO_EXTIStruct member with its default value.
Definition: BlueNRG1_gpio.c:274
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_Output
#define GPIO_Output
Definition: BlueNRG1_gpio.h:115
IS_GPIO_EVENT
#define IS_GPIO_EVENT(EV)
Definition: BlueNRG1_gpio.h:195
GPIO_DeInit
void GPIO_DeInit(void)
Deinitializes the GPIO peripheral registers to their default reset values.
Definition: BlueNRG1_gpio.c:92
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
IS_GPIO_PINS
#define IS_GPIO_PINS(PIN)
Definition: BlueNRG1_gpio.h:164
Bit_SET
Definition: BlueNRG1_gpio.h:90
IS_GPIO_IRQSENSE
#define IS_GPIO_IRQSENSE(IS)
Definition: BlueNRG1_gpio.h:180
GPIO_GetITPendingBit
FlagStatus GPIO_GetITPendingBit(uint16_t GPIO_Pin)
Checks whether the specified enabled GPIO interrupt is active.
Definition: BlueNRG1_gpio.c:369
GPIO_ReadBit
BitAction GPIO_ReadBit(uint16_t GPIO_Pins)
Reads the specified input pin value.
Definition: BlueNRG1_gpio.c:187
GPIO_IrqSense_Level
#define GPIO_IrqSense_Level
Definition: BlueNRG1_gpio.h:177
GPIO_ResetBits
void GPIO_ResetBits(uint16_t GPIO_Pins)
Clears the selected IO pin bits.
Definition: BlueNRG1_gpio.c:223
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_IrqSense_Edge
#define GPIO_IrqSense_Edge
Definition: BlueNRG1_gpio.h:176
GPIO_Event_High
#define GPIO_Event_High
Definition: BlueNRG1_gpio.h:191
GPIO_StructInit
void GPIO_StructInit(GPIO_InitType *GPIO_InitStruct)
Fills the GPIO_InitStruct member with its default value.
Definition: BlueNRG1_gpio.c:172
BlueNRG1_gpio.h
This file contains all the functions prototypes for the GPIO firmware library.
GPIO_Event_Low
#define GPIO_Event_Low
Definition: BlueNRG1_gpio.h:190
GPIO_ToggleBits
void GPIO_ToggleBits(uint16_t GPIO_Pins)
Toggles data to the specified IO pin.
Definition: BlueNRG1_gpio.c:261