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
英文地址,請注明出處:http://en.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 概述 文件權限控制了哪些用戶或用戶組可以訪問哪些特定文件,但未限定用戶訪問文件的方式。 例如:對于文件的寫入權限而言, 結構化數據文件是否應當設計為只能使用特定的程序寫入,但其他編輯器仍可以打開和修…