GD32F303固件库开发(15)----外部中断EXTI

发布者:AngelicHeart最新更新时间:2024-11-14 来源: elecfans关键字:GD32F303  固件库开发  外部中断  EXTI 手机看文章 扫描二维码
随时随地手机看文章

概述

本章配置GD32F303使用EXTI进行驱动LED。 需要GD样片的可以加群申请:615061293 。

视频教学

https://www.bilibili.com/video/BV1ig411Y7bB/


csdn课程

课程更加详细。

https://download.csdn.net/course/detail/37144

生成例程

这里准备了自己绘制的开发板进行验证。

查看原理图,PB14为按键管脚。

在这里插入图片描述

LED管脚为PB7.

在这里插入图片描述

配置中断口

GPIO 口连接到 16 个外部中断 / 事件线如下图 。可以看到PC13应该是在EXTI14上。

在这里插入图片描述

外部中断/事件控制器用于产生事件/中断请求的边沿检测器。每根输入线都可单独进行配置,以选择类型(中断或事件)和相应的触发事件(上升沿触发、下降沿触发或边沿触发)。每根输入线还可单独屏蔽。挂起寄存器用于保持中断请求的状态线。

在这里插入图片描述
所以需要配置中断口是上升沿触发或者下降沿触发。

在这里插入图片描述

中断服务函数

配置完中断优先级之后,接着要做的就是编写中断服务函数。中断服务函数的名字是在 HAL 库中事先有定义的。
在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

中断线 10-15 共用中断函数。一般情况下,我们可以把中断控制逻辑直接编写在中断服务函数中。

在这里插入图片描述

配置中断优先级(NVIC),并使能中断

同样的,在mian.c的MX_GPIO_Init中,设置好中断线和 GPIO 映射关系,然后又设置好了中断的触发模式等初始化参数。既然是外部中断,涉及到中断我们当然还要设置 NVIC 中断优先级。 HAL_NVIC_SetPriority的中间0表示抢占优先级为0,最右边的0表示子优先级为0。

  1. 抢占优先级比子优先级的优先权更高,这意味抢占优先级更高的中断会先执行,而不管子优先级的优先权,数值越低优先级越高。

  2. 同理,如果抢占优先级相同,那么就会比较子优先级,子优先级更高的中断将会先被执行,数值越低优先级越高。

  3. 当两个中断源的抢占式优先级相同时,这两个中断将没有嵌套关系,当一个中断到来后,如果正在处理另一个中断,这个后到来的中断就要等到前一个中断处理完之后才能被处理。如果这两个中断同时到达,则中断控制器根据他们的响应优先级高低来决定先处理哪一个;如果他们的抢占式优先级和响应优先级都相等,则根据他们在中断表中的排位顺序决定先处理哪一个。


/**

 @brief 按键模块初始化

 @param 无

 @return 无

*/

void Key_Init(void)

{


    //GPIOA时钟使能

    rcu_periph_clock_enable(RCU_GPIOB);

    //PA1配置成上拉输入

    gpio_init(GPIOB, GPIO_MODE_IPU, GPIO_OSPEED_50MHZ, GPIO_PIN_14);



    //使能复用功能时钟

    rcu_periph_clock_enable(RCU_AF);

    //设置优先级分组

    nvic_priority_group_set(NVIC_PRIGROUP_PRE2_SUB2);

    //设置优先级

    nvic_irq_enable(EXTI10_15_IRQn, 2U, 2U);


    //设置EXTI触发源

    gpio_exti_source_select(GPIO_PORT_SOURCE_GPIOB, GPIO_PIN_SOURCE_14);


    //下降沿中断

    exti_init(EXTI_14, EXTI_INTERRUPT, EXTI_TRIG_RISING);

    //清中断标志

    exti_interrupt_flag_clear(EXTI_14);


}

GPIO配置

PB7为板上LED灯,配置PB7为输出口,当中断发生时候改变IO口极性。

在这里插入图片描述

/**

 @brief LED初始化

 @param 无

 @return 无

*/

void LED_Init(void)

