Astra MCU SDK Peripheral Driver Library
 
Loading...
Searching...
No Matches
gpio.h
1
16
17#ifndef GPIO_DRIVER_H
18#define GPIO_DRIVER_H
19
20#include <stdbool.h>
21#include "gpio_registers.h"
22#include "syna_device.h"
23
24/***************************************************************************/
91
92/*******************************************************************************
93* Enumerated Types
94*******************************************************************************/
100
109
134
136
137/*******************************************************************************
138* Type definitions
139*******************************************************************************/
145
162
164
165/*******************************************************************************
166* Function Prototypes
167*******************************************************************************/
173
174/*******************************************************************************
175* Function Name: gpio_init
176****************************************************************************/
189
190/*******************************************************************************
191* Function Name: gpio_deinit
192****************************************************************************/
204
205/*******************************************************************************
206* Function Name: gpio_pin_set_config
207****************************************************************************/
225 uint32_t pin,
226 gpio_pin_config_t *pin_config);
227
228/*******************************************************************************
229* Function Name: gpio_pin_get_config
230****************************************************************************/
248 uint32_t pin,
249 gpio_pin_config_t *pin_config);
250
251/*******************************************************************************
252* Function Name: gpio_pin_write
253****************************************************************************/
271 uint32_t pin,
272 uint32_t out);
273
274/*******************************************************************************
275* Function Name: gpio_pin_read
276****************************************************************************/
293 uint32_t pin, uint32_t *out);
294
295/*******************************************************************************
296* Function Name: gpio_pin_enable_int
297****************************************************************************/
315 uint32_t pin,
316 bool enable);
317
318/*******************************************************************************
319* Function Name: gpio_pin_mask_int
320****************************************************************************/
338 uint32_t pin,
339 bool enable);
340
341/*******************************************************************************
342* Function Name: gpio_pin_clear_int
343****************************************************************************/
358 uint32_t pin);
359
360/*******************************************************************************
361* Function Name: gpio_get_pin_int_stat
362****************************************************************************/
382 uint32_t pin,
383 bool raw, bool *stat);
385
391
392/*******************************************************************************
393* Function Name: gpio_port_write
394****************************************************************************/
407__STATIC_INLINE void gpio_port_write(gpio_instance_en id,
408 uint32_t mask)
409{
410 GPIO_SWPORTA_DR(GPIO_BASE_ADDR_FROM_ID(id)) = mask;
411}
412
413/*******************************************************************************
414* Function Name: gpio_port_read
415****************************************************************************/
425__STATIC_INLINE uint32_t gpio_port_read(gpio_instance_en id)
426{
427 return GPIO_EXT_PORTA(GPIO_BASE_ADDR_FROM_ID(id));
428}
429
430/*******************************************************************************
431* Function Name: gpio_port_set_direction
432****************************************************************************/
446 uint32_t mask)
447{
448 GPIO_SWPORTA_DDR(GPIO_BASE_ADDR_FROM_ID(id)) = mask;
449}
450
451/*******************************************************************************
452* Function Name: gpio_port_get_direction
453****************************************************************************/
463__STATIC_INLINE uint32_t gpio_port_get_direction(gpio_instance_en id)
464{
465 return GPIO_SWPORTA_DDR(GPIO_BASE_ADDR_FROM_ID(id));
466}
467
468/*******************************************************************************
469* Function Name: gpio_port_set_int_enable
470****************************************************************************/
484 uint32_t mask)
485{
486 GPIO_INTEN(GPIO_BASE_ADDR_FROM_ID(id)) = mask;
487}
488
489/*******************************************************************************
490* Function Name: gpio_port_get_int_enable
491****************************************************************************/
501__STATIC_INLINE uint32_t gpio_port_get_int_enable(gpio_instance_en id)
502{
503 return GPIO_INTEN(GPIO_BASE_ADDR_FROM_ID(id));
504}
505
506/*******************************************************************************
507* Function Name: gpio_port_set_int_mask
508****************************************************************************/
522 uint32_t mask)
523{
524 GPIO_INTMASK(GPIO_BASE_ADDR_FROM_ID(id)) = mask;
525}
526
527/*******************************************************************************
528* Function Name: gpio_port_get_int_mask
529****************************************************************************/
539__STATIC_INLINE uint32_t gpio_port_get_int_mask(gpio_instance_en id)
540{
541 return GPIO_INTMASK(GPIO_BASE_ADDR_FROM_ID(id));
542}
543
544/*******************************************************************************
545* Function Name: gpio_port_set_int_type
546****************************************************************************/
560 uint32_t mask)
561{
562 GPIO_INTTYPE_LEVEL(GPIO_BASE_ADDR_FROM_ID(id)) = mask;
563};
564
565/*******************************************************************************
566* Function Name: gpio_port_get_int_type
567****************************************************************************/
577__STATIC_INLINE uint32_t gpio_port_get_int_type(gpio_instance_en id)
578{
579 return GPIO_INTTYPE_LEVEL(GPIO_BASE_ADDR_FROM_ID(id));
580}
581
582/*******************************************************************************
583* Function Name: gpio_port_set_int_bothedge
584****************************************************************************/
598 uint32_t mask)
599{
600 GPIO_INT_BOTHEDGE(GPIO_BASE_ADDR_FROM_ID(id)) = mask;
601}
602
603/*******************************************************************************
604* Function Name: gpio_port_get_int_bothedge
605****************************************************************************/
616{
617 return GPIO_INT_BOTHEDGE(GPIO_BASE_ADDR_FROM_ID(id));
618}
619
620/*******************************************************************************
621* Function Name: gpio_port_set_int_polarity
622****************************************************************************/
636 uint32_t mask)
637{
638 GPIO_INT_POLARITY(GPIO_BASE_ADDR_FROM_ID(id)) = mask;
639}
640
641/*******************************************************************************
642* Function Name: gpio_port_get_int_polarity
643****************************************************************************/
654{
655 return GPIO_INT_POLARITY(GPIO_BASE_ADDR_FROM_ID(id));
656}
657
658/*******************************************************************************
659* Function Name: gpio_port_get_int_status
660****************************************************************************/
670__STATIC_INLINE uint32_t gpio_port_get_int_status(gpio_instance_en id)
671{
672 return GPIO_INTSTATUS(GPIO_BASE_ADDR_FROM_ID(id));
673}
674
675/*******************************************************************************
676* Function Name: gpio_port_get_rawint_status
677****************************************************************************/
688{
689 return GPIO_RAW_INTSTATUS(GPIO_BASE_ADDR_FROM_ID(id));
690}
691
692/*******************************************************************************
693* Function Name: gpio_port_set_debounce
694****************************************************************************/
707__STATIC_INLINE void gpio_port_set_debounce(gpio_instance_en id, uint32_t mask)
708{
709 GPIO_DEBOUNCE(GPIO_BASE_ADDR_FROM_ID(id)) = mask;
710}
711
712/*******************************************************************************
713* Function Name: gpio_port_get_debounce
714****************************************************************************/
724__STATIC_INLINE uint32_t gpio_port_get_debounce(gpio_instance_en id)
725{
726 return GPIO_DEBOUNCE(GPIO_BASE_ADDR_FROM_ID(id));
727}
728
729/*******************************************************************************
730* Function Name: gpio_clear_edge_int
731****************************************************************************/
744__STATIC_INLINE void gpio_clear_edge_int(gpio_instance_en id,
745 uint32_t mask)
746{
747 GPIO_PORTA_EOI(GPIO_BASE_ADDR_FROM_ID(id)) = mask;
748}
749
750
752
753#endif /* GPIO_DRIVER_H */
gpio_instance_en
Enumeration for available GPIO port instances.
Definition sr110.h:150
gpio_int_level_en
Interrupt level or edge selection.
Definition gpio.h:105
gpio_status_en
Return status for GPIO driver.
Definition gpio.h:117
@ GPIO_INT_LEVEL_LOW
Definition gpio.h:106
@ GPIO_INT_LEVEL_HIGH
Definition gpio.h:107
@ GPIO_ERROR_PIN_NOT_IN_USE
Definition gpio.h:127
@ GPIO_OK
Definition gpio.h:118
@ GPIO_ERROR_PIN_NOT_IN_PORT
Definition gpio.h:131
@ GPIO_ERROR_NOT_OUTPUT
Definition gpio.h:132
@ GPIO_ERROR_ILLEGAL_DIRECTION
Definition gpio.h:129
@ GPIO_ERROR_PARAMETER
Definition gpio.h:123
@ GPIO_ERROR_BUSY
Definition gpio.h:120
@ GPIO_ERROR_UNSUPPORTED
Definition gpio.h:122
@ GPIO_ERROR
Definition gpio.h:119
@ GPIO_ERROR_INVALID_CONFIG
Definition gpio.h:124
@ GPIO_ERROR_TIMEOUT
Definition gpio.h:121
@ GPIO_ERROR_PINS_MUX_NOT_GPIO
Definition gpio.h:128
@ GPIO_ERROR_INITIALIZED
Definition gpio.h:125
@ GPIO_ERROR_ALL_PINS_UNAVAILABLE
Definition gpio.h:126
gpio_status_en gpio_pin_write(gpio_instance_en id, uint32_t pin, uint32_t out)
gpio_status_en gpio_pin_enable_int(gpio_instance_en id, uint32_t pin, bool enable)
gpio_status_en gpio_pin_set_config(gpio_instance_en id, uint32_t pin, gpio_pin_config_t *pin_config)
gpio_status_en gpio_deinit(gpio_instance_en id)
gpio_status_en gpio_pin_clear_int(gpio_instance_en id, uint32_t pin)
gpio_status_en gpio_pin_get_config(gpio_instance_en id, uint32_t pin, gpio_pin_config_t *pin_config)
gpio_status_en gpio_pin_read(gpio_instance_en id, uint32_t pin, uint32_t *out)
gpio_status_en gpio_init(gpio_instance_en id)
gpio_status_en gpio_pin_mask_int(gpio_instance_en id, uint32_t pin, bool enable)
gpio_status_en gpio_get_pin_int_stat(gpio_instance_en id, uint32_t pin, bool raw, bool *stat)
__STATIC_INLINE void gpio_port_write(gpio_instance_en id, uint32_t mask)
Definition gpio.h:407
__STATIC_INLINE void gpio_port_set_int_bothedge(gpio_instance_en id, uint32_t mask)
Definition gpio.h:597
__STATIC_INLINE uint32_t gpio_port_get_int_polarity(gpio_instance_en id)
Definition gpio.h:653
__STATIC_INLINE uint32_t gpio_port_get_int_type(gpio_instance_en id)
Definition gpio.h:577
__STATIC_INLINE uint32_t gpio_port_get_debounce(gpio_instance_en id)
Definition gpio.h:724
__STATIC_INLINE void gpio_port_set_debounce(gpio_instance_en id, uint32_t mask)
Definition gpio.h:707
__STATIC_INLINE void gpio_port_set_int_enable(gpio_instance_en id, uint32_t mask)
Definition gpio.h:483
__STATIC_INLINE uint32_t gpio_port_get_rawint_status(gpio_instance_en id)
Definition gpio.h:687
__STATIC_INLINE void gpio_port_set_int_polarity(gpio_instance_en id, uint32_t mask)
Definition gpio.h:635
__STATIC_INLINE uint32_t gpio_port_get_int_bothedge(gpio_instance_en id)
Definition gpio.h:615
__STATIC_INLINE uint32_t gpio_port_read(gpio_instance_en id)
Definition gpio.h:425
__STATIC_INLINE uint32_t gpio_port_get_int_mask(gpio_instance_en id)
Definition gpio.h:539
__STATIC_INLINE void gpio_port_set_direction(gpio_instance_en id, uint32_t mask)
Definition gpio.h:445
__STATIC_INLINE uint32_t gpio_port_get_int_status(gpio_instance_en id)
Definition gpio.h:670
__STATIC_INLINE void gpio_port_set_int_mask(gpio_instance_en id, uint32_t mask)
Definition gpio.h:521
__STATIC_INLINE uint32_t gpio_port_get_int_enable(gpio_instance_en id)
Definition gpio.h:501
__STATIC_INLINE void gpio_port_set_int_type(gpio_instance_en id, uint32_t mask)
Definition gpio.h:559
__STATIC_INLINE void gpio_clear_edge_int(gpio_instance_en id, uint32_t mask)
Definition gpio.h:744
__STATIC_INLINE uint32_t gpio_port_get_direction(gpio_instance_en id)
Definition gpio.h:463
Configuration for a single GPIO pin.
Definition gpio.h:153
bool debounce
Definition gpio.h:160
gpio_int_level_en level
Definition gpio.h:159
bool both_edge_int
Definition gpio.h:158
bool int_en
Definition gpio.h:155
bool int_mask
Definition gpio.h:156
bool out_en
Definition gpio.h:154
bool edge_int
Definition gpio.h:157