当前位置: 首页 > 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中都加上该功能。或者改写他们公共的回调函数。这里以改写回调函数做示例。
在这里插入图片描述
在这里插入图片描述

相关文章:

STM32 Cubemx 同名外设中断及回调

文章目录 前言示例工程个人理解 前言 最近在学习STM32,采用HAL库开发方式。记录一下同名外设中断及回调。 这里提及的同名外设指USART1/2之类的相同外设,但不是同一个instance。 示例工程 以使用cubemx配置两个同名外设EXTI0/EXT4为例。 在NVIC配置…...

储能辅助电力系统调峰的容量需求研究(matlab代码)

目录 1 主要内容 2 部分代码 3 程序结果 4 下载链接 1 主要内容 该程序参考文献《储能辅助电力系统调峰的容量需求研究》,是一个很常规很经典的matlab优化代码,主要是对火电、风电和储能等电力设备主体进行优化调度,在调峰能力达不到时采…...

非计算机科班如何丝滑转码?(本人就是有点不丝滑)

我觉得无非三个办法可以选择(当然可能有其他方法) 自学 报班 有师傅带 但是在学习之前,你一定要明确你学习编程的目的是什么! 游戏开发?后台研发?爬虫工程师?前端程序员?数据分析师? 或者 仅仅是想做一…...

tensorrtx部署yolov5 6.0

文章目录 一. yolov5 v6.0训练模型二.训练好的yolov5模型转tensorrt引擎 一. yolov5 v6.0训练模型 官网下载yolov5 v6.0代码 下载官方预训练好的模型 安装yolov5所需要的库文件,requirements.txt在下载好的yolov5源代码中有 pip install -r C:\Users\10001540…...

用html5写一个音乐播放器

在HTML5中创建一个简单的音乐播放器时&#xff0c;你可以使用<audio>元素来实现。以下是一个基本的示例&#xff1a; html <!DOCTYPE html> <html> <head> <title>音乐播放器</title> </head> <body> <h1>音乐…...

postgresql类型转换函数

postgresql类型转换函数 简介CAST 函数to_date 函数to_timestamp 函数to_char 函数to_number 函数隐式类型转换 简介 类型转换函数用于将数据从一种类型转换为另一种类型。 CAST 函数 CAST ( expr AS data_type )函数用于将 expr 转换为 data_type 数据类型&#xff1b;Post…...

Go 自学:Array阵列

