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

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这个函数,这个函数是打印堆栈信息的,如下:
在这里插入图片描述输出日志如下:
在这里插入图片描述
从上面日志可以确定,调用的文件是,如下图:

相关文章:

ESP32S3:解决RWDT无法触发中断问题,二次开发者怎么才能使用内部RTC看门狗中断RWDT呢?

目录 基于ESP32S3:解决RWDT无法触发中断问题引言解决方案1. 查看报错日志2. 分析报错及一步一步找到解决方法3.小结我的源码基于ESP32S3:解决RWDT无法触发中断问题 引言 在嵌入式系统中,RWDT(看门狗定时器)是确保系统稳定性的重要组件。然而,在某些情况下,RWDT可能无法…...

基于SpringBoot的民宿管理系统的设计与实现(源码+SQL脚本+LW+部署讲解等)

专注于大学生项目实战开发,讲解,毕业答疑辅导,欢迎高校老师/同行前辈交流合作✌。 技术范围:SpringBoot、Vue、SSM、HLMT、小程序、Jsp、PHP、Nodejs、Python、爬虫、数据可视化、安卓app、大数据、物联网、机器学习等设计与开发。 主要内容:…...

go 日志框架

内置log import ("log""os" )func main() {// 设置loglog.SetFlags(log.Llongfile | log.Lmicroseconds | log.Ldate)// 自定义日志前缀log.SetPrefix("[pprof]")log.Println("main ..")// 如果用format就用PrintF,而不是…...

如何在 PDF 文件中嵌入自定义数据

由于 PDF 文件格式功能强大且灵活,它经常被用于内部工作流程。有时候,将自定义数据嵌入 PDF 文件本身会非常有用。通常,这些信息会被大多数工具忽略,因此 PDF 仍然可以作为普通 PDF 文件正常使用。 以下是一些实现方法&#xff1…...

计算机毕业设计SpringBoot+Vue.js服装商城 服装购物系统(源码+LW文档+PPT+讲解+开题报告)

温馨提示:文末有 CSDN 平台官方提供的学长联系方式的名片! 温馨提示:文末有 CSDN 平台官方提供的学长联系方式的名片! 温馨提示:文末有 CSDN 平台官方提供的学长联系方式的名片! 作者简介:Java领…...

22.回溯算法4

递增子序列 这里不能排序&#xff0c;因为数组的顺序是对结果有影响的&#xff0c;所以只能通过used数组来去重 class Solution { public:vector<int> path;vector<vector<int>> res;void backtracking(vector<int>& nums,int start){if(path.si…...

linux -对文件描述符的操作dup、fcntl有五种

dup #include<unistd.h> int dup(int oldfd);作用&#xff1a;复制一个新的文件描述符fd 3, int fd1 dup(fd);f指向的是a.txt,fd1指向的也是a.txt从空闲的文件描述符表中找一个最小的作为新的拷贝的文件描述符返回&#xff1a;成功返回新的文件描述符&#xff0c;失败…...

技术解析 | 适用于TeamCity的Unreal Engine支持插件,提升游戏构建效率

龙智是JetBrains授权合作伙伴、Perforce授权合作伙伴&#xff0c;为您提供TeamCity、Perforce Helix Core等热门的游戏开发工具及一站式服务 TeamCity 是游戏开发的热门选择&#xff0c;大家选择它的原因包括支持 Perforce、可以进行本地安装&#xff0c;并提供了多种配置选项。…...

Ubuntu22.04 - brpc的安装和使用

目录 介绍安装使用 介绍 brpc 是用 c语言编写的工业级 RPC 框架&#xff0c;常用于搜索、存储、机器学习、广告、推荐等高性能系统 安装 先安装依赖 apt-get install -y git g make libssl-dev libprotobuf-dev libprotoc-dev protobuf-compiler libleveldb-dev libgflags-d…...

网络运维学习笔记 018 HCIA-Datacom综合实验02

文章目录 综合实验2sw3&#xff1a;sw4&#xff1a;gw&#xff1a;core1&#xff08;sw1&#xff09;&#xff1a;core2&#xff08;sw2&#xff09;&#xff1a;ISP 综合实验2 sw3&#xff1a; vlan 2 stp mode stp int e0/0/1 port link-type trunk port trunk allow-pass v…...

Vulhub靶机 Apache Druid(CVE-2021-25646)(渗透测试详解)

一、开启vulhub环境 docker-compose up -d 启动 docker ps 查看开放的端口 1、漏洞范围 在Druid0.20.0及更低版本中 二、访问靶机IP 8888端口 1、点击Load data进入新界面后&#xff0c;再点击local disk按钮。 2、进入新界面后&#xff0c;在标红框的Base directory栏写上…...

VSCode配置自动生成头文件

一、配置步骤&#xff1a; 1.打开命令面板&#xff08;CtrlShiftp&#xff09;&#xff1a; 2.输入snippets 选择配置代码片段 3. 选择新建全局代码片段 输入文件名,比如header_cpp(随便定义)&#xff0c;然后点击键盘回车按钮&#xff0c;得到下面这个文件。 增加配置文…...

Xcode如何高效的一键重命名某个关键字

1.选中某个需要修改的关键字&#xff1b; 2.右击&#xff0c;选择Refactor->Rename… 然后就会出现如下界面&#xff1a; 此时就可以一键重命名了。 还可以设置快捷键。 1.打开Settings 2.找到Key Bindings 3.搜索rename 4.出现三个&#xff0c;点击一个地方设置后其…...

React 高阶组件的优缺点

React 高阶组件的优缺点 优点 1. 代码复用性高 公共逻辑封装&#xff1a;当多个组件需要实现相同的功能或逻辑时&#xff0c;高阶组件可以将这些逻辑封装起来&#xff0c;避免代码重复。例如&#xff0c;多个组件都需要在挂载时进行数据获取操作&#xff0c;就可以创建一个数…...

(五)趣学设计模式 之 建造者模式!

目录 一、 啥是建造者模式&#xff1f;二、 为什么要用建造者模式&#xff1f;三、 建造者模式怎么实现&#xff1f;四、 建造者模式的应用场景五、 建造者模式的优点和缺点六、 总结 &#x1f31f;我的其他文章也讲解的比较有趣&#x1f601;&#xff0c;如果喜欢博主的讲解方…...

香橙派/树莓派 利用Wiring库 使用GPIO模拟PWM

香橙派或者树莓派 等开发板&#xff0c;本身带有硬件PWM,比如香橙派3 lts版&#xff0c;但是这个引脚不符合我的项目需求&#xff0c;我需要外接一个电机&#xff0c;在检测到人脸的时候 转动&#xff0c;但是这个硬件引脚&#xff0c;只要上电就开始输出pwm 信号&#xff0c;导…...

全面收集中间件Exporter适配:从Redis到ActiveMQ,掌握监控数据采集的最佳实践

#作者&#xff1a;任少近 文章目录 说明&#xff1a;一 Redis的适配exporter版1.1 Redis的exporter源码版本1.2 Redis的exporter的releases版1.3 Redis_exporter版本选择理由1.4 Redis_exporter docer镜像 二 Zookeeper的适配exporter版2.1 Zookeeper的exporter源码版本2.2 Zo…...

机器学习数学通关指南——链式法则

前言 本文隶属于专栏《机器学习数学通关指南》&#xff0c;该专栏为笔者原创&#xff0c;引用请注明来源&#xff0c;不足和错误之处请在评论区帮忙指出&#xff0c;谢谢&#xff01; 本专栏目录结构和参考文献请见《机器学习数学通关指南》 正文 一、定义与公式 链式法则&a…...

JavaScript函数-arguments的使用

在JavaScript编程语言中&#xff0c;函数是构建复杂逻辑和实现代码复用的关键组件。虽然现代JavaScript&#xff08;尤其是ES6及之后版本&#xff09;提供了更多灵活的方式来处理函数参数&#xff08;如剩余参数、默认参数等&#xff09;&#xff0c;但arguments对象仍然是一个…...

千峰React:函数组件使用(2)

前面写了三千字没保存&#xff0c;恨&#xff01; 批量渲染 function App() {const list [{id:0,text:aaaa},{id:1,text:bbbb},{id:2,text:cccc}]// for (let i 0; i < list.length; i) {// list[i] <li>{list[i]}</li>// }return (<div><…...

告别脚本恐惧!用Tosca Commander实现Web/API自动化测试的保姆级入门指南

告别脚本恐惧&#xff01;用Tosca Commander实现Web/API自动化测试的保姆级入门指南 第一次接触自动化测试时&#xff0c;看到满屏的代码和命令行&#xff0c;很多人会本能地产生抗拒。但测试工作又确实需要自动化来提升效率——这就是Tosca Commander的价值所在。作为一款领先…...

SAP ABAP BAPI扩展字段EXTENSIONIN:从原理到实战的避坑指南

1. 理解BAPI扩展字段EXTENSIONIN的核心机制 第一次接触SAP BAPI的EXTENSIONIN参数时&#xff0c;我完全被这个黑盒子搞懵了。明明按照标准字段传值一切正常&#xff0c;但自定义的增强字段就是死活不生效。后来花了三天时间通读SAP官方文档才明白&#xff0c;EXTENSIONIN本质上…...

告别商业EDA?在Ubuntu 22.04上配置开源EDA工具链:Yosys + GTKWave + iverilog

开源EDA工具链实战&#xff1a;在Ubuntu 22.04上构建YosysGTKWaveiverilog全流程环境 当我在大学实验室第一次接触FPGA开发时&#xff0c;商业EDA软件动辄数十万的授权费用让我震惊。直到发现开源EDA工具链&#xff0c;才意识到原来芯片设计可以如此"平民化"。本文将…...

基于STM32LXXX的无线收发芯片(Ci24R1)应用程序设计

一、简介: Ci24R1 是南京中科微推出的一款工作在 2.4GHz ISM 频段的 GFSK/FSK 无线收发芯片。它在设计上高度兼容 nRF24L01+ 的寄存器映射,常被视为低成本替代方案,同时增加了与 BLE4.2 的物理层兼容性 。 二、主要技术特性: ◼ 工作在2.4GHz ISM频段 ◼ 调制方式:GFSK…...

Python logging日志模块详解

在Python自动化测试&#xff08;尤其是接口自动化&#xff09;和日常开发中&#xff0c;日志是定位问题、跟踪程序运行状态的核心工具。logging作为Python标准库中的内置模块&#xff0c;无需额外安装&#xff0c;即可提供灵活、强大的日志记录功能&#xff0c;既能输出日志到控…...

从航拍到模型:手把手教你用‘焦距’和‘像元尺寸’反算无人机航高(附Excel计算工具)

从航测参数到飞行方案&#xff1a;无人机航高计算的工程实践指南 当大疆M300RTK搭载P1全画幅相机盘旋在工地上空时&#xff0c;机载计算机显示的实时航高数字背后&#xff0c;隐藏着一套精密的计算逻辑。对于航测工程师而言&#xff0c;掌握从相机参数到飞行参数的转换能力&…...

用Python搞定所有地图坐标系转换:一份涵盖WGS84、GCJ02、BD09的万能工具函数库

Python地理坐标系转换实战&#xff1a;从原理到封装的全方位指南 当你第一次在地图上标注GPS设备采集的坐标点&#xff0c;却发现它们与高德地图上的位置相差几百米时&#xff0c;那种困惑我至今记忆犹新。这就像拿着两种不同语言的菜单点菜——看似相同的信息&#xff0c;却因…...

vTestStudio中set和send命令的5个实战技巧(附CANoe Trace分析)

vTestStudio中set和send命令的5个实战技巧&#xff08;附CANoe Trace分析&#xff09; 在汽车电子测试领域&#xff0c;vTestStudio作为专业的测试工具&#xff0c;其set和send命令的灵活运用直接关系到测试效率和准确性。本文将分享五个经过实战验证的高级技巧&#xff0c;帮助…...

从电磁炮到磁悬浮:拆解导轨+导体模型,看懂前沿科技背后的高中物理

从电磁炮到磁悬浮&#xff1a;导轨导体模型如何驱动未来科技 想象一下&#xff0c;一枚炮弹无需火药就能以7倍音速飞出&#xff0c;或是一列列车悬浮在轨道上以600公里时速无声滑行——这些科幻场景已成现实&#xff0c;而它们的核心原理竟藏在高中物理课本里。当我们拆解电磁炮…...

别再手动抄数据了!用NI-VISA和C语言自动读取仪器数据的保姆级教程

从零构建自动化仪器数据采集系统&#xff1a;NI-VISA与C语言实战指南 实验室里&#xff0c;你盯着示波器屏幕上跳动的波形&#xff0c;手指在计算器和笔记本键盘间来回切换——这场景是否熟悉&#xff1f;数据采集本是科研与工程的核心环节&#xff0c;却因手动记录的低效成为许…...