单片机GD32F303RCT6 (Macos环境)开发 (八)—— GPIO外部中断输入

文章讲述了在GD32F303RCT6微控制器上,如何配置GPIO外部中断,特别是针对UserKey按键的PA1引脚。当UserKey被按下时,会触发EXTI1_IRQHandler中断处理函数,通过串口打印信息。配置包括使能GPIOA时钟,设置PA1为上拉输入,选择中断源并设定下降沿触发。
摘要由CSDN通过智能技术生成

GPIO外部中断输入

1、GD32F303RCT6内部由20多条中断线,给gpio用的有16条,对应关系如图:
在这里插入图片描述

开发版的User Key连接PA1,所以用的是1这条中断线,而0、1、2、3、4这五条中断线有各自对应的中断函数,EXTI0_IRQHandler,EXTI1_IRQHandler,EXTI2_IRQHandler,EXTI3_IRQHandler,EXTI4_IRQHandler。5-9中断线对应EXTI5_9_IRQHandler中断函数,10-15对应EXTI10_15_IRQHandler中断函数。
2、在按下UserKey后,我们用串口打印一句话。效果如图:
在这里插入图片描述
3、新增key_input.c key_input.h文件

key_input.c

#include "main.h"
#include "key_inpu.h"
#include "gd32f30x.h"

#if ENABLE_KEY_INPUT_TEST == 1

void key_input_config(void)
{
    //配置PA1外部中断
	rcu_periph_clock_enable(RCU_GPIOA);//GPIOA时钟使能
    gpio_init(GPIOA, GPIO_MODE_IPU, GPIO_OSPEED_50MHZ, GPIO_PIN_1);//PA1配置成上拉输入
	nvic_irq_enable(EXTI1_IRQn, 2U, 0U);//enable and set key EXTI interrupt to the lowest priority 
    gpio_exti_source_select(GPIO_PORT_SOURCE_GPIOA, GPIO_PIN_SOURCE_1);//connect key EXTI line to key GPIO pin
	exti_init(EXTI_1, EXTI_INTERRUPT, EXTI_TRIG_FALLING);//下降沿中断
	exti_interrupt_flag_clear(EXTI_1);//清中断标志
}

#endif //ENABLE_KEY_INPUT_TEST == 1

key_input.h

#ifndef __KEY_INPUT_H__
#define __KEY_INPUT_H__

#define ENABLE_KEY_INPUT_TEST 1

#if ENABLE_KEY_INPUT_TEST == 1

void key_input_config(void);

#endif //ENABLE_KEY_INPUT_TEST == 1

#endif //__KEY_INPUT_H__

gd32f30x_it.c 中新增中断处理函数

#if ENABLE_KEY_INPUT_TEST == 1
void EXTI1_IRQHandler(void)
{
    exti_interrupt_flag_clear(EXTI_1);
    delay_1ms(20);
    if (gpio_input_bit_get(GPIOA,GPIO_PIN_1) == RESET)
    {
        printf("User Key Press!\r\n");
    }

}
#endif 
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值