GD32F103单片机-EXTI外部中断

GD32F103单片机-EXTI外部中断

  • 一、EXTI及NVIC介绍
  • 二、编程实验
    • 2.1 相关库函数
    • 2.2 实验代码

一、EXTI及NVIC介绍

  • GD32和STM32的EXTI基本相似,具体见STM32F1单片机-外部中断
  • GD32的EXTI包括20个相互独立的边沿检测电路请求产生中断或事件,4位优先级配置寄存器16个优先等级
  • GD32的EXTI有三种触发方式上升沿下降沿任意沿触发
  • 如下图为EXTI框图,通过EXTI_Line0-19(IO的16个管脚和内部模块的4根线)一共20条线路进入到边沿检测,或通过软件触发,最终通过中断屏蔽控制(挂起标志位-指示有中断发生,不意味着中断处理已经完成)到NVIC产生中断或者产生事件

在这里插入图片描述

  • 下图为EXTI触发源对应表

在这里插入图片描述

  • NVIC见STM32F1单片机-EXTI外部中断

二、编程实验

2.1 相关库函数

  • 下面是GD32F103关于EXTI和NVIC相关的库函数
void gpio_exti_source_select(uint8_t output_port, uint8_t output_pin);//外部中断源引脚选择
void exti_init(exti_line_enum linex, exti_mode_enum mode, exti_trig_type_enum trig_type);//外部中断初始化,通道,极性选择
void exti_interrupt_enable(exti_line_enum linex);//外部中断使能
FlagStatus exti_flag_get(exti_line_enum linex);//外部中断挂起标志位获取,指示有中断发生,不意味着中断处理已经完成
void exti_flag_clear(exti_line_enum linex);//清楚外部中断挂起标志位
FlagStatus exti_interrupt_flag_get(exti_line_enum linex);//外部中断标志位获取
void exti_interrupt_flag_clear(exti_line_enum linex);//清除外部中断标志位
void nvic_priority_group_set(uint32_t nvic_prigroup);//配置NVIC优先级分组
void nvic_irq_enable(uint8_t nvic_irq, uint8_t nvic_irq_pre_priority, uint8_t nvic_irq_sub_priority);//初始化NVIC,中断通道,抢占优先级和子优先级(响应优先级)
//中断服务函数入口在:startup_gd32f10x_md.s中
//枚举中断号IRQn在gd32f10x.h中

2.2 实验代码

  • 外部中断基本步骤如下:开启GPIO、AFIO时钟初始化GPIO外部中断引脚选择初始化EXTI和NVIC使能EXTI — 进入EXTI中断服务函数(判断中断标志位)
  • 使用触摸按键去模拟外部中断,触摸按键原理图如下所示
  • TTP223作为一款触摸检测IC、提供一个触摸按键,OUT_1接到PA0
  • Q是CMOS输出引脚、VS是接地,VDD电源,I是触摸输入,AHLB是输出有效选择(0表示高电平有效1表示低电平有效),TOB是输出模式选择(0表示直接模式1表示触发模式)。所以本图中表示的是直接模式低电平有效输出

在这里插入图片描述

  • 触摸按键部位有个感应电容,当触摸到按键部分时,会与C13电容并联使得输入I的电容变大,OUT_1输出低电平,松手时,OUT_1输出高电平,触摸期间一直输出低电平
    在这里插入图片描述
  • 实验内容:按下触摸按键A,实现LED的状态反转
  • 下面是My_EXTI.c
  • 中断服务函数不需要声明,main函数调用LED、EXTI初始化函数即可
#include "gd32f10x.h"                   // Device header
#include "LED.h"/*
@brief:初始化EXTI
@param:无
@retval:无
*/
void My_EXTI_Init()
{rcu_periph_clock_enable(RCU_GPIOA);rcu_periph_clock_enable(RCU_AF);	//开启GPIOA,AFIO时钟gpio_init(GPIOA,GPIO_MODE_IPU,GPIO_OSPEED_50MHZ,GPIO_PIN_0);//PA0上拉输入gpio_exti_source_select(GPIO_PORT_SOURCE_GPIOA,GPIO_PIN_SOURCE_0);//AFIO设置PA0为EXTI触发源exti_init(EXTI_0,EXTI_INTERRUPT,EXTI_TRIG_FALLING);//通道0,下降沿触发外部中断exti_interrupt_enable(EXTI_0);//使能EXTInvic_priority_group_set(NVIC_PRIGROUP_PRE2_SUB2);//NVIC分组nvic_irq_enable(EXTI0_IRQn,1,1);//配置NVIC,中断通道,抢占和子优先级为1
}/*
@brief:EXTI中断服务函数
@param:无
@retval:无
*/
void EXTI0_IRQHandler()
{if(exti_interrupt_flag_get(EXTI_0) == SET)//判断中断标志位{LED1_Turn();exti_interrupt_flag_clear(EXTI_0);//清除中断标志位}
}

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.rhkb.cn/news/428683.html

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

