STM32U5 外部中断不响应问题分析

关键字: EXTI

1. 问题背景

客户的终端客户反馈产品会有偶发性的功能异常。问题比较难以复现。

经过调查,在 BOOT 程序跳转到 APP1 程序中时相对比较容易复现问题。查看客户代码,发现客户在 BOOT 程序中会对 EXTI 进行初始化,跳转到 APP 程序后,客户工程师在 APP 中再次对 EXTI 初始化。

检查 EXTI 相关寄存器描述。发现在初始化 EXTI_RTSR1@RTx 寄存器时,在写寄存器期间,如果上升沿信号产生,此时可能无法将相应的挂起位置位,从而导致丢失中断。会不会是这个原因导致的呢?寄存器截图如下:

图1. EXTI_RTSR1@RTx 寄存器描述

客户描述丢中断是在第二次初始化时导致的,但是第二次初始化并没有改变任何配置。即使在第二次进行了初始化,应该也不会导致中断丢失。

2. 问题复现

测试配置:

        硬件测试平台 NUCLEO-STM32U575+ NUCLEO-STM32H503

软件工具版本:

        STM32CubeMX Version : 6.12.0
        STM32Cubeide Version : 1.16.0

2.1. 两次初始化 EXTI 测试
2.1.1. 测试接线

图2. 硬件连接配置

图3. 接线配置

2.1.2. 测试配置

开始在 U575 进入第二次初始化之前产生触发信号给 H503,H503 检测到 U575 产生的起始触发信号后,H503 会产生一个上升沿给到 U575,这个上升沿的产生的时机每次增加一个 NOP 延时,U575 如果检测到 H503 产生的上升沿信号则进行软复位,如果没有检测到触发信号则将 PB10 拉高,以此去遍历所有的触发信号的触发点。

2.1.3. 测试代码

U575 代码:
第二次初始化代码

H503 代码:

2.1.4. 测试结果

CHA(蓝色):测试点 NUCLEO-H503_PA0 U5 产生的触发信号,U5 在进第二次初始化时 U5 会产生触发信号触发 H5 进入中断,H5 进入中断后会递加 NOP 延时后产生触发 U5 进入中断的信号

CHB(红色):测试点 NUCLEO-H503_PA1 H5 产生的触发 U5 进入中断的信号。

CHC(绿色):测试点 NUCLEO-U575_PB11 指示 U5 代码执行位置的信号。

CHD(黄色):测试点 NUCLEO-U575_NRST U5 的复位管脚。

CHE(紫色):测试点 NUCLEO-U575_PB10 指示 U5 接收到触发信号后未进入中断,执行到 while(1)循环将 PB10 拉高,示波器以这个通道的上升沿进行触发,去抓取不能触发中断的波形

测试波形如下:

图4. 测试波形

A 点放大波形如下图:
最后一次正常响应中断

图5. A 点

B 点放大波形如下图,未能响应中断。

图6. B 点

2.2. 分析

图7. 未响应中断波形分析

从测试波形来看随着时间的推进, 在进入第二次初始化 EXTI 时 U5 在 A 点产生触发信号,触发 H5 产生上升沿信号。在 B 点时,H5 产生上升沿信号,测试代码执行到 b-c 段,此时触发信号的到来,MCU 并未响应这个中断。此时正在设置 EXTICR 寄存器。而这个寄存器是用来配置复用开关的寄存器。

图8. EXTI mux GPIO 选择

3. 小结

MCU 设置 EXTICR 寄存器时,即使我们不改变 EXTICR 中的值,在 EXTICR 上操作时也会使用 MUX,这可能是导致出现中断无响应窗口的原因。建议客户的 EXTI 的初始化只在 Boot中做一次就可以了。
 

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。
如若转载,请注明出处:http://www.pswp.cn/bicheng/92316.shtml
繁体地址,请注明出处:http://hk.pswp.cn/bicheng/92316.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

17.Linux :selinux

Linux : selinux DAC vs MAC 对比模型控制方式决策依据安全强度DAC自主访问控制文件所有者的权限设置低MAC强制访问控制系统级安全策略极高SELinux的核心原理是基于 强制访问控制(MAC) 模型,通过为系统资源打上安全标签并制定精细…

如何在不停机的情况下,将MySQL单库的数据迁移到分库分表的架构上?

在业务高速发展的过程中,单库单表的MySQL架构往往会成为系统性能的瓶颈。将单库迁移到分库分表架构是一种常见的扩展方案,但如何在保证业务连续性的前提下完成这一迁移是一个挑战。以下是不停机迁移的几种主要方案: 一、基于双写的迁移方案 1…

Unix/Linux 系统编程中用于管理信号处理行为的核心概念或模型

在 Unix/Linux 系统编程中,管理信号处理行为涉及以下核心概念和模型,它们共同构成了信号处理的框架:1. 信号(Signal)模型 软件中断:信号是异步事件通知机制,类比硬件中断预定义类型:…

webrtc弱网-OveruseFrameDetector源码分析与算法原理

一、核心功能CPU负载检测:监控视频帧的捕获、编码、发送全流程耗时,实时计算CPU使用率自适应决策:基于CPU使用率阈值触发视频质量调整(降级/升级)多策略支持:提供新旧两套CPU负载估计算法,支持实…

Spring Cloud系列—Eureka服务注册/发现

上篇文章: Spring Cloud系列—简介https://blog.csdn.net/sniper_fandc/article/details/149936339?fromshareblogdetail&sharetypeblogdetail&sharerId149936339&sharereferPC&sharesourcesniper_fandc&sharefromfrom_link 在上篇文章中&…

