stm32之中断与外部中断

前言:
1.有51单片机开发经验会比较容易理解中断优先级;
2.本篇博文基于STM32F103RCT6芯片和3.5.0标准库编写;
3.作为自己学习的一些心得,如有不足之处,还请前辈多多指教;

一、stm32中断系统

对于中断的基本概念这里就不介绍了,当时学51的时候,看过一篇前辈的博客,讲的不错,暂时找不到了,找到了补上。
STM32F10x采用的是M3的内核,M3的内核支持256个中断通道(其中包括16个内核中断和240个外部中断),但是在stm32芯片只使用了M3内核的部分(看过几个博客直接说的是32有256个通道,这是错误的),stm32f103只使用了86个中断通道(包括16个内核通道和60个可屏蔽中断)stm32之中断与外部中断_第1张图片
这是向量表的一部分,其中有部分的优先级被固定死了(可参考stm32参考手册)

中断优先级

STM32F103芯片支持60个可屏蔽中断通道,每个中断通道都具备自己的中断优先级控制字节(8位,但是STM32F103中只使用4位,高4位有效),用于表达优先级的高4位又被为组成抢占式优先级和响应优先级,通常也把响应优先级称为“亚优先级”或“副优先级”,每个中断源都需要被指定这两种优先级。
高抢占式优先级的中断事件会打断当前的主程序或者中断程序运行,俗称中断嵌套。在抢占式优先级相同的情况下,高响应优先级的中断优先被响应。
当两个中断源的抢占式优先级相同时,这两个中断将没有嵌套关系,当一个中断到来后,如果正在处理另一个中断,这个后到来的中断就要等到前一个中断处理完之后才能被处理。如果这两个中断同时到达,则中断控制器根据他们的响应优先级高低来决定先处理哪一个;如果他们
的抢占式优先级和响应优先级都相等,则根据他们在中断表中的排位顺序决定先处理那一个。
用流程图更清晰地展示下:
stm32之中断与外部中断_第2张图片

二、中断配置

stm32之中断与外部中断_第3张图片

三、外部中断

EXTI简介

STM32F10x外部中断/事件控制器(EXTI)包含多达 20 个用于产生事件/中断请求的边沿检测器。EXTI的每根输入线都可单独进行配置,以选择类型(中断或事件)和相应的触发事件(上升沿触发、下降沿触发或边沿触发),还可独立地被屏蔽。
stm32之中断与外部中断_第4张图片

stm32之中断与外部中断_第5张图片

外部中断配置

stm32之中断与外部中断_第6张图片
一旦中断的原理理解了,不管是用标准库还是用HAL库都是很方便的。

你可能感兴趣的:(stm32)