MG32L003 Standard Peripherals Firmware Library
mg32l003_gpio.h
Go to the documentation of this file.
1 
10 /* Define to prevent recursive inclusion -------------------------------------*/
11 #ifndef __MG32L003_GPIO_H
12 #define __MG32L003_GPIO_H
13 
14 #ifdef __cplusplus
15  extern "C" {
16 #endif
17 
18 /* Includes ------------------------------------------------------------------*/
19 #include "mg32l003.h"
20 
29 /* Exported types ------------------------------------------------------------*/
30 /* Exported constants --------------------------------------------------------*/
31 
36 #ifdef MG32L003Fx
37  #define GPIO_NUMBER 8U
38 #elif defined(MG32L003Kx)
39  #define GPIO_NUMBER 16U
40 #endif
41 
45 typedef enum
46 {
47  Bit_RESET = 0,
48  Bit_SET
49 } BitAction;
50 
54 #define GPIO_Pin_0 ((uint16_t)0x0001)
55 #define GPIO_Pin_1 ((uint16_t)0x0002)
56 #define GPIO_Pin_2 ((uint16_t)0x0004)
57 #define GPIO_Pin_3 ((uint16_t)0x0008)
58 #define GPIO_Pin_4 ((uint16_t)0x0010)
59 #define GPIO_Pin_5 ((uint16_t)0x0020)
60 #define GPIO_Pin_6 ((uint16_t)0x0040)
61 #define GPIO_Pin_7 ((uint16_t)0x0080)
62 #define GPIO_Pin_All ((uint16_t)0x00FF)
71 #define GPIO_MODE_IN ((uint32_t)0x00000000U)
72 #define GPIO_MODE_OUT ((uint32_t)0x10000000U)
81 #define GPIO_OTYPE_PP ((uint32_t)0x00000000U)
82 #define GPIO_OTYPE_OD ((uint32_t)0x01000000U)
91 #define GPIO_SPEED_LOW ((uint32_t)0x00000000U)
92 #define GPIO_SPEED_HIGH ((uint32_t)0x00100000U)
101 #define GPIO_PUPD_NOPULL ((uint32_t)0x00000000U)
102 #define GPIO_PUPD_UP ((uint32_t)0x00010000U)
103 #define GPIO_PUPD_DOWN ((uint32_t)0x00020000U)
112 #define GPIO_DRV_HIGH ((uint32_t)0x00000000U)
113 #define GPIO_DRV_LOW ((uint32_t)0x00001000U)
122 #define GPIO_EXTI_IT_DISABLE ((uint32_t)0x00000000U)
123 #define GPIO_EXTI_IT_ENABLE ((uint32_t)0x00000100U)
124 #define GPIO_EXTI_TRIGGER_EDGE ((uint32_t)0x00000000U)
125 #define GPIO_EXTI_TRIGGER_LEVEL ((uint32_t)0x00000200U)
126 #define GPIO_EXTI_TRIGGER_LOW ((uint32_t)0x00000000U)
127 #define GPIO_EXTI_TRIGGER_HIGH ((uint32_t)0x00000400U)
128 #define GPIO_EXTI_TRIGGER_FALLING ((uint32_t)0x00000000U)
129 #define GPIO_EXTI_TRIGGER_RISSING ((uint32_t)0x00000400U)
130 #define GPIO_EXTI_TRIGGER_RISSING_FALLING ((uint32_t)0x00000800U)
131 #define GPIO_EXTI_Mask ((uint32_t)0x00000F00U)
132 
140 #define GPIO_DB_DISABLE ((uint32_t)0x00000000U)
141 #define GPIO_DB_ENABLE ((uint32_t)0x00000010U)
142 #define GPIO_DB_SYNC_DISABLE ((uint32_t)0x00000000U)
143 #define GPIO_DB_SYNC_ENABLE ((uint32_t)0x00000020U)
144 #define GPIO_DB_CLK_DIV_1 ((uint32_t)0x00000000U)
145 #define GPIO_DB_CLK_DIV_2 ((uint32_t)0x00000001U)
146 #define GPIO_DB_CLK_DIV_4 ((uint32_t)0x00000002U)
147 #define GPIO_DB_CLK_DIV_8 ((uint32_t)0x00000003U)
148 #define GPIO_DB_CLK_DIV_16 ((uint32_t)0x00000004U)
149 #define GPIO_DB_CLK_DIV_32 ((uint32_t)0x00000005U)
150 #define GPIO_DB_CLK_DIV_64 ((uint32_t)0x00000006U)
151 #define GPIO_DB_CLK_DIV_128 ((uint32_t)0x00000007U)
152 #define GPIO_DB_CLK_DIV_256 ((uint32_t)0x00000008U)
153 #define GPIO_DB_CLK_DIV_512 ((uint32_t)0x00000009U)
154 #define GPIO_DB_CLK_DIV_1024 ((uint32_t)0x0000000AU)
155 #define GPIO_DB_CLK_DIV_2048 ((uint32_t)0x0000000BU)
156 #define GPIO_DB_CLK_DIV_4096 ((uint32_t)0x0000000CU)
157 #define GPIO_DB_CLK_DIV_8192 ((uint32_t)0x0000000DU)
158 #define GPIO_DB_CLK_DIV_16384 ((uint32_t)0x0000000EU)
159 #define GPIO_DB_CLK_DIV_32768 ((uint32_t)0x0000000FU)
160 #define GPIO_DB_Mask ((uint32_t)0x000000FFU)
161 
169 #define GPIO_AF0 ((uint32_t)0x00000000U)
170 #define GPIO_AF1 ((uint32_t)0x00000001U)
171 #define GPIO_AF2 ((uint32_t)0x00000002U)
172 #define GPIO_AF3 ((uint32_t)0x00000003U)
173 #define GPIO_AF4 ((uint32_t)0x00000004U)
174 #define GPIO_AF5 ((uint32_t)0x00000005U)
175 #define GPIO_AF6 ((uint32_t)0x00000006U)
176 #define GPIO_AF7 ((uint32_t)0x00000007U)
177 #define GPIO_AF8 ((uint32_t)0x00000008U)
178 #define GPIO_AF9 ((uint32_t)0x00000009U)
179 #define GPIO_AF10 ((uint32_t)0x0000000AU)
180 #define GPIO_AF11 ((uint32_t)0x0000000BU)
181 #define GPIO_AF12 ((uint32_t)0x0000000CU)
182 #define GPIO_AF13 ((uint32_t)0x0000000DU)
183 #define GPIO_AF14 ((uint32_t)0x0000000EU)
184 #define GPIO_AF15 ((uint32_t)0x0000000FU)
185 #define GPIO_AF_Mask ((uint32_t)0x0000000FU)
186 
194 /* Exported macro ------------------------------------------------------------*/
195 
196 #define IS_GPIO_ALL_PERIPH(PERIPH) (((PERIPH) == GPIOA) || \
197  ((PERIPH) == GPIOB) || \
198  ((PERIPH) == GPIOC) || \
199  ((PERIPH) == GPIOD))
200 
201 #define IS_GET_GPIO_PIN(PIN) (((PIN) == GPIO_Pin_0) || \
202  ((PIN) == GPIO_Pin_1) || \
203  ((PIN) == GPIO_Pin_2) || \
204  ((PIN) == GPIO_Pin_3) || \
205  ((PIN) == GPIO_Pin_4) || \
206  ((PIN) == GPIO_Pin_5) || \
207  ((PIN) == GPIO_Pin_6) || \
208  ((PIN) == GPIO_Pin_7))
209 
210 #define IS_GPIO_PIN(PIN) (((PIN) & 0x000000FF) != (uint32_t)0x00)
211 
212 #define IS_GPIO_BIT_ACTION(ACTION) (((ACTION) == Bit_RESET) || ((ACTION) == Bit_SET))
213 
214 /* Exported functions --------------------------------------------------------*/
215 
216 void GPIO_DeInit(GPIO_TypeDef *GPIOx);
217 void GPIO_Init(GPIO_TypeDef *GPIOx, uint16_t GPIO_Pin, uint32_t PinConfig);
218 void GPIO_SetAFPin(GPIO_TypeDef *GPIOx, uint16_t GPIO_Pin, uint32_t Alternate);
219 uint8_t GPIO_ReadInputDataBit(GPIO_TypeDef *GPIOx, uint16_t GPIO_Pin);
220 uint16_t GPIO_ReadInputData(GPIO_TypeDef *GPIOx);
221 uint8_t GPIO_ReadOutputDataBit(GPIO_TypeDef *GPIOx, uint16_t GPIO_Pin);
222 uint16_t GPIO_ReadOutputData(GPIO_TypeDef *GPIOx);
223 void GPIO_SetBits(GPIO_TypeDef *GPIOx, uint16_t GPIO_Pin);
224 void GPIO_ResetBits(GPIO_TypeDef *GPIOx, uint16_t GPIO_Pin);
225 void GPIO_WriteBit(GPIO_TypeDef *GPIOx, uint16_t GPIO_Pin, BitAction BitVal);
226 void GPIO_Write(GPIO_TypeDef *GPIOx, uint16_t PortVal);
227 void GPIO_ToggleBits(GPIO_TypeDef *GPIOx, uint16_t GPIO_Pin);
228 void GPIO_DriveCurrentConfig(GPIO_TypeDef *GPIOx, uint16_t GPIO_Pin, uint32_t Current);
229 void GPIO_EXTIConfig(GPIO_TypeDef *GPIOx, uint16_t GPIO_Pin, uint32_t EXTI_Config);
230 void GPIO_DebounceConfig(GPIO_TypeDef *GPIOx, uint16_t GPIO_Pin, uint32_t DebounceConfig);
231 FlagStatus GPIO_EXTI_GetFlagStatus(GPIO_TypeDef *GPIOx, uint16_t GPIO_Pin);
232 void GPIO_EXTI_ClearFlag(GPIO_TypeDef *GPIOx, uint16_t GPIO_Pin);
233 ITStatus GPIO_EXTI_GetIT(GPIO_TypeDef *GPIOx, uint16_t GPIO_Pin);
234 void GPIO_EXTI_ClearIT(GPIO_TypeDef *GPIOx, uint16_t GPIO_Pin);
235 
244 #ifdef __cplusplus
245 }
246 #endif
247 
248 #endif /* __MG32L003_GPIO_H */
void GPIO_DriveCurrentConfig(GPIO_TypeDef *GPIOx, uint16_t GPIO_Pin, uint32_t Current)
Configure the drive current of several pins for a specified port.
Definition: mg32l003_gpio.c:337
uint8_t GPIO_ReadInputDataBit(GPIO_TypeDef *GPIOx, uint16_t GPIO_Pin)
Reads the specified input port pin.
Definition: mg32l003_gpio.c:164
void GPIO_EXTI_ClearFlag(GPIO_TypeDef *GPIOx, uint16_t GPIO_Pin)
Clears the GPIO_Pin's EXTI line pending flags.
Definition: mg32l003_gpio.c:497
void GPIO_ToggleBits(GPIO_TypeDef *GPIOx, uint16_t GPIO_Pin)
Toggle data value for several pin of specified port.
Definition: mg32l003_gpio.c:318
FlagStatus GPIO_EXTI_GetFlagStatus(GPIO_TypeDef *GPIOx, uint16_t GPIO_Pin)
Checks whether the specified GPIO_Pin's EXTI line flag is set or not.
Definition: mg32l003_gpio.c:470
uint8_t GPIO_ReadOutputDataBit(GPIO_TypeDef *GPIOx, uint16_t GPIO_Pin)
Reads the specified output data port bit.
Definition: mg32l003_gpio.c:204
uint16_t GPIO_ReadOutputData(GPIO_TypeDef *GPIOx)
Reads the specified GPIO output data port.
Definition: mg32l003_gpio.c:229
Definition: mg32l003.h:531
void GPIO_WriteBit(GPIO_TypeDef *GPIOx, uint16_t GPIO_Pin, BitAction BitVal)
Sets or clears the selected data port bit.
Definition: mg32l003_gpio.c:280
void GPIO_DebounceConfig(GPIO_TypeDef *GPIOx, uint16_t GPIO_Pin, uint32_t DebounceConfig)
Handles the configuration of GPIO debounce.
Definition: mg32l003_gpio.c:413
void GPIO_SetBits(GPIO_TypeDef *GPIOx, uint16_t GPIO_Pin)
Sets the selected data port bits.
Definition: mg32l003_gpio.c:244
void GPIO_EXTI_ClearIT(GPIO_TypeDef *GPIOx, uint16_t GPIO_Pin)
Clears the GPIO_Pin's EXTI line pending bits.
Definition: mg32l003_gpio.c:540
ITStatus GPIO_EXTI_GetIT(GPIO_TypeDef *GPIOx, uint16_t GPIO_Pin)
Checks that the interrupt of the EXTI line for the specified GPIO Pin is enabled.
Definition: mg32l003_gpio.c:513
void GPIO_SetAFPin(GPIO_TypeDef *GPIOx, uint16_t GPIO_Pin, uint32_t Alternate)
Configure gpio alternate function of any pins for a dedicated port.
Definition: mg32l003_gpio.c:135
void GPIO_Write(GPIO_TypeDef *GPIOx, uint16_t PortVal)
Writes data to the specified GPIO data port.
Definition: mg32l003_gpio.c:303
void GPIO_EXTIConfig(GPIO_TypeDef *GPIOx, uint16_t GPIO_Pin, uint32_t EXTI_Config)
Handles the configuration of GPIO_Pin's EXTI.
Definition: mg32l003_gpio.c:368
void GPIO_ResetBits(GPIO_TypeDef *GPIOx, uint16_t GPIO_Pin)
Clears the selected data port bits.
Definition: mg32l003_gpio.c:260
void GPIO_Init(GPIO_TypeDef *GPIOx, uint16_t GPIO_Pin, uint32_t PinConfig)
Initializes the GPIOx peripheral according to the PinConfig.
Definition: mg32l003_gpio.c:74
uint16_t GPIO_ReadInputData(GPIO_TypeDef *GPIOx)
Reads the specified GPIO input data port.
Definition: mg32l003_gpio.c:189
void GPIO_DeInit(GPIO_TypeDef *GPIOx)
De-initializes the GPIOx peripheral registers to their default reset values.
Definition: mg32l003_gpio.c:37
BitAction
GPIO Bit SET and Bit RESET enumeration.
Definition: mg32l003_gpio.h:45