中断——外部中断EXIT

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

文章目录

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


前言

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

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

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


一、中断知识

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

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

中断——外部中断EXIT_第1张图片

二、中断编程

中断编程主要有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,然后研究了下看到了其他的中断/事件线。如图

中断——外部中断EXIT_第2张图片

然后其中每一个中断/事件线,都可以选择输入源。比如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亮灭效果。

设计电路图如下图

中断——外部中断EXIT_第3张图片

实现,真不容易啊!


总结

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

你可能感兴趣的:(STM32,单片机,嵌入式硬件)