中断——外部中断EXIT

终端可以分成外部中断和内部中断吗

文章目录

  • 前言
  • 一、pandas是什么?
  • 二、使用步骤
    • 1.引入库
    • 2.读入数据
  • 总结


前言

野火中断章节有这样一句话

【F103在内核水平上搭载了一个异常响应系统, 支持为数众多的系统异常和外部中断。 其中系统异常有8个(如果把Reset和HardFault也算上的话就是10个), 外部中断有60个。】

所以可以理解为STM32外部中断是包含在异常响应系统中的。这个异常响应系统是包含10个系统异常。还有60个外部中断。


一、中断知识

按照教程,所有的系统异常和外部中断都定义在stm32f10x.h文件中,定义在IRQn_Type结构体中。

可以查阅文档《1-STM32F10x-中文参考手册》

二、中断编程

中断编程主要有3个编程要点:

1、使能外设某个中断,这个具体由每个外设的相关中断使能位控制。比如串口有发送完成中断,接收完成中断,这两个中断都由串口控制寄存器的相关中断使能位控制。

2、初始化NVIC_InitTypeDef结构体,配置中断优先级分组,设置抢占优先级和子优先级, 使能中断请求。NVIC_InitTypeDef结构体在固件库头文件misc.h中定义。

3、编写中断服务函数

在启动文件startup_stm32f10x_hd.s中我们预先为每个中断都写了一个中断服务函数,只是这些中断函数都是为空,为的只是初始化中断向量表。

三、EXIT外部中断/事件控制器

3.1 中断事件线

标准库函数对每个外设都建立了一个初始化结构体,外部中断是EXTI_InitTypeDef。EXTI_InitTypeDef宏定义在stm32f10x_exit.h文件中。

教程中说EXTI有20个中断/事件线,但是在IRQn_Type中一开始只看到了EXTI0到EXTI5,然后研究了下看到了其他的中断/事件线。如图

然后其中每一个中断/事件线,都可以选择输入源。比如EXTI0可以选择PA0、PB0......PI0其中一个输入源。这个怎么配置呢。用AFIO的外部中断配置寄存器1,AFIO_EXTICR1的EXTI0[3:0]位配置。

3.2 EXTI初始化结构体详解

标准库函数对每个外设都建立了一个初始化结构体,比如EXTI_InitTypeDef,结构体成员用于设置外设工作参数,并由外设初始化配置函数, 比如EXTI_Init()调用,这些设定参数将会设置外设相应的寄存器,达到配置外设工作环境的目的。

EXTI_InitTypeDef宏定义在stm32f10x_exit.h文件中。

四、软件设计

4.1 编程要点

1、初始化用来产生中断的GPIO端口

2、初始化EXTI

3、初始化NVIC

4、编写中断服务函数

4.2 编写代码

目的,之前是在裸机程序while循环中读取GPIO引脚电平来对Led更改亮灭效果。

现在代码是通过将按键设置成EXTI输入源,通过中断来控制led亮灭效果。

设计电路图如下图

实现,真不容易啊!

回顾代码实现

4.2.1 GPIO初始化

GPIO初始化
GPIO_InitTypeDef结构体GPIO_initTypeDef
RCC_APB2PeriphClockCmd成员1:RCC_APB2Periph_GPIOA

使能外设时钟总线

这个设计涉及到PA1和PB0,所以要使能RCC_APB2Periph_GPIOA、RCC_APB2Periph_GPIOB

另外还要使能RCC_APB2Periph_AFIO,这个具体要看stm32手册文档第八章AFIO

GPIO_initTypeDef初始化GPIO_initTypeDef.GPIO_Pin
GPIO_initTypeDef.Mode

led灯:GPIO_Mode_Out_PP

按键:GPIO_Mode_IN_FLOATING

GPIO_initTypeDef.SpeedGPIO_Speed_50MHz,原因是什么?
GPIO_InitType

4.2.2 NVIC初始化

NVIC初始化
NVIC_InitTypeDef结构体NVIC_initTypeDef
NVIC_PriorityGroupConfig

成员:NVIC_PriorityGroup_x

分成五组x:0-4

NVIC_initTypeDef

NVIC_initTypeDef.

NVIC_IRQChannel

成员EXTI1_IRQn;

中断源EXTI1,因为这次代码终端输入源GPIO是PA1

中断函数对应EXTI1_Handler

NVIC_initTypeDef.

NVIC_IRQChannelPreemptionPriority

NVIC_initTypeDef.

NVIC_IRQChannelSubPriority

NVIC_initTypeDef.

NVIC_IRQChannelCmd

使能
NVIC_InitType

 这边就是有一个优先级分组没记清了。NVIC_PriorityGroup_0到底是抢占优先级是0,子优先级是16。还是抢占优先级是16,子优先级是0个优先级呢?

4.3.3 EXTI初始化

