| MINI58_BSP V3.01.003 The Board Support Package for Mini58 Series MCU

gpio.h
Go to the documentation of this file.
1/**************************************************************************/
12#ifndef __GPIO_H__
13#define __GPIO_H__
14
15#ifdef __cplusplus
16 extern "C"
17{
18#endif
19
20
32#define GPIO_PIN_MAX 8
34/*---------------------------------------------------------------------------------------------------------*/
35/* MODE Constant Definitions */
36/*---------------------------------------------------------------------------------------------------------*/
37#define GPIO_MODE_INPUT 0x0UL
38#define GPIO_MODE_OUTPUT 0x1UL
39#define GPIO_MODE_OPEN_DRAIN 0x2UL
40#define GPIO_MODE_QUASI 0x3UL
42/*---------------------------------------------------------------------------------------------------------*/
43/* GPIO Interrupt Type Constant Definitions */
44/*---------------------------------------------------------------------------------------------------------*/
45#define GPIO_INT_RISING 0x00010000UL
46#define GPIO_INT_FALLING 0x00000001UL
47#define GPIO_INT_BOTH_EDGE 0x00010001UL
48#define GPIO_INT_HIGH 0x01010000UL
49#define GPIO_INT_LOW 0x01000001UL
51/*---------------------------------------------------------------------------------------------------------*/
52/* IMD Constant Definitions */
53/*---------------------------------------------------------------------------------------------------------*/
54#define GPIO_INTTYPE_EDGE 0UL
55#define GPIO_INTTYPE_LEVEL 1UL
57/*---------------------------------------------------------------------------------------------------------*/
58/* DBNCECON Constant Definitions */
59/*---------------------------------------------------------------------------------------------------------*/
60#define GPIO_DBCTL_ICLK_ON 0x00000020UL
61#define GPIO_DBCTL_ICLK_OFF 0x00000000UL
63#define GPIO_DBCTL_DBCLKSRC_IRC10K 0x00000010UL
64#define GPIO_DBCTL_DBCLKSRC_HCLK 0x00000000UL
66#define GPIO_DBCTL_DBCLKSEL_1 0x00000000UL
67#define GPIO_DBCTL_DBCLKSEL_2 0x00000001UL
68#define GPIO_DBCTL_DBCLKSEL_4 0x00000002UL
69#define GPIO_DBCTL_DBCLKSEL_8 0x00000003UL
70#define GPIO_DBCTL_DBCLKSEL_16 0x00000004UL
71#define GPIO_DBCTL_DBCLKSEL_32 0x00000005UL
72#define GPIO_DBCTL_DBCLKSEL_64 0x00000006UL
73#define GPIO_DBCTL_DBCLKSEL_128 0x00000007UL
74#define GPIO_DBCTL_DBCLKSEL_256 0x00000008UL
75#define GPIO_DBCTL_DBCLKSEL_512 0x00000009UL
76#define GPIO_DBCTL_DBCLKSEL_1024 0x0000000AUL
77#define GPIO_DBCTL_DBCLKSEL_2048 0x0000000BUL
78#define GPIO_DBCTL_DBCLKSEL_4096 0x0000000CUL
79#define GPIO_DBCTL_DBCLKSEL_8192 0x0000000DUL
80#define GPIO_DBCTL_DBCLKSEL_16384 0x0000000EUL
81#define GPIO_DBCTL_DBCLKSEL_32768 0x0000000FUL
97#define GPIO_PIN_ADDR(port, pin) (*((volatile uint32_t *)((GPIOBIT0_BASE+(0x20*(port))) + ((pin)<<2))))
98#define P00 GPIO_PIN_ADDR(0, 0)
99#define P01 GPIO_PIN_ADDR(0, 1)
100#define P02 GPIO_PIN_ADDR(0, 2)
101#define P03 GPIO_PIN_ADDR(0, 3)
102#define P04 GPIO_PIN_ADDR(0, 4)
103#define P05 GPIO_PIN_ADDR(0, 5)
104#define P06 GPIO_PIN_ADDR(0, 6)
105#define P07 GPIO_PIN_ADDR(0, 7)
106#define P10 GPIO_PIN_ADDR(1, 0)
107#define P11 GPIO_PIN_ADDR(1, 1)
108#define P12 GPIO_PIN_ADDR(1, 2)
109#define P13 GPIO_PIN_ADDR(1, 3)
110#define P14 GPIO_PIN_ADDR(1, 4)
111#define P15 GPIO_PIN_ADDR(1, 5)
112#define P16 GPIO_PIN_ADDR(1, 6)
113#define P17 GPIO_PIN_ADDR(1, 7)
114#define P20 GPIO_PIN_ADDR(2, 0)
115#define P21 GPIO_PIN_ADDR(2, 1)
116#define P22 GPIO_PIN_ADDR(2, 2)
117#define P23 GPIO_PIN_ADDR(2, 3)
118#define P24 GPIO_PIN_ADDR(2, 4)
119#define P25 GPIO_PIN_ADDR(2, 5)
120#define P26 GPIO_PIN_ADDR(2, 6)
121#define P27 GPIO_PIN_ADDR(2, 7)
122#define P30 GPIO_PIN_ADDR(3, 0)
123#define P31 GPIO_PIN_ADDR(3, 1)
124#define P32 GPIO_PIN_ADDR(3, 2)
125#define P33 GPIO_PIN_ADDR(3, 3)
126#define P34 GPIO_PIN_ADDR(3, 4)
127#define P35 GPIO_PIN_ADDR(3, 5)
128#define P36 GPIO_PIN_ADDR(3, 6)
129#define P37 GPIO_PIN_ADDR(3, 7)
130#define P40 GPIO_PIN_ADDR(4, 0)
131#define P41 GPIO_PIN_ADDR(4, 1)
132#define P42 GPIO_PIN_ADDR(4, 2)
133#define P43 GPIO_PIN_ADDR(4, 3)
134#define P44 GPIO_PIN_ADDR(4, 4)
135#define P45 GPIO_PIN_ADDR(4, 5)
136#define P46 GPIO_PIN_ADDR(4, 6)
137#define P47 GPIO_PIN_ADDR(4, 7)
138#define P50 GPIO_PIN_ADDR(5, 0)
139#define P51 GPIO_PIN_ADDR(5, 1)
140#define P52 GPIO_PIN_ADDR(5, 2)
141#define P53 GPIO_PIN_ADDR(5, 3)
142#define P54 GPIO_PIN_ADDR(5, 4)
143#define P55 GPIO_PIN_ADDR(5, 5) /* end of group Mini58_GPIO_EXPORTED_CONSTANTS */
146
161#define GPIO_CLR_INT_FLAG(gpio, u32PinMask) ((gpio)->INTSRC = u32PinMask)
162
173#define GPIO_DISABLE_DEBOUNCE(gpio, u32PinMask) ((gpio)->DBEN &= ~u32PinMask)
174
185#define GPIO_ENABLE_DEBOUNCE(gpio, u32PinMask) ((gpio)->DBEN |= u32PinMask)
186
197#define GPIO_DISABLE_DIGITAL_PATH(gpio, u32PinMask) ((gpio)->DINOFF |= (u32PinMask << 16))
198
209#define GPIO_ENABLE_DIGITAL_PATH(gpio, u32PinMask) ((gpio)->DINOFF &= ~(u32PinMask << 16))
210
221#define GPIO_DISABLE_DOUT_MASK(gpio, u32PinMask) ((gpio)->DATMSK &= ~u32PinMask)
222
233#define GPIO_ENABLE_DOUT_MASK(gpio, u32PinMask) ((gpio)->DATMSK |= u32PinMask)
234
246#define GPIO_GET_INT_FLAG(gpio, u32PinMask) ((gpio)->INTSRC & u32PinMask)
247
266#define GPIO_SET_DEBOUNCE_TIME(clksrc, clksel) (GPIO->DBCTL = (GP_DBCTL_ICLKON_Msk | clksrc | clksel))
267
277#define GPIO_GET_IN_DATA(gpio) ((gpio)->PIN)
278
289#define GPIO_SET_OUT_DATA(gpio, data) ((gpio)->DOUT = (data))
290
300#define GPIO_TOGGLE(u32Pin) ((u32Pin) ^= 1)
301
314#define GPIO_EnableEINT0 GPIO_EnableInt
315
316
327#define GPIO_DisableEINT0 GPIO_DisableInt
328
329
342#define GPIO_EnableEINT1 GPIO_EnableInt
343
344
355#define GPIO_DisableEINT1 GPIO_DisableInt
356
357
358 void GPIO_SetMode(GPIO_T *gpio, uint32_t u32PinMask, uint32_t u32Mode);
359 void GPIO_EnableInt(GPIO_T *gpio, uint32_t u32Pin, uint32_t u32IntAttribs);
360 void GPIO_DisableInt(GPIO_T *gpio, uint32_t u32Pin);
361
362
363 /* end of group Mini58_GPIO_EXPORTED_FUNCTIONS */
365 /* end of group Mini58_GPIO_Driver */
367 /* end of group Mini58_Device_Driver */
369
370#ifdef __cplusplus
371}
372#endif
373
374#endif //__GPIO_H__
375
376/*** (C) COPYRIGHT 2022 Nuvoton Technology Corp. ***/
GPIO_DisableInt
void GPIO_DisableInt(GPIO_T *gpio, uint32_t u32Pin)
Disable GPIO interrupt.
Definition: gpio.c:90
GPIO_SetMode
void GPIO_SetMode(GPIO_T *gpio, uint32_t u32PinMask, uint32_t u32Mode)
Set GPIO operation mode.
Definition: gpio.c:44
GPIO_EnableInt
void GPIO_EnableInt(GPIO_T *gpio, uint32_t u32Pin, uint32_t u32IntAttribs)
Enable GPIO interrupt.
Definition: gpio.c:73
GPIO_T
Definition: Mini58Series.h:1604