12 #include "hpm_gpio_regs.h"
13 #include "hpm_soc_feature.h"
15 #ifndef PORT_PIN_COUNT
16 #define PORT_PIN_COUNT (32U)
18 #define GPIO_GET_PORT_INDEX(x) (x / PORT_PIN_COUNT)
19 #define GPIO_GET_PIN_INDEX(x) (x % PORT_PIN_COUNT)
37 #if defined(GPIO_SOC_HAS_EDGE_BOTH_INTERRUPT) && (GPIO_SOC_HAS_EDGE_BOTH_INTERRUPT == 1)
38 gpio_interrupt_trigger_edge_both,
57 return (ptr->
DI[port].
VALUE & (1 << pin)) >> pin;
71 return (ptr->
DO[port].
VALUE & (1 << pin)) >> pin;
97 ptr->
DO[port].
SET = 1 << pin;
112 ptr->
OE[port].
CLEAR = 1 << pin;
124 ptr->
OE[port].
SET = 1 << pin;
148 return ptr->
IF[port].
VALUE & (1 << pin);
160 ptr->
IF[port].
VALUE = 1 << pin;
174 return (ptr->
IE[port].
VALUE & (1 << pin)) == (uint32_t) (1 << pin);
186 ptr->
IE[port].
SET = 1 << pin;
198 ptr->
IE[port].
CLEAR = 1 << pin;
279 ptr->
DO[port].
SET = mask;
291 ptr->
OE[port].
SET = mask;
341 ptr->
IE[port].
SET = mask;
gpio_interrupt_trigger
Interrupt trigger type.
Definition: hpm_gpio_drv.h:32
static void gpio_disable_port_output_with_mask(GPIO_Type *ptr, uint32_t port, uint32_t mask)
Disable pins output of specific port according to the given mask.
Definition: hpm_gpio_drv.h:301
static void gpio_set_pin_output(GPIO_Type *ptr, uint32_t port, uint8_t pin)
Set pin to output mode.
Definition: hpm_gpio_drv.h:122
static void gpio_set_port_low_with_mask(GPIO_Type *ptr, uint32_t port, uint32_t mask)
Set spcific port pin high according to the given mask.
Definition: hpm_gpio_drv.h:265
static void gpio_set_pin_input(GPIO_Type *ptr, uint32_t port, uint8_t pin)
Set pin to input mode.
Definition: hpm_gpio_drv.h:110
static void gpio_enable_port_output_with_mask(GPIO_Type *ptr, uint32_t port, uint32_t mask)
Enable pins output of specific port according to the given mask.
Definition: hpm_gpio_drv.h:289
static uint32_t gpio_get_pin_output_status(GPIO_Type *ptr, uint32_t port, uint8_t pin)
Read target pin output state.
Definition: hpm_gpio_drv.h:69
static bool gpio_check_pin_interrupt_enabled(GPIO_Type *ptr, uint32_t port, uint8_t pin)
Check if specific pin interrupt is enabled or not.
Definition: hpm_gpio_drv.h:172
static void gpio_disable_pin_interrupt(GPIO_Type *ptr, uint32_t port, uint8_t pin)
Disable interrupt for specific pin.
Definition: hpm_gpio_drv.h:196
void gpio_config_pin_interrupt(GPIO_Type *ptr, uint32_t port, uint8_t pin, gpio_interrupt_trigger_t trigger)
Config pin interrupt.
Definition: hpm_gpio_drv.c:32
static void gpio_write_port(GPIO_Type *ptr, uint32_t port, uint32_t value)
Write specific port with value.
Definition: hpm_gpio_drv.h:253
static void gpio_toggle_port_with_mask(GPIO_Type *ptr, uint32_t port, uint32_t mask)
Toggle port with specific pin mask.
Definition: hpm_gpio_drv.h:241
static bool gpio_check_pin_interrupt_flag(GPIO_Type *ptr, uint32_t port, uint8_t pin)
Check specific pin interrupt status.
Definition: hpm_gpio_drv.h:146
static void gpio_toggle_pin(GPIO_Type *ptr, uint32_t port, uint8_t pin)
Toggle pin level.
Definition: hpm_gpio_drv.h:81
static void gpio_clear_port_interrupt_flags_with_mask(GPIO_Type *ptr, uint32_t port, uint32_t mask)
Clear interrupt flags with given mask on specific port.
Definition: hpm_gpio_drv.h:327
static void gpio_set_port_high_with_mask(GPIO_Type *ptr, uint32_t port, uint32_t mask)
Set spcific port pin high according to the given mask.
Definition: hpm_gpio_drv.h:277
static bool gpio_check_clear_interrupt_flag(GPIO_Type *ptr, uint32_t port, uint8_t pin)
Check interrupt flag of specific pin and clear if it is set.
Definition: hpm_gpio_drv.h:211
static uint32_t gpio_get_port_interrupt_flags(GPIO_Type *ptr, uint32_t port)
Get current interrupt flags on specific port.
Definition: hpm_gpio_drv.h:314
void gpio_set_pin_output_with_initial(GPIO_Type *ptr, uint32_t port, uint8_t pin, uint8_t initial)
Set pin to output mode with initial value.
Definition: hpm_gpio_drv.c:67
static void gpio_enable_port_interrupt_with_mask(GPIO_Type *ptr, uint32_t port, uint8_t mask)
Enable interrupts with given mask on specific port.
Definition: hpm_gpio_drv.h:339
static void gpio_clear_pin_interrupt_flag(GPIO_Type *ptr, uint32_t port, uint8_t pin)
Clear specific pin interrupt flag.
Definition: hpm_gpio_drv.h:158
static uint8_t gpio_read_pin(GPIO_Type *ptr, uint32_t port, uint8_t pin)
Read target pin level.
Definition: hpm_gpio_drv.h:55
static void gpio_write_pin(GPIO_Type *ptr, uint32_t port, uint8_t pin, uint8_t high)
Write pin level.
Definition: hpm_gpio_drv.h:94
static void gpio_disable_port_interrupt_with_mask(GPIO_Type *ptr, uint32_t port, uint8_t mask)
Disable interrupts with given mask on specific port.
Definition: hpm_gpio_drv.h:351
void gpio_toggle_pin_interrupt_trigger_type(GPIO_Type *ptr, uint32_t port, uint8_t pin)
Toggle pin interrupt trigger type.
Definition: hpm_gpio_drv.c:21
enum gpio_interrupt_trigger gpio_interrupt_trigger_t
Interrupt trigger type.
static void gpio_enable_pin_interrupt(GPIO_Type *ptr, uint32_t port, uint8_t pin)
Enable interrupt for specific pin.
Definition: hpm_gpio_drv.h:184
static uint32_t gpio_read_port(GPIO_Type *ptr, uint32_t port)
Read all pins level on specific port.
Definition: hpm_gpio_drv.h:229
void gpio_toggle_pin_interrupt_trigger_polarity(GPIO_Type *ptr, uint32_t port, uint8_t pin)
Toggle pin interrupt trigger polarity.
Definition: hpm_gpio_drv.c:11
@ gpio_interrupt_trigger_level_low
Definition: hpm_gpio_drv.h:34
@ gpio_interrupt_trigger_edge_falling
Definition: hpm_gpio_drv.h:36
@ gpio_interrupt_trigger_level_high
Definition: hpm_gpio_drv.h:33
@ gpio_interrupt_trigger_edge_rising
Definition: hpm_gpio_drv.h:35
Definition: hpm_gpio_regs.h:12
__RW uint32_t CLEAR
Definition: hpm_gpio_regs.h:21
__RW uint32_t SET
Definition: hpm_gpio_regs.h:20
struct GPIO_Type::@295 OE[15]
struct GPIO_Type::@293 DI[15]
__R uint32_t VALUE
Definition: hpm_gpio_regs.h:14
struct GPIO_Type::@297 IE[15]
__RW uint32_t TOGGLE
Definition: hpm_gpio_regs.h:22
struct GPIO_Type::@294 DO[15]
struct GPIO_Type::@296 IF[15]