{



        /* 使能GPIOB时钟*/

    rcu_periph_clock_enable(RCU_GPIOB);


    /*设置PB7为推挽输出 */

    gpio_init(GPIOB, GPIO_MODE_OUT_PP, GPIO_OSPEED_50MHZ, GPIO_PIN_7);


    /* 设置PB7为输出为0*/

    gpio_bit_reset(GPIOB, GPIO_PIN_7);    



}

EXTI15_10_IRQHandler

在按键触发时候翻转LED电平


/*!

    brief      this function handles external lines 10 to 15 interrupt request

    param[in]  none

    param[out] none

    retval     none

*/

void EXTI10_15_IRQHandler(void)

{

    if (RESET != exti_interrupt_flag_get(EXTI_14)) 

    {

        exti_interrupt_flag_clear(EXTI_14);

        gpio_bit_write(GPIOB, GPIO_PIN_7, (bit_status)(1-gpio_input_bit_get(GPIOB,GPIO_PIN_7) ));                    

    }

}


关键字:GD32F303  固件库开发  外部中断  EXTI 引用地址:GD32F303固件库开发(15)----外部中断EXTI

上一篇:GD32F303固件库开发(17)----内部Flash读写
下一篇:GD32F303固件库开发(14)----IIC之配置OLED

推荐阅读最新更新时间:2024-11-18 06:00

