ESP32S3:解決RWDT無法觸發中斷問題,二次開發者怎么才能使用內部RTC看門狗中斷RWDT呢?

目錄

  • 基于ESP32S3:解決RWDT無法觸發中斷問題
      • 引言
      • 解決方案
        • 1. 查看報錯日志
        • 2. 分析報錯及一步一步找到解決方法
        • 3.小結
      • 我的源碼

基于ESP32S3:解決RWDT無法觸發中斷問題

引言

在嵌入式系統中,RWDT(看門狗定時器)是確保系統穩定性的重要組件。然而,在某些情況下,RWDT可能無法觸發預期的中斷。本文旨在探討此問題的原因及解決方案。

解決方案

1. 查看報錯日志

在這里插入圖片描述
??從上圖可以知道錯誤是程序那個位置發生的,那么報錯的程序如下圖所示:
在這里插入圖片描述

2. 分析報錯及一步一步找到解決方法

??從上面已經知道了導致報錯的程序位置了,那么我調用esp_intr_alloc函數傳入的形參與對比官方的源碼調用esp_intr_alloc來看,都沒有什么問題,猜測,一般是該中斷源可能已經被使用過導致的,我們可以分析一下esp_intr_alloc函數。

??跳轉到esp_intr_alloc函數中,如下圖所示:
在這里插入圖片描述
可以看到,該函數其只是調用esp_intr_alloc_intrstatus函數而已,那么跳轉到esp_intr_alloc_intrstatus函數中,如下圖所示:
在這里插入圖片描述
我們可以在紅色框框看出,該函數內使用的是ESP_EARLY_LOGV函數進行日志輸出。結果調用這個函數后并沒有ESP_EARLY_LOGV函數后并沒有生效,沒用對應的日志輸出出來,那我們先看看函數的介紹,如下圖:
log文件路徑:\Espressif\frameworks\esp-idf-v5.1.2\components\log\log.c
在這里插入圖片描述
在這里插入圖片描述
在這里插入圖片描述
在這里插入圖片描述
??從上面可只,log_level=ESP_LOG_VERBOSE,而LOG_LOCAL_LEVEL和esp_log_default_level又是哪里定義的呢?下圖是我找到其定義:
在這里插入圖片描述
在這里插入圖片描述
從上面可分析出,ESP_EARLY_LOGV日志輸出使能條件是 CONFIG_LOG_MAXIMUM_LEVEL>=ESP_LOG_VERBOSE 和 CONFIG_LOG_DEFAULT_LEVEL>=ESP_LOG_VERBOSE 同時成立。而CONFIG_LOG_MAXIMUM_LEVEL和CONFIG_LOG_DEFAULT_LEVEL都是在sdkconfig上定義的,那么我們可以通過menuconfig圖形化工具進行設置,如下:
在這里插入圖片描述
??重新編譯運行后,ESP_EARLY_LOGV就能正常輸出日志了,但是因為這種設置時全局的,導致系統所有的日志都輸出出來,這是不想看到的,因此只在這個函數修改 LOG_LOCAL_LEVEL和esp_log_default_level即可,那么就不會影響到全局了,操作如下圖所示:
在這里插入圖片描述
這是日志也能正常輸出了:
在這里插入圖片描述
在這里插入圖片描述
??從上面申請中斷的日志和RTC中斷源號可看出,在進入主函數和系統調度前就已經申請了,所以這也就是為什么申請RTC中斷失敗的原因了。那么現在就是要找找到底是哪里申請了該RTC中斷了,可以在函數調用中加esp_backtrace_print這個函數,這個函數是打印堆棧信息的,如下:
在這里插入圖片描述輸出日志如下:
在這里插入圖片描述
從上面日志可以確定,調用的文件是,如下圖:

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/web/70674.shtml
繁體地址,請注明出處:http://hk.pswp.cn/web/70674.shtml
英文地址,請注明出處:http://en.pswp.cn/web/70674.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

對計算機中緩存的理解和使用Redis作為緩存

使用Redis作為緩存緩存例子緩存的引入 Redis緩存的實現 使用Redis作為緩存 緩存 ?什么是緩存,第一次接觸這個東西是在考研學習408的時候,計算機組成原理里面學習到Cache緩存,用于降低由于內存和CPU的速度的差異帶來的延遲。它是在CPU和內存…

vue3的實用工具庫@vueuse/core

1.什么是vueuse/core 是一個基于 ?Vue Composition API? 開發的實用工具庫,旨在通過封裝高頻功能為可復用的組合式函數(Composables),簡化 Vue 應用的開發流程。 提供 ?200 開箱即用的函數?,覆蓋狀態管理、瀏覽器…

基于SSM的《計算機網絡》題庫管理系統(源碼+lw+部署文檔+講解),源碼可白嫖!

摘 要 《計算機網絡》題庫管理系統是一種新穎的考試管理模式,因為系統是用Java技術進行開發。系統分為三個用戶進行登錄并操作,分別是管理員、教師和學生。教師在系統后臺新增試題和試卷,學生進行在線考試,還能對考生記錄、錯題…

C++初階——簡單實現stack和queue

目錄 1、Deque(了解) 1.1 起源 1.2 結構 1.3 優缺點 1.4 應用 2、Stack 3、Queue 4、Priority_Queue 注意:stack,queue,priority_queue是容器適配器(container adaptor) ,封裝一個容器,按照某種規則使用&#…

第2課 樹莓派鏡像的燒錄

樹莓派的系統通常是安裝在SD卡上的?。SD卡作為啟動設備,負責啟動樹莓派并加載操作系統。這種設計使得樹莓派具有便攜性和靈活性,用戶可以通過更換SD卡來更換操作系統或恢復出廠設置。 燒錄樹莓派的鏡像即是將樹莓派鏡像燒錄到SD卡上,在此期間會格式化SD卡,如果SD卡…

