IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> 嵌入式 -> STM32+STM32CubeMX 中断系统与外部中断基础 -> 正文阅读

[嵌入式]STM32+STM32CubeMX 中断系统与外部中断基础

文章目录

前言

一、STM32的中断系统

二、STM的外部中断

外部中断EXIT是STM32芯片实时处理外部事件的一种机制,由于中断请求来自GPIO端口的引脚,所以称为外部中断

三、外部中断的程序设计思路

????????传统STM32外部中断设计步骤:

? ? ? ? 基于STM32CubeMX的外部中断设计步骤:

????????中断初始化配置

四、例子

?中断服务函数的编写

总结


三、外部中断程序设计思路

?

前言

提示:这里可以添加本文要记录的大概内容:
例如:STM32CubeMX对于初学者更加的容易,配置过程相对寄存器和库函数较为简单,所以本文介绍一下STM32CubeMX中断的配置。


提示:以下是本篇文章正文内容,下面案例可供参考

一、STM32的中断系统

中断、中断源、中断向量、中断优先级、中断服务函数……

ARM Cortex M3内核支持256个中断,包括16个内核中断和240个外设中断,拥有256个中断优先级别。

STM32的中断通道可能会由多个中断源共用。这就意味着,某一个中断服务函数也可能被多个中断源所共用。所以,在中断服务函数的入口处,需要有一个判断机制,用以辨别是哪个中断触发了中断。

STM32有2个优先级概念:抢占优先级和响应优先级,每个中断都需要指定这两种优先级。

Cortex M3内核中有一个称为嵌套向量中断控制器(NVIC)的设备,对中断进行统一的协调和控制。其中最主要的工作就是控制中断使能和确定中断优先级。

二、STM的外部中断

外部中断EXIT是STM32芯片实时处理外部事件的一种机制,由于中断请求来自GPIO端口的引脚,所以称为外部中断

STM32芯片有16个外部中断源EXTI0-EXTI15,分别对应着7个中断向量,也就是对应着7个中断服务函数。

EXTI0、EXTI1、EXTI2、EXTI3、EXTI4:专用。

EXTI5-EXTI9:共用。

EXTI10-EXTI15:共用。

EXTI0的连接引脚是:PA0-PG0,每个端口组的0号引脚。以此类推。

外部中断触发条件:上升沿触发、下降沿触发或双边沿触发。

注意:不能配置成高电平触发和低电平触发。

三、外部中断的程序设计思路

????????传统STM32外部中断设计步骤:

????????????????(1)将GPIO初始化为输入端口

????????????????(2)配置相关I/O引脚与中断线的映射关系。

????????????????(3)设置该I/O引脚对应的中断触发条件

????????????????(4)配置NVIC,并使能中断

????????????????(5)编写中断服务函数

? ? ? ? 基于STM32CubeMX的外部中断设计步骤:

? ? ? ? ? ? ? ? (1)在STM32CubeMX中指定引脚,配置中断初始化参数。

? ? ? ? ? ? ? ? (2)重写该I/O引脚对应的中断回调函数。

????????中断初始化配置

????????????????(1)将GPIO设置为:GPIO_EXIT功能。下图是PC13的设置,其他引脚设置方法相同

?

????????????????(2)设置中断触发条件:上升沿、下降沿、上升沿或下降沿。

???????????(3)使能相关的NVIC通道。

?

?

四、例子

开发板引脚对应图,如下图所示

?引脚分配图

将PC13、PD3、PA0引脚设置成外部中断,分别设置为下降沿/上升沿/下降沿触发,在中断服务函数中如下图

?中断服务函数的编写

????????在生成的工程中,首先,找到main.c文件,可以照看引脚的配置

?其次,我们找到stm32f1xx_it.c文件,本文件是各个引脚配置好的EXIT函数,下图是以PA0为例子

?跳转到下图中的函数,在到main中重新写虚函数

?下面是中断函数

?

void HAL_GPIO_EXTI_Callback(uint16_t GPIO_Pin)
{
	if(GPIO_Pin == GPIO_PIN_13)					//PC13判断是否触发
	{
		HAL_GPIO_TogglePin(GPIOB,GPIO_PIN_5);	//LED1电平翻转
	}
	if(GPIO_Pin == GPIO_PIN_3)					//PD3判断是否触发
	{
		HAL_GPIO_TogglePin(GPIOD,GPIO_PIN_12);	//LED2电平翻转
	}
	if(GPIO_Pin == GPIO_PIN_0)					//PA0判断是否触发
	{
		HAL_GPIO_TogglePin(GPIOD,GPIO_PIN_12);	//LED2电平翻转
		HAL_GPIO_TogglePin(GPIOB,GPIO_PIN_5);	//LED1电平翻转
	}
}

?


总结

以上就是今天要讲的内容,本文仅仅简单介绍了STM32CubeMX中断设置的使用

  嵌入式 最新文章
基于高精度单片机开发红外测温仪方案
89C51单片机与DAC0832
基于51单片机宠物自动投料喂食器控制系统仿
《痞子衡嵌入式半月刊》 第 68 期
多思计组实验实验七 简单模型机实验
CSC7720
启明智显分享| ESP32学习笔记参考--PWM(脉冲
STM32初探
STM32 总结
【STM32】CubeMX例程四---定时器中断(附工
上一篇文章      下一篇文章      查看所有文章
加:2021-12-03 13:11:47  更:2021-12-03 13:13:49 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年11日历 -2024/11/26 12:32:12-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码