以下代码展示了用两种方法建立array。 package mainimport "fmt"func main() {var fruitList [4]stringfruitList[0] "Apple"fruitList[1] "Tomato"fruitList[3] "Peach"fmt.Println("Fruit list is: ", fruitList)fmt.…...

大数据平台与数据仓库的五大区别

随着大数据的快速发展&#xff0c;很多人难以区分大数据平台与数据仓库的区别&#xff0c;两者傻傻分不清楚。今天我们小编就给大家汇总了大数据平台与数据仓库的五大区别&#xff0c;希望有用哦&#xff01;仅供参考&#xff01; 大数据平台与数据仓库的五大区别 一、概念不同…...

React 钩子汇总

React 钩子 一、常用的 React 钩子&#xff1a; 1. useState 用于在函数式组件中添加状态管理。它返回一个状态值和一个更新状态的函数&#xff0c;让你可以在组件中追踪和更新状态。 2. useEffect 用于在组件渲染完成后执行副作用操作&#xff0c;比如数据获取、订阅等。…...

Python爬取旅游网站数据机票酒店价格对比分析

本文将介绍如何使用Python爬虫从旅游网站上获取机票和酒店的价格数据&#xff0c;并实现价格对比分析&#xff0c;帮助你做出明智的旅行决策。我们提供了完善的方案和代码&#xff0c;让你能够轻松操作并获得实际价值。 使用Python爬虫获取旅游网站上的机票和酒店价格数据&…...

OA项目之会议通知(查询是否参会反馈详情)

目录 会议查询 是否参会 反馈详情 讲解思路 会议通知SQL语句分析 反馈详情SQL语句分析 后台代码编写 前端代码编写 效果预览 会议查询 MeetingFeedBack.java package com.zking.oa.model;import org.lisen.mvc.util.AutoIncrement; import org.lisen.mvc.util.…...

如何维护自己的电脑的措施

维护自己的电脑可以采取以下措施&#xff1a; 硬件维护&#xff1a;定期清理电脑表面的灰尘和污垢&#xff0c;避免灰尘对电脑内部部件造成影响。电源插座要保持接触良好&#xff0c;保证电脑的电源稳定。如果使用笔记本电脑&#xff0c;要注意保证散热通畅&#xff0c;避免电…...

VS2022 Community 安装步骤

VS2022 Community 安装步骤&#xff08;C语言学习&#xff09; 1. 下载地址2. 安装步骤 1. 下载地址 链接: VS2022 Community下载地址 2. 安装步骤 双击图标进行安装。 点击【继续】后等待安装。 选择需要的安装包并修改安装位置&#xff0c;然后点击【安装】。 点击安装…...

vue3中mitt.js使用

在vue2中我们通过事件总线eventbus,来实现两个平行组件之间的通信&#xff1a; bus.js import Vue from vue // 创建vue实例 const Bus new Vue() export default Bus在具体的组件中&#xff1a; A.vue import Bus from ./bus.js // 发布一个事件 Bus.$emit(sendData, {nam…...

Redis 内存淘汰策略详解

Redis 内存淘汰策略详解 一、简介Redis内存管理问题 二、内存淘汰策略1.为什么需要内存淘汰策略2.内存淘汰策略分类&#xff08;1&#xff09;noeviction&#xff08;2&#xff09;allkeys-lru&#xff08;3&#xff09;allkeys-lfu&#xff08;4&#xff09;volatile-lru&…...

初识Redis之分布式

一.简单介绍: Redis是用来在内存中, 存储数据的, 他的初心是用来搞消息中间件(或者说消息队列 很熟悉了吧~~),但是呢用的不多,他现在主要是用来做 数据库,缓存 用来存储数据, 为什么不直接存储呢? Redis的优势就在于分布式系统 二.分布式系统 要说其分布式系统,简单想想都能…...

计算机网络-笔记-第三章-数据链路层

目录 三、第三章——数据链路层 1、数据链路层概述&#xff08;帧&#xff09; &#xff08;1&#xff09;封装成帧、差错检测、可靠传输&#xff08;简单介绍&#xff09; &#xff08;2&#xff09;CSMA/CD 2、封装成帧 &#xff08;1&#xff09;透明传输&#xff08;…...

【1】openGL glew示例代码分析绘制一个三角形

openGL文档 > docs.gl &#xff0c;可以直接查询函数的定义和使用 #include <iostream> #include <string> #include <GL/glew.h> #include <GLFW/glfw3.h>int main(void) {GLFWwindow* window;/* Initialize the library */if (!glfwInit())retu…...

android:新建工程文件介绍

一、前言当我们新建一个app时会呈现出固定的工程文件&#xff0c;这篇文章介绍新建工程里的文件。 二、介绍 Structure:就是你选择哪个页面就会显示那个页面的结构&#xff0c;就比如说我选择的是MainActivity他就会显示这个页面所使用的方法。 1-2&#xff1a;是android自动生…...

强化历程6-网络系列(2023.8.30)

文章目录 强化历程6-网络系列(2023.8.30)1 说一下OSI七层协议&#xff0c;为什么要分层&#xff1f;2 什么是TCP/IP协议&#xff0c;与OSI七层协议两者对比&#xff1f;3 什么是TCP协议&#xff0c;TCP协议和UDP协议区别&#xff1f;4 说一下TCP的三次握手和四次挥手5 两次握手…...

实战指南:利用快马ai为django项目生成开箱即用的vscode python开发环境

作为一个长期使用Python开发Django项目的程序员&#xff0c;我深知配置开发环境是个既基础又容易踩坑的环节。最近尝试用InsCode(快马)平台生成配置方案&#xff0c;发现能省去大量重复劳动。下面分享我的实战经验&#xff1a; 项目结构规范化 平台生成的Django项目骨架严格遵循…...

OpenClaw对话日志分析:Qwen3-14B挖掘用户真实需求

OpenClaw对话日志分析&#xff1a;Qwen3-14B挖掘用户真实需求 1. 为什么需要分析对话日志&#xff1f; 作为一个长期使用OpenClaw的开发者&#xff0c;我发现自己陷入了一个典型的技术陷阱&#xff1a;花大量时间开发新功能&#xff0c;却很少回头审视用户实际如何使用这些功…...

嵌入式系统调试实战:工具、技巧与内存管理

1. 嵌入式调试的核心价值与挑战从事嵌入式开发十多年来&#xff0c;我深刻体会到调试环节往往决定着项目的成败。与桌面软件开发不同&#xff0c;嵌入式系统一旦部署后很难进行现场维护&#xff0c;这就要求我们必须在上线前解决所有潜在问题。根据行业统计&#xff0c;嵌入式工…...

多层PCB结构设计与过孔工艺全解析

1. 多层PCB内部结构全解析作为一名硬件工程师&#xff0c;第一次拆解十层PCB板时&#xff0c;那种震撼感至今难忘。密密麻麻的过孔像微型城市的地下管网&#xff0c;精密排布的走线堪比神经脉络。今天我就用最直观的立体解剖图&#xff0c;带你看透这些"电子乐高"的搭…...

MIKE URBAN中如何添加污水管水质

管网中的水质一直是管网模型中的一个难题&#xff0c;很多群友也要求小编更新水质方面的内容&#xff0c;一方面&#xff0c;其实水质相关的内容官方资料已经很多了&#xff0c; 觉得没必要重复更新。另一方面&#xff0c;管道水质率定实在太难以率定&#xff0c;很难算的准确。…...

N_m3u8DL-CLI-SimpleG:Windows平台最简M3U8视频下载工具完全指南

N_m3u8DL-CLI-SimpleG&#xff1a;Windows平台最简M3U8视频下载工具完全指南 【免费下载链接】N_m3u8DL-CLI-SimpleG N_m3u8DL-CLIs simple GUI 项目地址: https://gitcode.com/gh_mirrors/nm3/N_m3u8DL-CLI-SimpleG 如果你正在寻找一款简单易用的M3U8视频下载工具&…...

卡尔曼滤波在无人机飞控和机器人SLAM里到底怎么用?一个实例讲透

卡尔曼滤波在无人机飞控中的实战&#xff1a;从IMU-GPS融合到状态估计 1. 无人机状态估计的工程挑战 当你在郊外试飞新组装的四旋翼无人机时&#xff0c;突然发现GPS信号出现波动&#xff0c;而IMU数据也开始漂移。这时飞控系统如何保持稳定的姿态控制&#xff1f;这个看似简单…...

多语言交易所/外汇系统源码/合约/期权/杠杆合约 秒合约/理财/申购

支持控盈亏等等功能支持合约、期权两大交易品类&#xff08;当前选中「期权」&#xff09;&#xff0c;以 XRP/USDT 为交易对示例&#xff0c;提供双向交易&#xff1a;买涨&#xff08;做多&#xff09;&#xff1a;预判价格上涨时开仓盈利买跌&#xff08;做空&#xff09;&a…...

基于STM32F与ESP8266的智能桌面天气时钟:从网络授时到OLED显示的完整实现

1. 项目背景与核心功能 最近在工作室捣鼓了一个特别实用的小玩意儿——用STM32F和ESP8266做的智能桌面天气时钟。这可不是普通的电子钟&#xff0c;它能自动联网校准时间&#xff0c;还能实时显示当地天气&#xff0c;放在书桌上既美观又实用。很多朋友看到后都问我是怎么做的&…...

施密特触发器在智能家居中的7个隐藏用法:从空调变频到漏电保护

施密特触发器在智能家居中的7个隐藏用法&#xff1a;从空调变频到漏电保护 智能家居的普及让我们的生活更加便捷&#xff0c;但背后支撑这些设备的电子技术却鲜为人知。施密特触发器作为一种基础的电子元件&#xff0c;在智能家居系统中扮演着关键角色。它不仅能解决信号抖动问…...