GPIO Examples

Table of Contents


Variables used in the following cases are defined as below

#define LED1 GPIO_PD0
#define LED2 GPIO_PD3
#define LED3 GPIO_PD4
#define LED4 GPIO_PD5
#define SW1 GPIO_PD1
#define SW2 GPIO_PD2
volatile unsigned int gpio_irq_cnt;

API-GPIO-CASE1:GPIO IRQ

Function Sub-Function APIs Description Update Status
irq_handler() if((reg_irq_src & FLD_IRQ_GPIO_EN)==FLD_IRQ_GPIO_EN) determine whether interrupt flag is right 2019-1-10
reg_irq_src Ι= FLD_IRQ_GPIO_EN clear interrrupt flag
gpio_irq_cnt++ Interrupt processing
main() cpu_wakeup_init() CPU initialization function [Mandatory]
clock_init() clock_init(SYS_CLK_24M_Crystal) Clock initialization function, System Clock is 24M RC by default [optional]
rf_drv_init() rf_drv_init(RF_MODE_BLE_1M) RF mode initialization [optional]
gpio_init(1) GPIO initialization: set the initialization status of all GPIOs [optional]
user_init() gpio_set_func() gpio_set_func(SW1 ,AS_GPIO) set pin as GPIO
gpio_set_output_en() gpio_set_output_en(SW1, 0) disable GPIO output
gpio_set_input_en() gpio_set_input_en(SW1 ,1) enable GPIO input
gpio_setup_up_down_resistor() gpio_setup_up_down_resistor(SW1, PM_PIN_PULLUP_10K) enable GPIO 10k resistor pull-up
gpio_set_interrupt() gpio_set_interrupt(SW1, POL_FALLING) set pin as GPIO interrupt
main_loop() None Main program loop

API-GPIO-CASE2:GPIO IRQ RSIC0

Function Sub-Function APIs Description Update Status
irq_handler() if((reg_irq_src & FLD_IRQ_GPIO_RISC0_EN)==FLD_IRQ_GPIO_RISC0_EN) determine whether interrupt flag is right 2019-1-10
reg_irq_src Ι= FLD_IRQ_GPIO_RISC0_EN clear interrrupt flag
gpio_irq_cnt++ Interrupt processing
main() cpu_wakeup_init() CPU initialization function [Mandatory]
clock_init() clock_init(SYS_CLK_24M_Crystal) Clock initialization function, System Clock is 24M RC by default [optional]
rf_drv_init() rf_drv_init(RF_MODE_BLE_1M) RF mode initialization [optional]
gpio_init(1) GPIO initialization: set the initialization status of all GPIOs [optional]
user_init() gpio_set_func() gpio_set_func(SW1 ,AS_GPIO) set pin as GPIO
gpio_set_output_en() gpio_set_output_en(SW1, 0) disable GPIO output
gpio_set_input_en() gpio_set_input_en(SW1 ,1) enable GPIO input
gpio_setup_up_down_resistor() gpio_setup_up_down_resistor(SW1, PM_PIN_PULLUP_10K) enable GPIO 10k resistor pull-up
gpio_set_interrupt_risc0() gpio_set_interrupt_risc0(SW1, POL_FALLING) set pin as GPIO interrupt risc0
main_loop() None Main program loop

API-GPIO-CASE3:GPIO IRQ RSIC1

Function Sub-Function APIs Description Update Status
irq_handler() if((reg_irq_src & FLD_IRQ_GPIO_RISC1_EN)==FLD_IRQ_GPIO_RISC1_EN) determine whether interrupt flag is right 2019-1-10
reg_irq_src Ι= FLD_IRQ_GPIO_RISC1_EN clear interrrupt flag
gpio_irq_cnt++ Interrupt processing
main() cpu_wakeup_init() CPU initialization function [Mandatory]
clock_init() clock_init(SYS_CLK_24M_Crystal) Clock initialization function, System Clock is 24M RC by default [optional]
rf_drv_init() rf_drv_init(RF_MODE_BLE_1M) RF mode initialization [optional]
gpio_init(1) GPIO initialization: set the initialization status of all GPIOs [optional]
user_init() gpio_set_func() gpio_set_func(SW1 ,AS_GPIO) set pin as GPIO
gpio_set_output_en() gpio_set_output_en(SW1, 0) disable GPIO output
gpio_set_input_en() gpio_set_input_en(SW1 ,1) enable GPIO input
gpio_setup_up_down_resistor() gpio_setup_up_down_resistor(SW1, PM_PIN_PULLUP_10K) enable GPIO 10k resistor pull-up
gpio_set_interrupt_risc1() gpio_set_interrupt_risc1(SW1, POL_FALLING) set pin as GPIO interrupt risc1
main_loop() None Main program loop

API-GPIO-CASE4:GPIO TOGGLE

Function Sub-Function APIs Description Update Status
irq_handler() none Interrupt handler function 2019-1-10
main() cpu_wakeup_init() CPU initialization function [Mandatory]
clock_init() clock_init(SYS_CLK_24M_Crystal) Clock initialization function, System Clock is 24M RC by default [optional]
rf_drv_init() rf_drv_init(RF_MODE_BLE_1M) RF mode initialization [optional]
gpio_init(1) GPIO initialization: set the initialization status of all GPIOs [optional]
user_init() gpio_set_func() gpio_set_func(LED1 ,AS_GPIO) set pin as GPIO
gpio_set_output_en() gpio_set_output_en(LED1, 1) disable GPIO output
gpio_set_input_en() gpio_set_input_en(LED1 ,0) enable GPIO input
gpio_write(), gpio_read() gpio_write(LED1, !gpio_read(LED1)) toggle GPIO
gpio_toggle() gpio_toggle(LED1) toggle GPIO
main_loop() None Main program loop

API-GPIO-CASE5:GPIO HIGH RESISTOR

Function Sub-Function APIs Description Update Status
irq_handler() none Interrupt handler function 2019-1-10
main() cpu_wakeup_init() CPU initialization function [Mandatory]
clock_init() clock_init(SYS_CLK_24M_Crystal) Clock initialization function, System Clock is 24M RC by default [optional]
rf_drv_init() rf_drv_init(RF_MODE_BLE_1M) RF mode initialization [optional]
gpio_init(1) GPIO initialization: set the initialization status of all GPIOs [optional]
user_init() gpio_shutdown() gpio_shutdown(GPIO_ALL) set all GPIOs as high resistor
main_loop() None Main program loop

History Record

Date Description Author
2019-1-10 initial release LJW