C++中的new与delete

目录 1.简介 2.底层 1.简介 new是升级版的malloc,它会先开空间再去调用构造函数。 delete是升级版的free,它会先调用析构函数再free掉空间。 class A { public:A(int a10, int b10){a a1;b b1;}private:int a;int b; };int main() {//new会先开空间…

Java代码审计篇 | ofcms系统审计思路讲解 - 篇4 | XXE漏洞审计

文章目录 Java代码审计篇 | ofcms系统审计思路讲解 - 篇4 | XXE漏洞审计0. 前言1. XXE代码审计【有1处】1.1. 搜索JRXmlLoader1.1.1. JRAntApiWriteTask1.1.2. JRAntUpdateTask1.1.3. TableReportContextXmlRule1.1.4. JasperCompileManager【存在漏洞】 1.2. 搜索XMLReader1.2…

并查集LRU cache

并查集的定义 将n个不同的元素划分成一些不相交的集合。开始时,每个元素自成一个单元素集合,然后按一定的规律将归于同一组元素的集合合并。在此过程中要反复用到查询某一个元素归属于那个集合的运算。适合于描述这类问题的抽象数据类型称为并查集(unio…

Qt (19)【Qt 线程安全 | 互斥锁QMutex QMutexLocker | 条件变量 | 信号量】

阅读导航 引言一、互斥锁1. QMutex(1)基本概念(2)使用示例基本需求⭕thread.h⭕thread.cpp⭕widget.h⭕widget.cpp 2. QMutexLocker(1)基本概念(2)使用示例 3. QReadWriteLocker、QR…

string类(C++)

哈喽各位!,久违了,最近怎么样捏,本次进入C的string类,加油加油呀! 随记:鼓励创新,宽容失败! 1.标准库的string类 1.1string类的了解 string的文献参考链接-->strin…

Buck变换器闭环控制,simulink仿真模型(适合初学者学习)

Buck变换器,又称为降压斩波器,是一种常见的DC-DC转换器,广泛应用于电源管理领域。它通过开关元件(通常是MOSFET或BJT)的导通与截止,改变输入电压到负载的平均电压,从而实现电压的降低。在实际应…

828华为云征文——使用Flexus云服务器X实例CentOS镜像下创建MySQL服务器教程

一、概述 1.1 前言 当前正值华为云盛大的828 B2B企业庆典,其中Flexus X实例的特惠活动尤为吸引人眼球。对于追求极致算力表现,并期望在自建MySQL数据库、Redis缓存系统及Nginx服务器部署上获得卓越性能的企业用户而言,这无疑是一个不可多得的…

SpringCloud (1) 服务拆解

1 服务拆解和治理 1.1 服务拆解 微服务的核心就是服务拆分,将传统的大项目拆分为多个微型服务(服务或微服务),实现服务之间"高内聚(微服务职责单一),低耦合(微服务功能相对独立)"的目的 (1) 水平(横向)拆分:先搭出拆分框架,比如【公共服务】(比如:common服务,client…

Python数据分析与可视化(Python绘图详解)

✅作者简介:2022年博客新星 第八。热爱国学的Java后端开发者,修心和技术同步精进。 🍎个人主页:Java Fans的博客 🍊个人信条:不迁怒,不贰过。小知识,大智慧。 💞当前专栏…

轻量级流密码算法Trivium

轻量级流密码算法Trivium 0x0 Trivium算法简介 Trivium算法是由C.D Canniere和B.Preneel共同设计的一套对称加密算法,Trivium密码算法采用了分组密码和非线性反馈移位寄存器的设计思路。该密码算法总共288比特的内部状态,其中有…

数据篇| 关于Selenium反爬杂谈

友情提示:本章节只做相关技术讨论, 爬虫触犯法律责任与作者无关。 LLM虽然如火如荼进行着, 但是没有数据支撑, 都是纸上谈兵, 人工智能的三辆马车:算法-数据-算力,缺一不可。之前写过关于LLM微调文章《微调入门篇:大模型微调的理论学习》、《微调实操一: 增量预训练(Pretrai…

【手撕算法】快速排序(递归分治法)Python实现

一、算法 class Solution:def Partition(self, nums, low, high):pivotkey nums[low] # 元素copied, nums[low]空了出来while low < high:while low < high and nums[high] > pivotkey:high high - 1 # 直到找到一个nums[high]<pivotkey位置nums[low] nums[h…

Matlab simulink建模与仿真 第十七章(补充离散库和补充数学库)

参考视频&#xff1a;simulink1.1simulink简介_哔哩哔哩_bilibili 一、补充离散库和补充数学库中的模块概览 1、补充离散库 注&#xff1a;每个版本的补充离散库不一定相同&#xff0c;也不是每个版本的库都有如上所有模块。 2、补充数学库 二、离散直接传递函数Ⅱ模块 1、…

学生护眼台灯哪个品牌比较好?五款性价比高的学生护眼台灯

现在的孩子学习压力很大&#xff0c;在学校课程已经塞满了大半天&#xff0c;课后的作业更是不少&#xff0c;空闲时间还需要去课后补习班的数不胜数。用眼的次数非常的高&#xff0c;眼睛很容易感到疲惫&#xff0c;这时候我们一个宝贝大有作用&#xff0c;就是我们的护眼台灯…

软件测试 BUG 篇

目录 一、软件测试的生命周期 二、BUG 1. bug的概念 2. 描述bug的要素 3. bug的级别 4. bug的生命周期 5. 与开发产生争执怎么办&#xff1f;&#xff08;面试高频考题&#xff09; 5.1 先检查自身&#xff0c;是否bug描述不清楚 5.2 站在用户角度考虑并抛出问题 5.3 …

C++/Qt 集成 AutoHotkey

C/Qt 集成 AutoHotkey 前言AutoHotkey 介绍 方案一&#xff1a;子进程启动编写AutoHotkey脚本准备 AutoHotkey 运行环境编写 C/Qt 代码 方案二&#xff1a;显式动态链接方案探索编译动态链接库集成到C工程关于AutoHotkeyDll.dll中的函数原型 总结 前言 上一篇介绍了AutoHotkey…

YOLOv9改进,YOLOv9主干网络替换为RepViT (CVPR 2024,清华提出,独家首发),助力涨点

摘要 轻量级视觉变换器(ViTs)在资源受限的移动设备上表现出优越的性能和较低的延迟,相比之下轻量级卷积神经网络(CNNs)稍显逊色。研究人员发现了许多轻量级 ViTs 和轻量级 CNNs 之间的结构联系。然而,它们在块结构、宏观和微观设计上的显著架构差异尚未得到充分研究。在…

TC-RAG: 图灵完备的检索增强

1. 背景 大型语言模型在众多关键领域均已取得显著进展&#xff0c;并在各种下游任务中展现出卓越性能。 在医疗领域&#xff0c;这些模型尤显潜力&#xff0c;特别是在对责任感和可靠性要求极高的健康护理领域。这些模型通过全面的医学知识预训练&#xff0c;不仅能支持医生做…

堆的向下调整算法和TOPK问题

目录 1.什么是堆&#xff1f; 1.1 向下调整建堆的时间复杂度计算 1.2 堆的结构体设计 2.堆的功能实现&#xff1a; 2.1 堆的插入&#xff1a; 2.2 堆的删除&#xff1a; 2.3 堆排序&#xff1a; 2.4 向下调整建堆&#xff1a; 2.5 TOPK问题&#xff1a; 2.6 向上调整算…

周末愉快!——周复盘

加班的晚上有一个美梦&#xff01; 周末愉快简单复盘结尾 精华&#xff1a; 在这个信息爆炸的时代&#xff0c;我们的大脑每天都被无数的数据和刺激充斥&#xff0c;以至于我们常常感到应接不暇。然而&#xff0c;正如古人所言&#xff1a;“不飞则已&#xff0c;一飞冲天”&am…