【GD32H757Z海棠派开发板使用手册】第三讲 EXTI-按键中断检测实验

发布者:BlissfulJourney最新更新时间:2024-12-12 来源: elecfans关键字:EXTI 手机看文章 扫描二维码
随时随地手机看文章

3.1实验内容

通过本实验主要学习以下内容:

  • EXTI中断原理;

  • 按键中断检测原理;

3.2实验原理

3.2.1NVIC中断向量控制器

介绍EXTI之前,首先为各位读者介绍NVIC中断向量控制器,NVIC为M7内核组件,用于实现高效的异常和中断处理。NVIC可以支持抢占以及咬尾中断,具有多达217种外设中断以及4位中断优先等级配置(最多支持16个中断有限等级),当中断或异常产生时,系统自动将当前处理器工作状态压栈,在执行完中断服务子程序(ISR) 后自动将其出栈。

有关NVIC中断相关配置函数可参考gd32h7xx_misc.c,其中主要有以下几个函数,其功能简介如下表所示。

wKgaomYgeIuAbuq1AAGck6w07t4329.png?imageView2/2/w/1000

3.2.2EXTI中断原理

EXTI为外部中断/事件控制器,GD32H7系列MCU EXTI可以最多支持38个相互独立的边沿检测电路并且能够向处理器内核产生中断请求或唤醒事件。EXTI有三种触发类型:上升沿触发、下降沿触发和任意沿触发。EXTI中的每一个边沿检测电路都可以独立配置和屏蔽。

EXTI框图如下图所示,极性控制用于控制边沿检测,可实现对外部EXTI信号线进行检测判断,当符合相关极性配置的EXTI信号出现后,将会发出EXTI请求,硬件EXTI请求与内部软件触发信号相或,然后输出给NVIC中断向量控制器产生中断以及输出至唤醒单元进行唤醒,也即是内部软件也可以触发相关请求。

wKgZomYgeL-AR6F6AABcSvhoh_c460.png?imageView2/2/w/1000

EXTI相关触发源如下表所示,所有的GPIO均可以触发EXTI,另外LVD、RTC闹钟、USB唤醒以及以太网唤醒也可以触发EXTI中断或事件,EXTI可用于唤醒深度睡眠模式下的MCU。

wKgaomYgeM-AYF32AAE7qa8O_B0583.png?imageView2/2/w/1000wKgZomYgeNWAZ4rIAACAXV7GV-k062.png?imageView2/2/w/1000

注意:相同编号的引脚共用中断入口,比如PA0、PB0、PC0均使用EXTI0中断线,读者在使用时需注意不同的EXTI中断需要使用不同编号的GPIO引脚。

•软件触发EXTI中断请求可通过设置EXTI_SWIEV软件中断事件寄存器实现,如下图所示,设置相应控制位为1,即可实现软件触发EXTI中断请求。

wKgZomYgeO2ATxxvAAEDAVUxq1s907.png?imageView2/2/w/1000wKgZomYgePKAPsG7AADI2AZ267c216.png?imageView2/2/w/1000

3.3硬件设计

本例程所使用的电路也为按键电路,具体可参考2.4章节描述。

3.4代码解析

3.4.1主函数代码解析

主函数代码如下所示,主要包括驱动初始化、LED初始化、key按键结构体初始化(此处将用户按键配置为中断模式,并将中断回调函数注册为USER_KEY_IRQHandler)、串口初始化以及NVIC配置,用户按键使用的是PA1引脚,因而使能EXTI1_IRQn中断号,延迟1S后,打印Example of key interrupt detection,之后进入主循环,在主循环中查询USER_KEY.press_timerms标志位,当USER_KEY被按键触发中断后,该标志将会被设置为PRESS_DOWN,然后被主循环检测到后,将会打印USER_KEY is pressed to trigger an interrupt。

C
int main(void)
{
driver_init();
bsp_led_group_init();
bsp_led_on(&LED2);
bsp_led_off(&LED1);

/* 配置按键为中断模式,并注册按键回调函数 */
USER_KEY.key_gpio->gpio_mode = INT_LOW;
USER_KEY.key_gpio->int_callback = USER_KEY_IRQHandler;
bsp_key_init(&USER_KEY);
nvic_irq_enable(EXTI1_IRQn,0,0);

bsp_uart_init(&BOARD_UART);
delay_ms(1000);
printf_log('Example of key interrupt detection.rn');

while (1)
{
if(USER_KEY.press_timerms == PRESS_DOWN)
{
/* 检测到按键被按下 */
USER_KEY.press_timerms = PRESS_NONE;
printf_log('USER_KEY is pressed to trigger an interrupt.rn');
}
}
}

3.4.2按键中断回调函数

