38 #if defined(GPIO_COUNT) && (GPIO_COUNT > 0)
63 #if defined( _EFM32_TINY_FAMILY ) || defined( _EFM32_ZERO_FAMILY )
65 #define _GPIO_PORT_A_PIN_COUNT 14
66 #define _GPIO_PORT_B_PIN_COUNT 10
67 #define _GPIO_PORT_C_PIN_COUNT 16
68 #define _GPIO_PORT_D_PIN_COUNT 9
69 #define _GPIO_PORT_E_PIN_COUNT 12
70 #define _GPIO_PORT_F_PIN_COUNT 6
71 #define _GPIO_PORT_G_PIN_COUNT 0
72 #define _GPIO_PORT_H_PIN_COUNT 0
73 #define _GPIO_PORT_I_PIN_COUNT 0
74 #define _GPIO_PORT_J_PIN_COUNT 0
75 #define _GPIO_PORT_K_PIN_COUNT 0
77 #define _GPIO_PORT_A_PIN_MASK 0xF77F
78 #define _GPIO_PORT_B_PIN_MASK 0x79F8
79 #define _GPIO_PORT_C_PIN_MASK 0xFFFF
80 #define _GPIO_PORT_D_PIN_MASK 0x01FF
81 #define _GPIO_PORT_E_PIN_MASK 0xFFF0
82 #define _GPIO_PORT_F_PIN_MASK 0x003F
83 #define _GPIO_PORT_G_PIN_MASK 0x0000
84 #define _GPIO_PORT_H_PIN_MASK 0x0000
85 #define _GPIO_PORT_I_PIN_MASK 0x0000
86 #define _GPIO_PORT_J_PIN_MASK 0x0000
87 #define _GPIO_PORT_K_PIN_MASK 0x0000
89 #elif defined( _EFM32_HAPPY_FAMILY )
91 #define _GPIO_PORT_A_PIN_COUNT 6
92 #define _GPIO_PORT_B_PIN_COUNT 5
93 #define _GPIO_PORT_C_PIN_COUNT 12
94 #define _GPIO_PORT_D_PIN_COUNT 4
95 #define _GPIO_PORT_E_PIN_COUNT 4
96 #define _GPIO_PORT_F_PIN_COUNT 6
97 #define _GPIO_PORT_G_PIN_COUNT 0
98 #define _GPIO_PORT_H_PIN_COUNT 0
99 #define _GPIO_PORT_I_PIN_COUNT 0
100 #define _GPIO_PORT_J_PIN_COUNT 0
101 #define _GPIO_PORT_K_PIN_COUNT 0
103 #define _GPIO_PORT_A_PIN_MASK 0x0707
104 #define _GPIO_PORT_B_PIN_MASK 0x6980
105 #define _GPIO_PORT_C_PIN_MASK 0xEF1F
106 #define _GPIO_PORT_D_PIN_MASK 0x00F0
107 #define _GPIO_PORT_E_PIN_MASK 0x3C00
108 #define _GPIO_PORT_F_PIN_MASK 0x003F
109 #define _GPIO_PORT_G_PIN_MASK 0x0000
110 #define _GPIO_PORT_H_PIN_MASK 0x0000
111 #define _GPIO_PORT_I_PIN_MASK 0x0000
112 #define _GPIO_PORT_J_PIN_MASK 0x0000
113 #define _GPIO_PORT_K_PIN_MASK 0x0000
115 #elif defined( _EFM32_GIANT_FAMILY ) \
116 || defined( _EFM32_WONDER_FAMILY )
118 #define _GPIO_PORT_A_PIN_COUNT 16
119 #define _GPIO_PORT_B_PIN_COUNT 16
120 #define _GPIO_PORT_C_PIN_COUNT 16
121 #define _GPIO_PORT_D_PIN_COUNT 16
122 #define _GPIO_PORT_E_PIN_COUNT 16
123 #define _GPIO_PORT_F_PIN_COUNT 13
124 #define _GPIO_PORT_G_PIN_COUNT 0
125 #define _GPIO_PORT_H_PIN_COUNT 0
126 #define _GPIO_PORT_I_PIN_COUNT 0
127 #define _GPIO_PORT_J_PIN_COUNT 0
128 #define _GPIO_PORT_K_PIN_COUNT 0
130 #define _GPIO_PORT_A_PIN_MASK 0xFFFF
131 #define _GPIO_PORT_B_PIN_MASK 0xFFFF
132 #define _GPIO_PORT_C_PIN_MASK 0xFFFF
133 #define _GPIO_PORT_D_PIN_MASK 0xFFFF
134 #define _GPIO_PORT_E_PIN_MASK 0xFFFF
135 #define _GPIO_PORT_F_PIN_MASK 0x1FFF
136 #define _GPIO_PORT_G_PIN_MASK 0x0000
137 #define _GPIO_PORT_H_PIN_MASK 0x0000
138 #define _GPIO_PORT_I_PIN_MASK 0x0000
139 #define _GPIO_PORT_J_PIN_MASK 0x0000
140 #define _GPIO_PORT_K_PIN_MASK 0x0000
142 #elif defined( _EFM32_GECKO_FAMILY )
144 #define _GPIO_PORT_A_PIN_COUNT 16
145 #define _GPIO_PORT_B_PIN_COUNT 16
146 #define _GPIO_PORT_C_PIN_COUNT 16
147 #define _GPIO_PORT_D_PIN_COUNT 16
148 #define _GPIO_PORT_E_PIN_COUNT 16
149 #define _GPIO_PORT_F_PIN_COUNT 10
150 #define _GPIO_PORT_G_PIN_COUNT 0
151 #define _GPIO_PORT_H_PIN_COUNT 0
152 #define _GPIO_PORT_I_PIN_COUNT 0
153 #define _GPIO_PORT_J_PIN_COUNT 0
154 #define _GPIO_PORT_K_PIN_COUNT 0
156 #define _GPIO_PORT_A_PIN_MASK 0xFFFF
157 #define _GPIO_PORT_B_PIN_MASK 0xFFFF
158 #define _GPIO_PORT_C_PIN_MASK 0xFFFF
159 #define _GPIO_PORT_D_PIN_MASK 0xFFFF
160 #define _GPIO_PORT_E_PIN_MASK 0xFFFF
161 #define _GPIO_PORT_F_PIN_MASK 0x03FF
162 #define _GPIO_PORT_G_PIN_MASK 0x0000
163 #define _GPIO_PORT_H_PIN_MASK 0x0000
164 #define _GPIO_PORT_I_PIN_MASK 0x0000
165 #define _GPIO_PORT_J_PIN_MASK 0x0000
166 #define _GPIO_PORT_K_PIN_MASK 0x0000
168 #elif defined( _SILICON_LABS_GECKO_INTERNAL_SDID_80 ) && defined( _EFR_DEVICE )
170 #define _GPIO_PORT_A_PIN_COUNT 6
171 #define _GPIO_PORT_B_PIN_COUNT 5
172 #define _GPIO_PORT_C_PIN_COUNT 6
173 #define _GPIO_PORT_D_PIN_COUNT 6
174 #define _GPIO_PORT_E_PIN_COUNT 0
175 #define _GPIO_PORT_F_PIN_COUNT 8
176 #define _GPIO_PORT_G_PIN_COUNT 0
177 #define _GPIO_PORT_H_PIN_COUNT 0
178 #define _GPIO_PORT_I_PIN_COUNT 0
179 #define _GPIO_PORT_J_PIN_COUNT 0
180 #define _GPIO_PORT_K_PIN_COUNT 0
182 #define _GPIO_PORT_A_PIN_MASK 0x003F
183 #define _GPIO_PORT_B_PIN_MASK 0xF800
184 #define _GPIO_PORT_C_PIN_MASK 0x0FC0
185 #define _GPIO_PORT_D_PIN_MASK 0xFC00
186 #define _GPIO_PORT_E_PIN_MASK 0x0000
187 #define _GPIO_PORT_F_PIN_MASK 0x00FF
188 #define _GPIO_PORT_G_PIN_MASK 0x0000
189 #define _GPIO_PORT_H_PIN_MASK 0x0000
190 #define _GPIO_PORT_I_PIN_MASK 0x0000
191 #define _GPIO_PORT_J_PIN_MASK 0x0000
192 #define _GPIO_PORT_K_PIN_MASK 0x0000
194 #elif defined( _SILICON_LABS_GECKO_INTERNAL_SDID_80 ) && defined( _EFM_DEVICE )
196 #define _GPIO_PORT_A_PIN_COUNT 6
197 #define _GPIO_PORT_B_PIN_COUNT 5
198 #define _GPIO_PORT_C_PIN_COUNT 6
199 #define _GPIO_PORT_D_PIN_COUNT 7
200 #define _GPIO_PORT_E_PIN_COUNT 0
201 #define _GPIO_PORT_F_PIN_COUNT 8
202 #define _GPIO_PORT_G_PIN_COUNT 0
203 #define _GPIO_PORT_H_PIN_COUNT 0
204 #define _GPIO_PORT_I_PIN_COUNT 0
205 #define _GPIO_PORT_J_PIN_COUNT 0
206 #define _GPIO_PORT_K_PIN_COUNT 0
208 #define _GPIO_PORT_A_PIN_MASK 0x003F
209 #define _GPIO_PORT_B_PIN_MASK 0xF800
210 #define _GPIO_PORT_C_PIN_MASK 0x0FC0
211 #define _GPIO_PORT_D_PIN_MASK 0xFE00
212 #define _GPIO_PORT_E_PIN_MASK 0x0000
213 #define _GPIO_PORT_F_PIN_MASK 0x00FF
214 #define _GPIO_PORT_G_PIN_MASK 0x0000
215 #define _GPIO_PORT_H_PIN_MASK 0x0000
216 #define _GPIO_PORT_I_PIN_MASK 0x0000
217 #define _GPIO_PORT_J_PIN_MASK 0x0000
218 #define _GPIO_PORT_K_PIN_MASK 0x0000
220 #elif defined( _SILICON_LABS_GECKO_INTERNAL_SDID_84 )
222 #define _GPIO_PORT_A_PIN_COUNT 10
223 #define _GPIO_PORT_B_PIN_COUNT 10
224 #define _GPIO_PORT_C_PIN_COUNT 12
225 #define _GPIO_PORT_D_PIN_COUNT 8
226 #define _GPIO_PORT_E_PIN_COUNT 0
227 #define _GPIO_PORT_F_PIN_COUNT 16
228 #define _GPIO_PORT_G_PIN_COUNT 0
229 #define _GPIO_PORT_H_PIN_COUNT 0
230 #define _GPIO_PORT_I_PIN_COUNT 4
231 #define _GPIO_PORT_J_PIN_COUNT 2
232 #define _GPIO_PORT_K_PIN_COUNT 3
234 #define _GPIO_PORT_A_PIN_MASK 0x03FF
235 #define _GPIO_PORT_B_PIN_MASK 0xFFC0
236 #define _GPIO_PORT_C_PIN_MASK 0x0FFF
237 #define _GPIO_PORT_D_PIN_MASK 0xFF00
238 #define _GPIO_PORT_E_PIN_MASK 0x0000
239 #define _GPIO_PORT_F_PIN_MASK 0xFFFF
240 #define _GPIO_PORT_G_PIN_MASK 0x0000
241 #define _GPIO_PORT_H_PIN_MASK 0x0000
242 #define _GPIO_PORT_I_PIN_MASK 0x000F
243 #define _GPIO_PORT_J_PIN_MASK 0xC000
244 #define _GPIO_PORT_K_PIN_MASK 0x0007
246 #elif defined( _SILICON_LABS_GECKO_INTERNAL_SDID_89 )
248 #define _GPIO_PORT_A_PIN_COUNT 6
249 #define _GPIO_PORT_B_PIN_COUNT 5
250 #define _GPIO_PORT_C_PIN_COUNT 6
251 #define _GPIO_PORT_D_PIN_COUNT 6
252 #define _GPIO_PORT_E_PIN_COUNT 0
253 #define _GPIO_PORT_F_PIN_COUNT 8
254 #define _GPIO_PORT_G_PIN_COUNT 0
255 #define _GPIO_PORT_H_PIN_COUNT 0
256 #define _GPIO_PORT_I_PIN_COUNT 0
257 #define _GPIO_PORT_J_PIN_COUNT 0
258 #define _GPIO_PORT_K_PIN_COUNT 0
260 #define _GPIO_PORT_A_PIN_MASK 0x003F
261 #define _GPIO_PORT_B_PIN_MASK 0xF800
262 #define _GPIO_PORT_C_PIN_MASK 0x0FC0
263 #define _GPIO_PORT_D_PIN_MASK 0xFC00
264 #define _GPIO_PORT_E_PIN_MASK 0x0000
265 #define _GPIO_PORT_F_PIN_MASK 0x00FF
266 #define _GPIO_PORT_G_PIN_MASK 0x0000
267 #define _GPIO_PORT_H_PIN_MASK 0x0000
268 #define _GPIO_PORT_I_PIN_MASK 0x0000
269 #define _GPIO_PORT_J_PIN_MASK 0x0000
270 #define _GPIO_PORT_K_PIN_MASK 0x0000
273 #warning "Port and pin masks are not defined for this family."
276 #define _GPIO_PORT_SIZE(port) ( \
277 (port) == 0 ? _GPIO_PORT_A_PIN_COUNT : \
278 (port) == 1 ? _GPIO_PORT_B_PIN_COUNT : \
279 (port) == 2 ? _GPIO_PORT_C_PIN_COUNT : \
280 (port) == 3 ? _GPIO_PORT_D_PIN_COUNT : \
281 (port) == 4 ? _GPIO_PORT_E_PIN_COUNT : \
282 (port) == 5 ? _GPIO_PORT_F_PIN_COUNT : \
283 (port) == 6 ? _GPIO_PORT_G_PIN_COUNT : \
284 (port) == 7 ? _GPIO_PORT_H_PIN_COUNT : \
285 (port) == 8 ? _GPIO_PORT_I_PIN_COUNT : \
286 (port) == 9 ? _GPIO_PORT_J_PIN_COUNT : \
287 (port) == 10 ? _GPIO_PORT_K_PIN_COUNT : \
290 #define _GPIO_PORT_MASK(port) ( \
291 (port) == 0 ? _GPIO_PORT_A_PIN_MASK : \
292 (port) == 1 ? _GPIO_PORT_B_PIN_MASK : \
293 (port) == 2 ? _GPIO_PORT_C_PIN_MASK : \
294 (port) == 3 ? _GPIO_PORT_D_PIN_MASK : \
295 (port) == 4 ? _GPIO_PORT_E_PIN_MASK : \
296 (port) == 5 ? _GPIO_PORT_F_PIN_MASK : \
297 (port) == 6 ? _GPIO_PORT_G_PIN_MASK : \
298 (port) == 7 ? _GPIO_PORT_H_PIN_MASK : \
299 (port) == 8 ? _GPIO_PORT_I_PIN_MASK : \
300 (port) == 9 ? _GPIO_PORT_J_PIN_MASK : \
301 (port) == 10 ? _GPIO_PORT_K_PIN_MASK : \
305 #define GPIO_PORT_VALID(port) ( _GPIO_PORT_MASK(port) )
306 #define GPIO_PORT_PIN_VALID(port, pin) ((( _GPIO_PORT_MASK(port)) >> (pin)) & 0x1 )
308 #if defined(_GPIO_EXTIPINSELL_MASK)
310 #define GPIO_INTNO_PIN_VALID(intNo, pin) \
311 ((intNo & ~_GPIO_EXTIPINSELL_EXTIPINSEL0_MASK) \
312 == (pin & ~_GPIO_EXTIPINSELL_EXTIPINSEL0_MASK))
316 #define GPIO_PIN_MAX 15
319 #if ( _GPIO_PORT_K_PIN_COUNT > 0 )
320 #define GPIO_PORT_MAX 10
321 #elif ( _GPIO_PORT_J_PIN_COUNT > 0 )
322 #define GPIO_PORT_MAX 9
323 #elif ( _GPIO_PORT_I_PIN_COUNT > 0 )
324 #define GPIO_PORT_MAX 8
325 #elif ( _GPIO_PORT_H_PIN_COUNT > 0 )
326 #define GPIO_PORT_MAX 7
327 #elif ( _GPIO_PORT_G_PIN_COUNT > 0 )
328 #define GPIO_PORT_MAX 6
329 #elif ( _GPIO_PORT_F_PIN_COUNT > 0 )
330 #define GPIO_PORT_MAX 5
332 #error "Max GPIO port number is undefined for this part."
336 #define GPIO_EXTINTNO_MAX 15
347 #if ( _GPIO_PORT_A_PIN_COUNT > 0 )
350 #if ( _GPIO_PORT_B_PIN_COUNT > 0 )
353 #if ( _GPIO_PORT_C_PIN_COUNT > 0 )
356 #if ( _GPIO_PORT_D_PIN_COUNT > 0 )
359 #if ( _GPIO_PORT_E_PIN_COUNT > 0 )
362 #if ( _GPIO_PORT_F_PIN_COUNT > 0 )
365 #if ( _GPIO_PORT_G_PIN_COUNT > 0 )
368 #if ( _GPIO_PORT_H_PIN_COUNT > 0 )
371 #if ( _GPIO_PORT_I_PIN_COUNT > 0 )
374 #if ( _GPIO_PORT_J_PIN_COUNT > 0 )
377 #if ( _GPIO_PORT_K_PIN_COUNT > 0 )
382 #if defined( _GPIO_P_CTRL_DRIVEMODE_MASK )
397 #if defined( _GPIO_P_CTRL_DRIVESTRENGTH_MASK ) && defined( _GPIO_P_CTRL_DRIVESTRENGTHALT_MASK )
402 gpioDriveStrengthWeakAlternateWeak = GPIO_P_CTRL_DRIVESTRENGTH_WEAK | GPIO_P_CTRL_DRIVESTRENGTHALT_WEAK,
405 gpioDriveStrengthWeakAlternateStrong = GPIO_P_CTRL_DRIVESTRENGTH_WEAK | GPIO_P_CTRL_DRIVESTRENGTHALT_STRONG,
408 gpioDriveStrengthStrongAlternateWeak = GPIO_P_CTRL_DRIVESTRENGTH_STRONG | GPIO_P_CTRL_DRIVESTRENGTHALT_WEAK,
411 gpioDriveStrengthStrongAlternateStrong = GPIO_P_CTRL_DRIVESTRENGTH_STRONG | GPIO_P_CTRL_DRIVESTRENGTHALT_STRONG,
412 } GPIO_DriveStrength_TypeDef;
415 #define gpioDriveStrengthStrong gpioDriveStrengthStrongAlternateStrong
416 #define gpioDriveStrengthWeak gpioDriveStrengthWeakAlternateWeak
433 #if defined( _GPIO_P_MODEL_MODE0_PUSHPULLDRIVE )
437 #if defined( _GPIO_P_MODEL_MODE0_PUSHPULLALT )
439 gpioModePushPullAlternate = _GPIO_P_MODEL_MODE0_PUSHPULLALT,
453 #if defined( _GPIO_P_MODEL_MODE0_WIREDANDDRIVE )
463 #if defined( _GPIO_P_MODEL_MODE0_WIREDANDALT )
465 gpioModeWiredAndAlternate = _GPIO_P_MODEL_MODE0_WIREDANDALT,
467 gpioModeWiredAndAlternateFilter = _GPIO_P_MODEL_MODE0_WIREDANDALTFILTER,
469 gpioModeWiredAndAlternatePullUp = _GPIO_P_MODEL_MODE0_WIREDANDALTPULLUP,
471 gpioModeWiredAndAlternatePullUpFilter = _GPIO_P_MODEL_MODE0_WIREDANDALTPULLUPFILTER,
495 #if defined( _GPIO_ROUTE_SWCLKPEN_MASK )
497 #elif defined( _GPIO_ROUTEPEN_SWCLKTCKPEN_MASK )
500 #warning "ROUTE enable for SWCLK pin is not defined."
518 #if defined( _GPIO_ROUTE_SWDIOPEN_MASK )
520 #elif defined( _GPIO_ROUTEPEN_SWDIOTMSPEN_MASK )
523 #warning "ROUTE enable for SWDIO pin is not defined."
527 #if defined( _GPIO_ROUTE_SWOPEN_MASK ) || defined( _GPIO_ROUTEPEN_SWVPEN_MASK )
543 #if defined( _GPIO_ROUTE_SWOPEN_MASK )
545 #elif defined( _GPIO_ROUTEPEN_SWVPEN_MASK )
548 #warning "ROUTE enable for SWO/SWV pin is not defined."
553 #if defined (_GPIO_P_CTRL_DRIVEMODE_MASK)
557 #if defined( _GPIO_P_CTRL_DRIVESTRENGTH_MASK )
558 void GPIO_DriveStrengthSet(
GPIO_Port_TypeDef port, GPIO_DriveStrength_TypeDef strength);
561 # if defined( _GPIO_EM4WUEN_MASK )
570 __STATIC_INLINE
void GPIO_EM4DisablePinWakeup(uint32_t pinmask)
572 EFM_ASSERT((pinmask & ~_GPIO_EM4WUEN_MASK) == 0);
574 GPIO->EM4WUEN &= ~pinmask;
578 # if defined( _GPIO_EM4WUEN_MASK )
579 void GPIO_EM4EnablePinWakeup(uint32_t pinmask, uint32_t polaritymask);
582 #if defined( _GPIO_EM4WUCAUSE_MASK ) || defined( _GPIO_IF_EM4WU_MASK )
591 __STATIC_INLINE uint32_t GPIO_EM4GetPinWakeupCause(
void)
593 #if defined( _GPIO_EM4WUCAUSE_MASK )
594 return GPIO->EM4WUCAUSE & _GPIO_EM4WUCAUSE_MASK;
596 return GPIO->IF & _GPIO_IF_EM4WU_MASK;
601 #if defined( GPIO_CTRL_EM4RET ) || defined( _EMU_EM4CTRL_EM4IORETMODE_MASK )
616 __STATIC_INLINE
void GPIO_EM4SetPinRetention(
bool enable)
620 #if defined( GPIO_CTRL_EM4RET )
621 GPIO->CTRL |= GPIO_CTRL_EM4RET;
623 EMU->EM4CTRL = (
EMU->EM4CTRL & ~_EMU_EM4CTRL_EM4IORETMODE_MASK)
624 | EMU_EM4CTRL_EM4IORETMODE_EM4EXIT;
629 #if defined( GPIO_CTRL_EM4RET )
630 GPIO->CTRL &= ~GPIO_CTRL_EM4RET;
632 EMU->EM4CTRL = (
EMU->EM4CTRL & ~_EMU_EM4CTRL_EM4IORETMODE_MASK)
633 | EMU_EM4CTRL_EM4IORETMODE_DISABLE;
664 GPIO->INSENSE = (
GPIO->INSENSE & ~mask) | (val & mask);
744 return GPIO->IF & tmp;
784 EFM_ASSERT(GPIO_PORT_PIN_VALID(port, pin));
813 EFM_ASSERT(GPIO_PORT_PIN_VALID(port, pin));
814 #if defined( _GPIO_P_DOUTCLR_MASK )
815 GPIO->P[port].DOUTCLR = 1 << pin;
837 EFM_ASSERT(GPIO_PORT_PIN_VALID(port, pin));
858 EFM_ASSERT(GPIO_PORT_PIN_VALID(port, pin));
859 #if defined( _GPIO_P_DOUTSET_MASK )
860 GPIO->P[port].DOUTSET = 1 << pin;
883 EFM_ASSERT(GPIO_PORT_PIN_VALID(port, pin));
885 GPIO->P[port].DOUTTGL = 1 << pin;
897 EFM_ASSERT(GPIO_PORT_VALID(port));
899 return GPIO->P[port].DIN;
919 EFM_ASSERT(GPIO_PORT_VALID(port));
920 #if defined( _GPIO_P_DOUTCLR_MASK )
921 GPIO->P[port].DOUTCLR = pins;
939 EFM_ASSERT(GPIO_PORT_VALID(port));
941 return GPIO->P[port].DOUT;
961 EFM_ASSERT(GPIO_PORT_VALID(port));
962 #if defined( _GPIO_P_DOUTSET_MASK )
963 GPIO->P[port].DOUTSET = pins;
991 EFM_ASSERT(GPIO_PORT_VALID(port));
993 GPIO->P[port].DOUT = (
GPIO->P[port].DOUT & ~mask) | (val & mask);
1013 EFM_ASSERT(GPIO_PORT_VALID(port));
1015 GPIO->P[port].DOUTTGL = pins;
1018 #if defined(_GPIO_P_CTRL_SLEWRATE_MASK)
1034 uint32_t slewrateAlt)
1036 EFM_ASSERT(GPIO_PORT_VALID(port));
1037 EFM_ASSERT(slewrate <= (_GPIO_P_CTRL_SLEWRATE_MASK
1038 >> _GPIO_P_CTRL_SLEWRATE_SHIFT));
1039 EFM_ASSERT(slewrateAlt <= (_GPIO_P_CTRL_SLEWRATEALT_MASK
1040 >> _GPIO_P_CTRL_SLEWRATEALT_SHIFT));
1042 GPIO->P[port].CTRL = (
GPIO->P[port].CTRL
1043 & ~(_GPIO_P_CTRL_SLEWRATE_MASK
1044 | _GPIO_P_CTRL_SLEWRATEALT_MASK))
1045 | (slewrate << _GPIO_P_CTRL_SLEWRATE_SHIFT)
1046 | (slewrateAlt << _GPIO_P_CTRL_SLEWRATEALT_SHIFT);
#define _GPIO_P_MODEL_MODE0_WIREDANDPULLUPFILTER
#define _GPIO_P_MODEL_MODE0_WIREDANDPULLUP
__STATIC_INLINE void GPIO_DbgSWDClkEnable(bool enable)
Enable/disable serial wire clock pin.
__STATIC_INLINE void GPIO_Unlock(void)
Unlocks the GPIO configuration.
Emlib peripheral API "assert" implementation.
#define _GPIO_ROUTE_SWDIOPEN_SHIFT
__STATIC_INLINE void GPIO_PortOutToggle(GPIO_Port_TypeDef port, uint32_t pins)
Toggle pins in GPIO port data out register.
#define _GPIO_P_MODEL_MODE0_WIREDAND
RAM and peripheral bit-field set and clear API.
__STATIC_INLINE uint32_t GPIO_IntGetEnabled(void)
Get enabled and pending GPIO interrupt flags. Useful for handling more interrupt sources in the same ...
__STATIC_INLINE void GPIO_PinOutToggle(GPIO_Port_TypeDef port, unsigned int pin)
Toggle a single pin in GPIO port data out register.
__STATIC_INLINE void GPIO_PortOutSet(GPIO_Port_TypeDef port, uint32_t pins)
Set bits GPIO data out register to 1.
__STATIC_INLINE void GPIO_IntClear(uint32_t flags)
Clear one or more pending GPIO interrupts.
GPIO_Mode_TypeDef GPIO_PinModeGet(GPIO_Port_TypeDef port, unsigned int pin)
Get the mode for a GPIO pin.
__STATIC_INLINE void GPIO_PortOutClear(GPIO_Port_TypeDef port, uint32_t pins)
Set bits in DOUT register for a port to 0.
CMSIS Cortex-M Peripheral Access Layer for Silicon Laboratories microcontroller devices.
#define _GPIO_P_MODEL_MODE0_WIREDANDDRIVEPULLUPFILTER
__STATIC_INLINE unsigned int BUS_RegBitRead(volatile const uint32_t *addr, unsigned int bit)
Perform a single-bit read operation on a peripheral register.
void GPIO_DbgLocationSet(unsigned int location)
Sets the pin location of the debug pins (Serial Wire interface).
__STATIC_INLINE uint32_t GPIO_PortInGet(GPIO_Port_TypeDef port)
Read the pad values for GPIO port.
#define GPIO_LOCK_LOCKKEY_UNLOCK
#define _GPIO_ROUTE_SWOPEN_SHIFT
__STATIC_INLINE void GPIO_IntDisable(uint32_t flags)
Disable one or more GPIO interrupts.
#define _GPIO_P_MODEL_MODE0_WIREDORPULLDOWN
void GPIO_ExtIntConfig(GPIO_Port_TypeDef port, unsigned int pin, unsigned int intNo, bool risingEdge, bool fallingEdge, bool enable)
Configure GPIO external pin interrupt.
__STATIC_INLINE void GPIO_IntEnable(uint32_t flags)
Enable one or more GPIO interrupts.
void GPIO_DriveModeSet(GPIO_Port_TypeDef port, GPIO_DriveMode_TypeDef mode)
Sets the drive mode for a GPIO port.
void GPIO_PinModeSet(GPIO_Port_TypeDef port, unsigned int pin, GPIO_Mode_TypeDef mode, unsigned int out)
Set the mode for a GPIO pin.
__STATIC_INLINE void GPIO_Lock(void)
Locks the GPIO configuration.
#define _GPIO_P_MODEL_MODE0_PUSHPULL
__STATIC_INLINE void GPIO_PortOutSetVal(GPIO_Port_TypeDef port, uint32_t val, uint32_t mask)
Set GPIO port data out register.
__STATIC_INLINE void GPIO_IntSet(uint32_t flags)
Set one or more pending GPIO interrupts from SW.
__STATIC_INLINE void GPIO_PinOutSet(GPIO_Port_TypeDef port, unsigned int pin)
Set a single pin in GPIO data out register to 1.
#define _GPIO_ROUTE_SWCLKPEN_SHIFT
__STATIC_INLINE void GPIO_InputSenseSet(uint32_t val, uint32_t mask)
Enable/disable input sensing.
#define _GPIO_P_MODEL_MODE0_PUSHPULLDRIVE
#define GPIO_P_CTRL_DRIVEMODE_LOWEST
__STATIC_INLINE void GPIO_IntConfig(GPIO_Port_TypeDef port, unsigned int pin, bool risingEdge, bool fallingEdge, bool enable)
Configure GPIO interrupt.
#define GPIO_P_CTRL_DRIVEMODE_LOW
__STATIC_INLINE unsigned int GPIO_PinOutGet(GPIO_Port_TypeDef port, unsigned int pin)
Get current setting for a pin in a GPIO port data out register.
__STATIC_INLINE void BUS_RegMaskedSet(volatile uint32_t *addr, uint32_t mask)
Perform a masked set operation on peripheral register address.
#define _GPIO_P_MODEL_MODE0_DISABLED
#define _GPIO_P_MODEL_MODE0_INPUTPULL
__STATIC_INLINE void BUS_RegMaskedClear(volatile uint32_t *addr, uint32_t mask)
Perform a masked clear operation on peripheral register address.
#define _GPIO_P_MODEL_MODE0_INPUTPULLFILTER
__STATIC_INLINE void GPIO_DbgSWOEnable(bool enable)
Enable/Disable serial wire output pin.
#define _GPIO_P_MODEL_MODE0_WIREDANDDRIVEFILTER
#define GPIO_P_CTRL_DRIVEMODE_STANDARD
#define _GPIO_P_MODEL_MODE0_WIREDANDFILTER
__STATIC_INLINE uint32_t GPIO_IntGet(void)
Get pending GPIO interrupts.
#define GPIO_LOCK_LOCKKEY_LOCK
#define _GPIO_P_MODEL_MODE0_WIREDANDDRIVEPULLUP
__STATIC_INLINE void GPIO_DbgSWDIOEnable(bool enable)
Enable/disable serial wire data I/O pin.
__STATIC_INLINE void GPIO_PinOutClear(GPIO_Port_TypeDef port, unsigned int pin)
Set a single pin in GPIO data out port register to 0.
__STATIC_INLINE void BUS_RegBitWrite(volatile uint32_t *addr, unsigned int bit, unsigned int val)
Perform a single-bit write operation on a peripheral register.
#define GPIO_P_CTRL_DRIVEMODE_HIGH
#define _GPIO_P_MODEL_MODE0_WIREDOR
__STATIC_INLINE unsigned int GPIO_PinInGet(GPIO_Port_TypeDef port, unsigned int pin)
Read the pad value for a single pin in a GPIO port.
__STATIC_INLINE uint32_t GPIO_PortOutGet(GPIO_Port_TypeDef port)
Get current setting for a GPIO port data out register.
#define _GPIO_P_MODEL_MODE0_WIREDANDDRIVE
#define _GPIO_P_MODEL_MODE0_INPUT