void test_gpio_input_interrupt(void)
{
gpio_interrupt_trigger_t trigger;
printf("input interrupt\n");
printf("user led will be switched on off based on user switch\n");
gpio_set_pin_output(BOARD_LED_GPIO_CTRL, BOARD_LED_GPIO_INDEX,
BOARD_LED_GPIO_PIN);
gpio_set_pin_input(BOARD_APP_GPIO_CTRL, BOARD_APP_GPIO_INDEX,
BOARD_APP_GPIO_PIN);
trigger = gpio_interrupt_trigger_edge_falling;
gpio_config_pin_interrupt(BOARD_APP_GPIO_CTRL, BOARD_APP_GPIO_INDEX,
BOARD_APP_GPIO_PIN, trigger);
gpio_enable_pin_interrupt(BOARD_APP_GPIO_CTRL, BOARD_APP_GPIO_INDEX,
BOARD_APP_GPIO_PIN);
intc_m_enable_irq_with_priority(BOARD_APP_GPIO_IRQ, 1);
while(1) {
__asm("wfi");
}
}
void test_gpio_toggle_output(void)
{
printf("toggling led %u times in total\n", GPIO_TOGGLE_COUNT);
gpio_set_pin_output(BOARD_LED_GPIO_CTRL, BOARD_LED_GPIO_INDEX,
BOARD_LED_GPIO_PIN);
gpio_write_pin(BOARD_LED_GPIO_CTRL, BOARD_LED_GPIO_INDEX,
BOARD_LED_GPIO_PIN, BOARD_LED_OFF_LEVEL);
for (uint32_t i = 0; i < GPIO_TOGGLE_COUNT; i++) {
gpio_toggle_pin(BOARD_LED_GPIO_CTRL, BOARD_LED_GPIO_INDEX,
BOARD_LED_GPIO_PIN);
board_delay_ms(500);
gpio_toggle_pin(BOARD_LED_GPIO_CTRL, BOARD_LED_GPIO_INDEX,
BOARD_LED_GPIO_PIN);
board_delay_ms(500);
printf("toggling led %u/%u times\n", i + 1, GPIO_TOGGLE_COUNT);
}
}
void isr_gpio(void)
{
gpio_clear_pin_interrupt_flag(BOARD_APP_GPIO_CTRL, BOARD_APP_GPIO_INDEX,
BOARD_APP_GPIO_PIN);
gpio_toggle_pin(BOARD_LED_GPIO_CTRL, BOARD_LED_GPIO_INDEX,
BOARD_LED_GPIO_PIN);
printf("toggle led pin output\n");
printf("user key pressed\n");
}
作者:小小毛, 来源:面包板社区
链接:https://mbb.eet-china.com/forum/topic/123572_1_1.html
版权声明:本文为博主原创,未经本人允许,禁止转载!
☝长按图片,扫码申请☝