按键中断回调函数如下所示,该函数在dvire_gpio_exti_handle中被调用,dvire_gpio_exti_handle在EXTI1_IRQHandler中被调用,其中EXTI2_IRQHandler为EXTI2的中断服务程序入口。

C
void USER_KEY_IRQHandler(typdef_gpio_general *KEYx_IO)
{
if(SET==bsp_key_state_get(&USER_KEY))
{
USER_KEY.press_timerms=PRESS_DOWN;
bsp_led_toggle(&LED2);
bsp_led_toggle(&LED1);
}
}

void dvire_gpio_exti_handle(typdef_gpio_general *gpio)
{
bit_status int_input_bit=RESET;
if(exti_flag_get(gpio->extix)==SET)
{
exti_flag_clear(gpio->extix);
int_input_bit=dvire_gpio_pin_filter_get(gpio);

if( (gpio->gpio_mode==INT_LOW && int_input_bit==RESET) || (gpio->gpio_mode==INT_HIGH && int_input_bit==SET) )
{
if(gpio->int_callback!=NULL)
{
gpio->int_callback((typdef_gpio_general *)gpio);
}
}
}
}
void EXTI1_IRQHandler(void)
{
dvire_gpio_exti_handle(USER_KEY.key_gpio);
}

3.5实验结果

将本例程烧录到海棠派开发板中,在液晶上首先将会打印Example of key interrupt detection.,之后按下USER_KEY按键后,将会打印:USER_KEYis pressed to trigger an interrupt.。


关键字:EXTI 引用地址:【GD32H757Z海棠派开发板使用手册】第三讲 EXTI-按键中断检测实验

上一篇:【GD32F470紫藤派开发板使用手册】第十讲 USART-中断串口收发实验
下一篇:【GD32F470紫藤派开发板使用手册】第四讲 FMC-片内Flash擦写读实验

推荐阅读最新更新时间:2026-03-25 06:30