EXTI初始化
EXTI_InitTypeDefEXTI_initTypeDef
GOIO_EXTILineConfig

成员1:GPIO_PortSourceGPIOx

成员2:GPIO_PinSourcex

这边感觉很陌生啊,形参也很陌生

比如key的引脚是PA1

portSource即为GPIO_PortSourceGPIOA

pinSource即为

GPIO_PinSource1

EXTI_initTypeDefEXTI_initTypeDef.EXTI_Line

EXTI_Line1

共二十个输入源,EXTI0-EXTI19

EXTI0对应PA0...PI0等引脚,所以PA1就是EXTI1

EXTI_initTypeDef.EXTI_Mode

没想起来,看一下

事件/中断

EXTI_Mode_Interrupt

EXTI_initTypeDef.EXTI_Trigger分为上升沿和下降沿和上升沿和下降沿皆触发
EXTI_initTypeDef.EXTI_LineCmdENABLE
EXTI_InitType

4.3.4 中断服务函数

EXTI1_Handle(),这个函数是预定义好的

函数中需要用到两个成员

void EXTI1_Handle()
{
	if(EXTI_GetITStauts(EXTI_Line1) != RESET)
	{
	    //动作,比如控制灯开关

		EXTI_ClearITPendingBit(EXTI_Line1);
	}
}

以上就是EXTI外部中断的所有配置方法了。并且得到验证。虽然过程很曲折,甚至很离奇,但是确实是成功了。


总结

提示:这里对文章进行总结:
例如:以上就是今天要讲的内容,本文仅仅简单介绍了pandas的使用,而pandas提供了大量能使我们快速便捷地处理数据的函数和方法。

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

学校服务器hpc东南大学,下载国家基因组科技中心数据 gsa-human ascp chatpt建议 Linux系统中写代码

使用ascp批量下载数据 You files.csv 帮我写个批量下载的脚本,批量下载时候,把路径中最后的HRR659816批量替换成 Accession列的内容就行了。下面是示例 ascp -v -QT -l 300m -P33001 -k1 -i ~/.aspera/connect/etc/aspera01.openssh_for_gsa -d asper…

HNU-数据挖掘-实验3-图深度学习

数据挖掘课程实验实验3 图深度学习 计科210X 甘晴void 202108010XXX 文章目录 数据挖掘课程实验<br>实验3 图深度学习实验背景实验要求数据集解析实验内容&#xff08;0&#xff09;基础知识&#xff1a;基于图的深度学习方法浅识&#xff1a;图卷积网络 (GCN)浅识&…

【机组】微程序控制单元实验的解密与实战

​&#x1f308;个人主页&#xff1a;Sarapines Programmer&#x1f525; 系列专栏&#xff1a;《机组 | 模块单元实验》⏰诗赋清音&#xff1a;云生高巅梦远游&#xff0c; 星光点缀碧海愁。 山川深邃情难晤&#xff0c; 剑气凌云志自修。 ​ 目录 &#x1f33a;一、 实验目…

HTML以及CSS相关知识总结(一)

近日就开始回顾html和css相关知识啦&#xff0c;并且会学习html5和css3的新知识&#xff0c;以下是我对记忆不太深刻的地方以及新知识点的总结&#xff1a; Web标准&#xff1a; 结构&#xff1a;用于对网页元素进行整理和分类&#xff0c;即HTML 表现&#xff1a;用于设置网页…

计算机的受信任平台模块出现故障,错误代码 80090016

在一次修改 MicroSoft 365 密码后&#xff0c;本地登录Teams出现错误&#xff1a; 计算机的受信任平台模块出现故障。如果此错误仍然存在&#xff0c;请与系统管理员联系&#xff0c;并提供错误代码80090016。 详细信息&#xff1a;https::/www.microsoft.com/wamerrors Teams…

OpenAI的GPT接口的调用流程

要调用OpenAI的GPT接口&#xff0c;您需要获得API密钥&#xff0c;并使用HTTP请求发送请求。以下是一般的步骤&#xff0c;希望对大家有所帮助。北京木奇移动技术有限公司&#xff0c;专业的软件外包开发公司&#xff0c;欢迎交流合作。 1.获取OpenAI API密钥&#xff1a; 在使…

Threejs实现立体3D园区解决方案及代码

一、实现方案 单独贴代码可能容易混乱&#xff0c;所以这里只讲实现思路&#xff0c;代码放在最后汇总了下。 想要实现一个简单的工业园区、主要包含的内容是一个大楼、左右两片停车位、四条道路以及多个可在道路上随机移动的车辆、遇到停车位时随机选择是否要停车&#xff0…

【MATLAB源码-第121期】基于matlab的斑马优化算法(ZOA)机器人栅格路径规划,输出做短路径图和适应度曲线。