QUdpSocket 详解:从协议基础、通信模式、数据传输特点、应用场景、调用方式到实战应用全面解析

前言 在网络通信的世界里,UDP 协议以其独特的 “快准狠” 特性占据着一席之地。作为 Qt 框架中 UDP 协议的封装者,QUdpSocket 为开发者提供了便捷高效的网络编程接口。​ 一、UDP 协议基础:QUdpSocket 的 历史 要理解 QUdpSocket,…

vue中reactive()和ref()的用法

在 Vue 3 的 Composition API 里,reactive() 和 ref() 都是用来把「普通数据」变成「响应式数据」的函数。 一句话区别: reactive() 只能包裹对象/数组;ref() 可以包裹任何类型,但在 模板 里读取时,不需要 .value。 下…

【公考基础】----备考规划篇

公考 公考:国家公务员考试 即:国考和省考 或 参公考试 包括但不限于:国考、省考、事业单位招考、教师招聘考试、军队文职招考等,一切进入国家党政军事业单位的考试。 考公整体流程 备考前:准备备考资料&#xf…

STM32江科大学习笔记,全功能按键非阻塞式实现,按键点击,双击,长按

目录 一、前言 二、关于实现非阻塞的办法 2.1 中断类型的选择 2.2 定时器中断 二、程序流程图 2.1 状态S0空闲状态 2.2 状态S1按键判断长按还是其他的事件 2.3 状态S2按键判断双击或者单击 2.4 状态S3按键已双击状态 2.5 状态S4长按状态 三、编写代码 3.1 按键初始…

动态代理常用的两种方式?

口语化回答好的,面试官,动态常见的两种,一种是 jdk 动态代理,一种是 cglib 动态代理,两者的最主要区别是 jdk 动态代理主要是依赖于接口创建代理对象,cglib 是通过生成子类的方式,不需要接口&am…

StarRocks vs ClickHouse:2025 年 OLAP 引擎终极对比指南

StarRocks 与 ClickHouse:高性能 OLAP 引擎的两种选择在当今数据驱动的商业环境中,选择合适的分析型数据库对于企业数据战略至关重要。StarRocks 和 ClickHouse 作为两款领先的 OLAP(在线分析处理)引擎,各自拥有独特的…

RuoYi-Cloud 微服务本地部署详细流程实录(IDEA + 本地 Windows 环境)

本文以 RuoYi-Cloud 3.x 版本为例,开发工具用的是 IntelliJ IDEA,数据库为 MySQL 8.x,注册中心选用本地 Nacos 2.2.3,Redis 为 3.x/5.x 均可。亲测全流程可用,细节与官方文档略有不同,避免新手踩坑。 目录 …

2025年了,程序员转行还这么难?别愁!大模型这趟“顺风车”,你搭不搭?

在“大龄程序员的未来在何方”这篇文章里比较乐观地介绍了程序员保持竞争力的几个方向,但现实依然是残酷的:很多人将不得不离开软件开发工作,转型去从事其他职业。 当你要这么做时,就会感慨:想不到一切竟如此艰难&…

CEH、OSCP、CISP、CISSP 四大网络安全认证攻略

以下是 CEH、OSCP、CISP、CISSP 四大网络安全认证的详细对比,涵盖认证定位、考试难度、适用场景及职业方向,帮助你快速选择适合自己的证书:1. 核心区别速览认证发证机构定位 考试形式适合人群国际认可度CEHEC-Council道德黑客渗透测试基础选择…

SnapDevelop支持uni-app开发:跨平台与原生体验的完美融合

随着移动互联网的迅速发展,开发者面临着多平台需求和技术挑战。传统开发模式要求为每个平台编写独立代码,不仅浪费时间,还增加了维护难度。作为一款强大的低代码开发工具,SnapDevelop打破了这一局限,通过对uni-app的支…

海康威视相机,MVS连接成功,但无图像怎么办?

问题:准备一个常见的海康 相机去海康机器视觉官网下载MVS软件。打开软件,连接相机。显示连接成功,并能看到相机的信息。点击开始采集发现没有图像解决:右侧找到触发。1. 触发模式 ON2.选择 软触发3 启用自动触发点击采集有图像但一…

Linux systemd 系统管理:systemctl 控制服务与守护进程

Linux systemd 系统管理:systemctl 控制服务与守护进程系统启动过程 Linux 系统的启动过程遵循以下步骤: 开机自检:计算机启动后,BIOS/UEFI 进行硬件自检,确认硬件设备正常MBR 引导:从指定的启动设备读取主…

《Day2-PyTorch Tensor 从入门到实践:核心操作与避坑指南》

一、Tensor的创建 在Torch中张量以 "类" 的形式封装起来,对张量的一些运算、处理的方法被封装在类中,官方文档: torch — PyTorch 2.7 documentation 1. 基本创建方式 以下讲的创建tensor的函数中有两个有默认值的参数dtype和d…

两种格式数据介绍——bin 、 yuv文件

一、场景存储 通常指的是用于存储摄像头或传感器原始采集数据的文件格式,尤其是在自动驾驶、机器人、安防、工业视觉等需要记录真实世界场景的应用中。格式存储内容用途场景特点.binLiDAR点云、毫米波雷达数据、IMU、GPS、原始传感器帧自动驾驶仿真、SLAM建图、数据…

【网络运维】Linux:SELinux简介和配置

SELinux 介绍 SELinux 概述 文件权限控制了哪些用户或用户组可以访问哪些特定文件,但未限定用户访问文件的方式。 例如:对于文件的写入权限而言, 结构化数据文件是否应当设计为只能使用特定的程序写入,但其他编辑器仍可以打开和修…