【Unity】URP管線Shader編程實例詳解 (1) : 漩渦效果shader

作者說 本系列教程適用于有編程基礎和圖形學基礎知識的讀者.如果對您有所幫助,請點個免費的贊和關注,您的支持就是我更新最大的動力!如果你有任何想看的內容歡迎評論區留言!本系列教程Github : https://github.com/Sky0Master/Un…

如何安裝vm 和centos

安裝 VMware Workstation(以 Windows 系統為例) 1. 下載 VMware Workstation 打開 VMware 官方網站(Desktop Hypervisor Solutions | VMware ),在頁面中選擇適合你系統的版本進行下載。如果你是個人非商業使用&#x…

STM32-心知天氣項目

一、項目需求 使用 ESP8266 通過 HTTP 獲取天氣數據(心知天氣),并顯示在 OLED 屏幕上。 按鍵 1 :循環切換今天 / 明天 / 后天天氣數據; 按鍵 2 :更新天氣。 二、項目框圖 三、cjson作用 https://gi…

Wireshark簡單教程

1.打開Wireshark,點擊最上面欄目里面的“捕獲”中的“選項” 2.進入網卡選擇界面,選擇需要捕獲的選擇,這里我選擇WLAN 3.雙擊捕獲選擇出現下面界面 4.點擊如下圖紅方框即可停止捕獲 5.點擊下圖放大鏡可以進行放大 6.你也可以查詢tcp報文如下圖

【Http和Https區別】

概念: 一、Http協議 HTTP(超文本傳輸協議)是一種用于傳輸超媒體文檔(如HTML)的應用層協議,主要用于Web瀏覽器和服務器之間的通信。http也是客戶端和服務器之間請求與響應的標準協議,客戶端通常…

Unity Shader 學習13:屏幕后處理 - 使用高斯模糊的Bloom輝光效果

目錄 一、基本的后處理流程 - 以將畫面轉化為灰度圖為例 1. C#調用shader 2. Shader實現效果 二、Bloom輝光效果 1. 主要變量 2. Shader效果 (1)提取較亮區域 - pass1 (2)高斯模糊 - pass2&3 (3&#xff…

【R語言】dplyr包經典函數summarise函數

dplyr包經典函數summarise函數,后面改名乘reframe函數了,但是summarise仍然適用 這個函數的返回結果是一個新的數據框,下面講一下幾種常見用法 示例數據為R自帶的數據集mtcars 1.不分組 mtcars %>%summarise(mean mean(disp), n n()…

使用DeepSeek/ChatGPT等AI工具輔助編寫wireshark過濾器

隨著deepseek,chatgpt等大模型的能力越來越強大,本文將介紹借助deepseek,chatgpt等大模型工具,通過編寫提示詞,輔助生成全面的Wireshark顯示過濾器的能力。 每一種協議的字段眾多,流量分析的需求多種多樣,…

vscode設置自動換行

vscode設置自動換行 方法 方法 點擊文件->首選項->設置。搜索word wrap -> 選擇 on 。 搜索Word Wrap,并把選項改為on。

QT 中的元對象系統(一):元對象和元數據

目錄 1.為什么需要元系統 2.元數據 3.模擬元對象系統 3.1.元對象聲明 3.2.對C擴展 3.3初始化元對象 3.4.使用元對象 4.QT的元系統 4.1.元對象系統基于QObject類、Q_OBJECT宏、元對象編譯器MOC實現 4.2.元對象系統的功能 4.3.Q_PROPERTY()的使用 4.4.Q_INVOKABLE使用…

Pytorch實現之渾濁水下圖像增強

簡介 簡介:這也是一篇非常適合GAN小白們上手的架構文章!提出了一種基于GAN的水下圖像增強網絡。這種網絡與其他架構類似,生成器是卷積+激活函數+歸一化+殘差結構的組成,鑒別器是卷積+激活函數+歸一化以及全連接層。損失函數是常用的均方誤差、感知損失和對抗損失三部分。 …

TCPDF 任意文件讀取漏洞:隱藏在 PDF 生成背后的危險

在網絡安全的世界里,漏洞就像隱藏在黑暗中的“定時炸彈”,稍有不慎就會引發災難性的后果。今天,我們要聊的是一個與 PDF 生成相關的漏洞——TCPDF 任意文件讀取漏洞。這個漏洞可能讓攻擊者輕松讀取服務器上的敏感文件,甚至獲取整個…

【Git】六、企業級開發模型

文章目錄 Ⅰ. 前言Ⅱ. 系統開發環境Ⅲ. Git 分支設計規范master分支release分支develop分支feature分支hotfix分支 Ⅰ. 前言 ? 我們知道,一個軟件從零開始到最終交付,大概包括以下幾個階段:規劃、編碼、構建、測試、發布、部署和維護。 ?…

Kafka可視化工具EFAK(Kafka-eagle)安裝部署

Kafka Eagle是什么? Kafka Eagle是一款用于監控和管理Apache Kafka的開源系統,它提供了完善的管理頁面,例如Broker詳情、性能指標趨勢、Topic集合、消費者信息等。 源代碼地址:https://github.com/smartloli/kafka-eagle 前置條件…

C++:dfs,bfs各兩則

1.木棒 167. 木棒 - AcWing題庫 喬治拿來一組等長的木棒,將它們隨機地砍斷,使得每一節木棍的長度都不超過 5050 個長度單位。 然后他又想把這些木棍恢復到為裁截前的狀態,但忘記了初始時有多少木棒以及木棒的初始長度。 請你設計一個程序…