当前位置: 首页 > news >正文

STM32 Cubemx 同名外设中断及回调

文章目录

  • 前言
  • 示例工程
  • 个人理解

前言

最近在学习STM32,采用HAL库开发方式。记录一下同名外设中断及回调

这里提及的同名外设指USART1/2之类的相同外设,但不是同一个instance

示例工程

以使用cubemx配置两个同名外设EXTI0/EXT4为例。

在NVIC配置界面,勾选EXTI line0/4.
在这里插入图片描述

在Code Generation栏,勾选以下三项:

  1. Generate Enable in Init
  2. Generate IRQ handler
  3. call HAL handler

在这里插入图片描述

随后生成工程。

Cubemx生成的GPIO初始化函数中,有EXTI0/4的NVIC配置代码
在这里插入图片描述
在stm32f1xx_it.c文件中有EXTI0/4的IRQ handler。
在这里插入图片描述
并且这两个外设的中断处理函数中均调用了函数HAL_Handler。
其源码如下。
在这里插入图片描述

个人理解

当CPU接受到中断请求IRQ后,会进入中断服务函数IRQ Handler
因此在IRQ Handler函数中可以写上对应的功能。

而勾选Call HAL Handler之后在相应的IRQ Handler中生成了HAL_GPIO_EXTI_IRQHandler();

相当于回调函数是两个同名中断公有的服务函数,而IRQ Handler就是针对每个独立的IRQ的服务函数

因此回到最初的问题。如果我想要EXTI0翻转PB5电平EXTI4翻转PE5电平。函数如下:
在这里插入图片描述

而如果我想要两个EXTI0/4都有同一个功能,通过uart发送字符串。可以在各自的IRQ Handler中都加上该功能。或者改写他们公共的回调函数。这里以改写回调函数做示例。
在这里插入图片描述
在这里插入图片描述

http://www.lryc.cn/news/147246.html

相关文章:

  • 储能辅助电力系统调峰的容量需求研究(matlab代码)
  • 非计算机科班如何丝滑转码?(本人就是有点不丝滑)
  • tensorrtx部署yolov5 6.0
  • 用html5写一个音乐播放器
  • postgresql类型转换函数
  • Go 自学:Array阵列
  • 大数据平台与数据仓库的五大区别
  • React 钩子汇总
  • Python爬取旅游网站数据机票酒店价格对比分析
  • OA项目之会议通知(查询是否参会反馈详情)
  • 如何维护自己的电脑的措施
  • VS2022 Community 安装步骤
  • vue3中mitt.js使用
  • Redis 内存淘汰策略详解
  • 初识Redis之分布式
  • 计算机网络-笔记-第三章-数据链路层
  • 【1】openGL glew示例代码分析绘制一个三角形
  • android:新建工程文件介绍
  • 强化历程6-网络系列(2023.8.30)
  • 下载MedShapeNet
  • 根据身高重建队列【贪心算法】
  • 基于Java+SpringBoot+Mybaties-plus+Vue+ElementUI 高校汉服租赁网站的 设计与实现
  • SQL-DQL
  • 手写深拷贝方法
  • 格子游戏——并查集
  • 2023最新Python重点知识万字汇总
  • 【STM32】学习笔记(TIM定时器)-江科大
  • Parallel Context Windows for Large Language Models
  • 怎么消除人声保留背景音乐?试试这几种简单方法
  • 积分游戏小程序模板源码