GD32H757Z海棠开发板使用手册】第二讲 GPIO-按键查询检测实验
2.1实验内容 通过本实验主要学习以下内容: GPIO输入功能原理; 按键查询输入检测原理; 2.2实验原理 2.2.1GPIO输入功能原理 GD32H7XX系列MCU GPIO输入配置结构如下图所示,输入可配置上下拉电阻,通过施密特触发器后可通过备用功能输入或者通过输入状态寄存器进行读取。 输入状态寄存器为GPIOx_ISTAT,其状态位定义如下图所示,每个控制位对应相应引脚的输入电平状态。 GPIO引脚输入电平判断阈值如下图所示,当输入电平小于0.3VDD时,可被内部有效识别为低电平;当输入电平大于0.7VDD时,可被内部有效识别为高电平。 2.3硬件设计 GD32H7海棠派派开发板具有两个按键,对应电路图如
[单片机]
【<font color='red'>GD32H757Z</font><font color='red'>海棠</font><font color='red'>派</font><font color='red'>开发板</font>使用手册】第二讲 GPIO-<font color='red'>按键</font>查询<font color='red'>检测</font>实验
GD32H757Z海棠开发板使用手册】第九讲 USART-printf打印实验
9.1实验内容 通过本实验主要学习以下内容: 串口简介 GD32H757串口工作原理 使用printf打印信息 9.2实验原理 9.2.1串口简介 串口,从广义上看,指所有串行通信接口,比如RS232、RS422、RS485、SPI、IIC等。串行通讯是指仅用一根接收线和一根发送线就能将数据以位进行传输的通讯方式。和串行通讯相对应的是并行通讯,并行通信指一个传输接口可以传输8个bit即一个byte(有时甚至更多),虽然串行通信比并行通信慢,但是串口可以在仅仅使用两根线的情况下就能实现数据的传输。 对于GD32H757来说,串口一般特指USART(通用同步异步收发器 )和UART(通用异步收发器 )。USART/UART提供
[单片机]
【<font color='red'>GD32H757Z</font><font color='red'>海棠</font><font color='red'>派</font><font color='red'>开发板</font>使用手册】第九讲 USART-printf打印实验
玩转 ESP32 + Arduino (四) 电容按键 霍尔传感器 外部中断 延时 脉冲检测
一. 电容输入 touchRead(pin) 及电容输入中断touchAttachInterrupt(pin, TSR , threshold) ESP32专门提供了电容触摸传感器的功能, 共有T0,T2~T9 共 9个touch传感器可用.分别对应引脚4、2、15、13、12、14、27、33、32. 无需设置PinMode touchRead(pin) 返回值 0~255. 触摸强度 注意: 摸得越瓷实,数值越小 void setup(){ Serial.begin(9600);}void loop(){ Serial.printf( touch:%dn ,touchRead(4));} touchAttachInter
[单片机]
【GD32F470紫藤开发板使用手册】第三讲 EXTI-按键中断检测实验
3.1实验内容 通过本实验主要学习以下内容: EXTI中断原理; 按键中断检测原理; 3.2实验原理 3.2.1NVIC中断向量控制器 介绍EXTI之前,首先为各位读者介绍NVIC中断向量控制器,NVIC为M4内核组件,用于实现高效的异常和中断处理。NVIC可以支持抢占以及咬尾中断,具有多达68种外设中断以及4位中断优先等级配置(最多支持16个中断有限等级),当中断或异常产生时,系统自动将当前处理器工作状态压栈,在执行完中断服务子程序(ISR) 后自动将其出栈。 有关NVIC中断相关配置函数可参考gd32f4xx_misc.c,其中主要有以下几个函数,其功能简介如下表所示。 3.2.2EXTI中断原理 EXTI为外部中断
[单片机]
【GD32F470紫藤<font color='red'>派</font><font color='red'>开发板</font>使用手册】第三讲 <font color='red'>EXTI</font>-<font color='red'>按键</font><font color='red'>中断</font><font color='red'>检测</font>实验
MSP430利用IO中断方式来实现按键检测
/************************************************************************ **********MSP430F14-利用IO中断方式实现按键检测程序*********** 以下是结合MC430F14开发板来实现的按键检处理程序实验。分别使用了采个三个按键接到MSP430的通用IO口,按任意一个按键可以使板上的LED反转。例程中,单片机一直处于最低功耗状态,用户可以通过按下按键后唤醒单片机。单片机唤醒后再进行去抖动动作,同时执行键处理程序;处理完后再次进入LPM4低功耗模式。 在本程序中用户可以灵活地修改程序来实现你相关的功能。 本程序适用在手持设备或电池
[单片机]
第七节:在主函数中利用累计定时中断的次数来检测按键
开场白: 上一节讲了在主函数中利用累计主循环次数来实现独立按键的检测,但是它也有一个小小的不足,随着在主函数中任务量的增加,为了保证去抖动延时的时间一致性,要适当调整一下去抖动的时间阀值const_key_time1。如何解决这个问题呢?这一节教大家在主函数中利用累计定时中断的次数来实现独立按键的检测,可以有效地避免这个问题。要教会大家一个知识点:如何在上一节的基础上,略作修改,就可以在主函数中,利用累计定时中断的次数来实现去抖动的延时。 具体内容,请看源代码讲解。 (1)硬件平台:基于朱兆祺51单片机学习板。用矩阵键盘中的S1和S5号键作为独立按键,记得把输出线P0.4一直输出低电平,模拟独立按键的触发地GND。
[单片机]
揭秘32单片机外部中断工作机制
STM32F103ZET6的系统中断有10个,外部中断有60个 1、中断的概念 中断是为使单片机具有对外部或内部随机发生的事件实时处理而设置的,中断功能的存在,很大程度上提高了单片机处理外部或内部事件的能力 eg::你打开火, 烧上一壶水。然后去洗衣服,在洗衣服的过程中,突然听到水壶发出水开的报警声,这时,你停止洗衣服动作,立即去关掉火,然后将开水灌入暖水瓶中,灌完开水后,你又回去继续洗衣服。这个过程中实际上就发生了一次中断 对于单片机来讲,中断是指CPU在处理某一事件A时,发生了另一事件B,请求CPU迅速去处理(中断发生);CPU暂时停止当前的工作(中断响应),转去处理事件B(中断服务);待CPU将事
[单片机]
揭秘32单片机<font color='red'>外部中断</font>工作机制
51单片机day4——外部中断控制LED灯亮灭
/*** *外部中断——外部中断0和外部中断1控制LED小灯 *接口: * LED1-2接单片机P2^0-P2^2管脚 * 独立按键K1接单片机P3^2口(单片机外部中断0在P3^2口) * 独立按键K2接单片机P3^3口(单片机外部中断1在P3^3口) *原理: * 1.在设置好TCON(IT0/1=0/1)寄存器,IE寄存器后当设定的外部中断电平被拉低时会执行中断程序,中断程序执行完毕后回到原程序执行处继续执行 * 2.外部中断TCON设置:IT0/1=0(低电平触发:持续低电平则一直持续触发中断)/1(负跳沿触发:电平被拉低后执行中断程序,中断程序执行完毕后返回之前程序运行到的位置) *思路: * 1.LED2和
[单片机]
小广播
最新单片机文章
何立民专栏 单片机及嵌入式宝典

北京航空航天大学教授,20余年来致力于单片机与嵌入式系统推广工作。

厂商技术中心

 
EEWorld订阅号

 
EEWorld服务号

 
汽车开发圈

 
机器人开发圈

电子工程世界版权所有 京ICP证060456号 京ICP备10001474号-1 电信业务审批[2006]字第258号函 京公网安备 11010802033920号 Copyright © 2005-2026 EEWORLD.com.cn, Inc. All rights reserved