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

相关文章:

  • 力扣热题100——滑动窗口
  • 【java】类和对象
  • 使用 AndroidNativeEmu 调用 JNI 函数
  • k8s学习记录:环境搭建(基于Kubeadmin)
  • 从入门到精通Rust:资源库整理
  • 【YOLOv11改进- 主干网络】YOLOv11+RepViT: 从ViT的角度重新审视Mobile的CNN助力YOLOv11有效涨点;
  • 解决Spring Boot中Druid连接池“discard long time none received connection“警告
  • DeepSeek R1的崛起与挑战:技术创新 与 普通人的反思
  • HTML之JavaScript DOM编程获取元素的方式
  • 制造业革命:数字化转型从哪里开始?
  • 【大模型系列】使用docker安装向量数据库Milvus问题备忘
  • Docker 与 Serverless(无服务器架构)
  • 玩客云OneCloud部署Zerotier虚拟局域网
  • 跨平台公式兼容性大模型提示词模板(飞书 + CSDN + Microsoft Word)
  • C++ 编程语言简介
  • P56 auto类型
  • ThinkPHP:配置Redis并使用
  • Python常用的函数和功能
  • HTML之JavaScript DOM操作元素(1)
  • Day1 初识AndroidAudio
  • 街区党支部书记们亮出治理实招,解锁“善治街区二十法”
  • 证据公布!菲律宾6人非法登上铁线礁活动
  • 初步结果显示,卡尼领导的加拿大自由党在联邦众议院选举中获胜
  • 闲暇时间的“堕落”
  • 伊朗阿巴斯港港口爆炸已致47人受伤
  • 审议民营经济促进法草案等,十四届全国人大常委会第十五次会议将举行