STM32CUBEMX开发GD32F303读保护与写保护概述
概述 芯片读保护以后,flash将不可以从外部读取,这样可以防止别人读取或者盗取芯片代码,如果想再次烧录代码,需要解除保护,有时候在代码调试的过程中,也有可能会触发读保护,解除读保护也可以使用代码,也可以使用软件进行读保护解锁。 软件进入读保护 芯片读保护以后,flash将不可以从外部读取,这样可以防止别人读取或者盗取芯片代码,如果想再次烧录代码,需要解除保护,有时候在代码调试的过程中,也有可能会触发读保护,解除读保护也可以使用代码,也可以使用软件进行读保护解锁。 软件进入读保护 打开GD-Link Programmer,点击Target- Security可以进入读保护模式。 这时候会提示是否进入读保护。 进入读保护
[单片机]
STM32CUBEMX<font color='red'>开发</font><font color='red'>GD32F303</font>读保护与写保护概述
STM32如何配置外部中断?STM32外部中断配置步骤
作为一款现代化的微控制器,STM32系列芯片在各种应用场合中广泛应用。其中最常见的应用是外部中断。本文将详细介绍如何在STM32中配置外部中断。 1.了解STM32的外部中断结构 在STM32中,外部中断是由NVIC(Nested Vector Interrupt Controller)进行控制的。STM32 的芯片可以选择4个方向上跌沿触发或上升沿触发的外部中断线。这些中断线可以通过中断线控制器(EXTI)进行设置,并可以绑定到不同的GPIO端口上,以实现具体的外部中断功能。在进行外部中断的初始化过程中,需要配置外部中断的触发方式、中断优先级和中断使能等参数。 2.配置外部中断的触发方式 STM32支持上升沿、下降沿和双边沿触发
[单片机]
f4 外部中断的例子同f1略有不同
1.使能SYSSCFG和对应GPIO时钟 RCC_APB2PeriphClockCmd(RCC_APB2Periph_SYSCFG, ENABLE); RCC_AHB1PeriphClockCmd(RCC_AHB1Periph_GPIOx, ENABLE); 2.配置对应GPIO为输入模式 GPIO_InitStructure.GPIO_Mode =GPIO_Mode_IN; GPIO_InitStructure.GPIO_PuPd =GPIO_PuPd_NOPULL; GPIO_InitStructure.GPIO_Pin =GPIO_Pin_x; GPIO_Init(GPIOx,&GPIO_I
[单片机]
stm32_exti(含NVIC)配置及库函数讲解
EXTI external interrupt 外部中断 STM32有76个中断,包括16个内核中断和60个可屏蔽中断,具有16级可编程的中断优先级。而我们常用的就是这60个可屏蔽中断,所以我们就只针对这60个可屏蔽中断进行介绍。 关于中断的设置,在STM32的PDF文档中是找不到关于NVIC相关寄存器的说明的,是让大家摸不着门道吗?还是故装高深?最后在《CM3权威指南》上找到NVIC相关寄存器,下面重点介绍这几个寄存器。 ISER :ISER全称是Interrupt Set-Enable Registers,这是一个中断使能寄存器组。上面说了STM32的可屏蔽中断只有60个,这里用了2个32位的寄存器,总共可以表示64个
[单片机]
stm32_<font color='red'>exti</font>(含NVIC)配置及库函数讲解
从LCD电极读数的单片机接口技术
   摘要 以测量仪表中常见的时分割驱动法驱动的段式LCD显示器为例,分析LCD显示器的电极连接结构和驱动信号波形;介绍单片机读取仪表LCD读数的接口电路。此接口电路应用于笔者开发的自动血压监控仪的研制及临床应用项目中,由8031单片机读取血压计的收缩压、舒张压、心率以及充气和放气时瞬时压强。实验证明,此接口电路工作稳定、可靠。   通过测量仪表拾取被测信号是单片机前向通道设计中常用的数据采集方式。通常,接口电路从仪表电路中取得相关的模拟信号,经过A/D转换或V/F 转换送入单片机;或者取得一个频率信号,经整形后送入单片机 。然而,有些测量仪表电路中可能找不到这样的信号。以电容式压力传感器血压计为例,尽管从其振荡电路中可以取得一
[应用]
用STM32CubeIDE软件实现STM32外部中断实例
本文用STM32CubeIDE软件实现STM32外部中断实例。 新建工程 “File”-“New”-“STM32 Project”。 输入芯片型号STM32F103ZE。 选择相应封装,下一步。 填写项目名,选择工程位置,下一步。 配置时钟、调试模式 选择高速外部时钟。 HCLK总线时钟处输入72,回车,配置使用最高时钟频率。 调试模式选择串行,方便下载程序。 配置管脚外设 本实例中用到了LED1与KEY_LEFT,找到相应电路图。 可见LED1对应PC0管脚,低电平点亮。按键K1对应PE2管脚,低电平有效。 PC0配置为GPIO_Output,GPIO输出模式 PE2配置为GPIO_EX
[单片机]
用STM32CubeIDE软件实现STM32<font color='red'>外部</font><font color='red'>中断</font>实例
51单片机入门—中断系统和外部中断的基本使用
中断系统的基本概念 五个中断源及其基本结构 51单片机一共有五个中断源 按优先级从上到下 中断系统的结构 中断向量就是中断号,就是下图最左边的标号(在写中断服务函数的时候有用) 中断的处理函数 一般情况下,中断的处理函数有两个,其一为中断初始化函数,其二为中断服务函数。 中断服务函数的结构: 中断相关的4个寄存器 写程序的时候会用到 分为两个控制寄存器和两个中断请求标志 一个例题 代码如下: 方式一: #include reg52,h sbit L1=P0^0; sbit L2=P0^7; //中断系统的基本使用 void Delay(unsigned int t)//延时函数 { w
[单片机]
51单片机入门—<font color='red'>中断</font>系统和<font color='red'>外部</font><font color='red'>中断</font>的基本使用
51单片机按键控制数码管0~9_51单片机外部中断
前面为大家介绍的点亮LED灯、数码管、按键只用到了51单片机的IO资源,我们要是仅仅用单片机点灯、操作数码管,那可真是大才小用了。这些都只是51单片机资源的冰山一角,51单片机还有好多的功能,我后面将为大家一一介绍。今天为大家介绍单片机一个重要的外设——中断。 中断 没接触过单片机的朋友听到这个词肯定很陌生,大家对打断这个词应该不陌生吧,中断字面意思可以理解为中途被打断。大家可以思考一下,什么的中途被什么给打断了呢?想明白了这个问题就说明理解中断了。下面看看百度的解释: 中断是指计算机运行过程中,出现某些意外情况需主机干预时,机器能自动停止正在运行的程序并转入处理新情 况的程序,处理完毕后又返回原被暂停的程
[单片机]
51单片机按键控制数码管0~9_51单片机<font color='red'>外部</font><font color='red'>中断</font>
小广播
设计资源 培训 开发板 精华推荐

最新单片机文章
何立民专栏 单片机及嵌入式宝典

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

 
EEWorld订阅号

 
EEWorld服务号

 
汽车开发圈

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