操作环境&#xff1a; MATLAB 2022a 1、算法描述 斑马优化算法&#xff08;Zebra Optimization Algorithm&#xff0c;简称ZOA&#xff09;是一种模仿斑马群体行为的优化算法。在自然界中&#xff0c;斑马是一种社会性很强的动物&#xff0c;它们具有独特的群体行为模式&…

精品基于Uniapp+springboot菜谱美食饮食健康管理App

《[含文档PPT源码等]精品基于Uniappspringboot饮食健康管理App》该项目含有源码、文档、PPT、配套开发软件、软件安装教程、项目发布教程、包运行成功&#xff01; 软件开发环境及开发工具&#xff1a; 开发语言&#xff1a;Java 后台框架&#xff1a;springboot、ssm 安卓…

Leveraging Unlabeled Data for Crowd Counting by Learning to Rank

无标签人群技术&#xff0c;作者引入了一种排名。 利用的是一个图的人群数量一定小于等于包含这个图的图 生成排名数据集 作者提出了一种自监督任务&#xff0c;利用的是一个图的人群数量一定小于等于包含这个图的图 流程&#xff1a; 1.以图像中心为中心&#xff0c;划分一…

All the stories begin at installation

Before installation, there are some key points about Conan: “Conan is a dependency and package manager for C and C languages.”“With full binary management, Conan can create and reuse any number of different binaries (for different configurations like a…

MATLAB Fundamentals>>>Smoothing Data with Moving Average

MATLAB Fundamentals>Common Data Analysis Techniques>Smoothing Data> (2/5) Smoothing Data with Moving Average 例1&#xff1a; Smoothing method:Moving mean Moving window:Centered 2 代码2&#xff1a; % Smooth input data ySm smoothdata(y,"mov…

系统引导器GRUB

全称为GNU GRUB&#xff0c;来自GNU计划的多操作系统引导器。 作用&#xff1a; 查看引导分区内容 ls /boot ls /boot/grub2/ 查看GRUB2的配置文件 cat /boot/grub2/grub.cfg 可以看到/boot中保存的文件主要是linux内核、内存映像文件等。 注意到是子用户&#xff0c;但在…

Elasticsearch+Kibana 学习记录

文章目录 安装Elasticsearch 安装Kibana 安装 Rest风格API操作索引基本概念示例创建索引查看索引删除索引映射配置&#xff08;不配置好像也行、智能判断&#xff09;新增数据随机生成ID自定义ID 修改数据删除数据 查询基本查询查询所有&#xff08;match_all&#xff09;匹配查…

axios的基本使用

在项目根目录下创建js目录&#xff0c;目录中添加axios.min.js文件 准备页面&#xff1a;testAxios.html: 实现一个简单的GET请求 <!DOCTYPE html> <html lang"en"> <head><meta charset"UTF-8"><title>Title</title>…

Java数据结构之排序(头歌平台,详细注释)

目录 第1关&#xff1a;选择排序 任务描述 相关知识 代码&#xff1a; 第2关&#xff1a;插入排序 任务描述 相关知识 插入排序 代码&#xff1a; 第3关&#xff1a;归并排序 任务描述 相关知识 归并排序 原理 代码&#xff1a; 第4关&#xff1a;快速排序 任务描述 相关…

Prometheus配置Grafana监控大屏(Docker)

拉取镜像 docker pull grafana/grafana挂载目录 mkdir /data/prometheus/grafana -p chmod 777 /data/prometheus/grafana临时启动 docker run -d -p 3000:3000 --name grafana grafana/grafana从容器拷贝配置文件至对应目录 docker exec -it grafana cat /etc/grafana/gra…

[C++]:12:模拟实现list

[C]:12:模拟实现list 一.看一看SGI的stl_list的源码&#xff1a;1.基础结构构造函数1.节点结构&#xff1a;2.节点构造函数&#xff1a;3.链表结构&#xff1a;4.链表的构造函数&#xff1a; 2.析构1.节点析构&#xff1a;2.链表的析构&#xff1a; 3.迭代器 二.模拟实现list1.…

PyTorch深度学习实战(31)——生成对抗网络(Generative Adversarial Network, GAN)

PyTorch深度学习实战&#xff08;31&#xff09;——生成对抗网络 0. 前言1. GAN2. GAN 模型分析3. 利用 GAN 模型生成手写数字小结系列链接 0. 前言 生成对抗网络 (Generative Adversarial Networks, GAN) 是一种由两个相互竞争的神经网络组成的深度学习模型&#xff0c;它由…

EOCR电机保护器带煤电厂的具体应用

EOCR系列电动机智能保护器在煤电厂中有广泛的应用。这些保护器具有齐全的保护功能、直观的测量参数、快速的反应灵敏度、可靠的行动以及与上位机通讯构成远程监控的能力&#xff0c;使其成为理想的低压电动机保护及远程监控产品。 在煤电厂中&#xff0c;电动机保护器需要具备过…