关于STM32莫名死机的一些问题记录

STM32分配堆栈空间不足问题原因及解决方法 本文针对实践中STM32堆栈空间不足问题展开讨论。经过分析发现,如果动态内存分配需求过多时,需要手动调节堆空间。可以通过修改启动文件或在STM32CubeMX中也可对堆栈大小进行修改。并初步得出用户可以有使用的堆空间约占系统堆空间一半的结论。 阅读详情

问题描述

  • ZET6跑了ucosII系统,在运行过程中有时会出现死机的情况,经过硬件调试发现,是进入延时的时候导致的这个问题,延时函数是没有问题的,而且这个问题是偶尔出现

问题排查

  • 死机之后指针指向了硬件错误中断,初步猜测是因为栈溢出,因为跑了系统,并且函数的嵌套层数比较多,导致栈内存不够,进入了硬件错误中断

解决方法

  • 将函数分离出来,减少函数嵌套,因为每一个函数都会分配单独的内存空间,所以多层的函数嵌套就会有多个函数空间,解决办法就是减少函数嵌套,这样当一个函数执行完弹栈之后,它的内存空间就会被释放。

其他资料

  • 使用keil编译程序的时候,会显示程序对内存的占用情况,其含义如下
    • Code为程序代码部分
    • RO-data 表示 程序定义的常量 const temp;
    • RW-data 表示 已初始化的全局变量
    • ZI-data 表示 未初始化的全局变量
    • Total RO Size (Code + RO Data)
    • Total RW Size (RW Data + ZI Data)
    • Total ROM Size (Code + RO Data + RW Data)
    • 初始化时RW-data从flash拷贝到RAM
  • 可以修改程序定义的堆栈大小
    • 猜想因为申请了很多零时变量,可能需要调整Stack_Size
    • 在STM32F10x.s文件中
    • 修改Stack_Size EQU 0x00000200
    • 成Stack_Size EQU 0x00000400
STM32复位死机(无法启动) STM32使用IWDG死机 嗯,不知道怎么说,stm32的看门狗死机了,下面是仿真时报错信息: The processor has escalated a configurable-priority exception to HardFault. An instruction executed with an invalid EPSR.T or EPSR.IT field (CFSR.INVSTATE). Exception occured at PC = 0x0, LR = 0x0 现象是有时会死机有时又 阅读详情

相关推荐

STM32L475VET6死机了别慌!手把手教你用Trace32分析LiteOS的dump文件(保姆级流程)

本文详细介绍了如何使用Trace32工具分析STM32L475VET6死机时的LiteOS dump文件,提供从快速取证到高级分析的完整流程。涵盖J-Link急救模式、Trace32环境配置、寄存器验伤、调用栈回溯及常见死机模式侦破技巧,帮助开发者快速定位和解决嵌入式系统崩溃问题。

weixin_42527401的博客 381

STM32跳至硬件错误中断(HardFault_Handle) 原因及参考解决方法

一、HardFault_Handle引起的原因: 1、遇到错误问题是数据类型不对,导致该步骤永远不能执行到,跳至硬件错误中断;所以硬件中断可尝试查找数据类型错误。 2、堆栈设置错误也会跳至hardwarefault; 3、如果上电后, 在调试时, 执行单步, 会在不确定位置的地方产生HardFault_Handle, 检查一下你的时钟配置(外部晶振频率, SysTemInit/PLLConfig相关函数以及晶振频率宏定义), 可能是超频了...导致了STM32不稳定. 4、如果在使用某些参数时,使用

瑞奇聊通信模组 4万+

STM32串口死机排查:Overrun错误原理与根治方案

串口通信是嵌入式系统中基础且广泛使用的数据交换方式,其稳定性直接影响设备可靠性。在异步串行通信中,当接收端处理速度跟不上数据发送速率时,硬件会触发溢出错误(Overrun Error),导致接收通道被逻辑锁定,表现为通信中断的‘死机’现象。这一机制在STM32等MCU的USART外设中尤为关键,若错误标志未及时清除,将永久阻塞数据接收。从技术价值看,正确处理Overrun错误能显著提升系统在工业控制、数据采集等场景下的长期运行稳定性。本文聚焦STM32串口ORE问题的产生原理、诊断方法,并提供从中断处理、D

weixin_29192141的博客 287

STM32F103使用串口DMA收发时进入帧错误中断跑飞

STM32f103串口DMA收发帧错误

qq_44463506的博客 4191

STM32开发三大坑:SWD禁用、中断延时死机、PWM刹车冲突

在嵌入式开发中,STM32作为主流MCU,其稳定性不仅取决于业务逻辑,更取决于系统级配置的严谨性。许多开发者常因忽略调试接口复用、中断优先级、定时器保护机制等底层细节,导致“程序能跑却连不上调试器”“中断中调用延时使系统假死”“PWM输出莫名消失”等疑难问题。理解SWD调试接口与GPIO的互斥关系、HAL_Delay依赖SysTick中断的原理、高级定时器刹车功能与引脚复用的冲突机制,是排查此类故障的关键。这些知识在Keil、IAR、STM32CubeIDE等工具链中均适用,尤其适合毕业设计、在校竞赛及刚入

weixin_34413802的博客 432

STM32 Bootloader跳转APP避坑指南:如何避免中断和堆栈问题

本文详细解析了STM32 Bootloader跳转到用户应用程序(APP)时常见的中断和堆栈问题。通过剖析跳转的本质、提供稳健的跳转函数代码、讲解APP工程配置要点及高级调试技巧,帮助开发者避免程序跑飞或死机,实现稳定可靠的固件升级。

weixin_29172201的博客 186

uC/os-ii在MDK下使用心得

还是上次那个lwip+ucos-ii的项目,因为整个功能已经基本实现,那么最后一步就是优化注释了,因此也就有了这篇关于MDK的使用心得。 1. MDK使用技巧 (1)、对于仅修改少部分文件,按F7(build)编译当前文件链接即可,不需要rebuild。如果build也是全部编译的话,勾掉options -> output下的Create Batch File即可。 (2)、MDK格式缩进,

智慧的专栏 1362

避坑指南:STM32CubeMX配置FreeRTOS消息队列时常见的5个内存溢出问题及解决方法

本文深入剖析了使用STM32CubeMX配置FreeRTOS消息队列时,最易导致内存溢出的五个关键问题,包括堆大小配置误区、队列深度与项目大小的隐形消耗、任务栈溢出、动态与静态分配选择以及调试技巧。文章提供了精确的计算方法、最佳实践和实战解决方案,帮助开发者从内存陷阱走向稳定运行,确保实时操作系统的可靠性。

tt34567的博客 483

STM32F40X系列单片机死机原因

STM32F40X系列单片机死机有两个主要原因:堆栈溢出或者死循环。

m0_51385756的博客 1601

STM32F429i-DISCO FreeRTOS开发实战:从CubeMX配置到任务调试

实时操作系统(RTOS)是嵌入式系统实现多任务并发与实时响应的核心软件架构。其基本原理是通过任务调度器管理多个任务,基于优先级进行抢占式或协作式调度,确保关键任务在规定时间内完成。RTOS的技术价值在于提升系统资源利用率、增强软件模块化并满足硬实时性要求,广泛应用于工业控制、物联网设备、汽车电子等领域。本文聚焦于STM32F429微控制器与FreeRTOS的集成开发,针对开发中常见的堆栈溢出检测与configTICK_T错误等典型问题,详细解析如何利用STM32CubeMX进行可视化配置,并结合Keil M

weixin_29164843的博客 291

STM32 FreeRTOS实战避坑指南:内存、中断与任务调度核心问题解析

实时操作系统(RTOS)是嵌入式开发中实现多任务管理与调度的核心机制,其原理在于通过任务调度器协调多个并发任务,确保关键任务得到及时响应。这一技术价值在于提升复杂嵌入式系统的可靠性、实时性与模块化程度,广泛应用于物联网设备、工业控制等领域。在STM32等Cortex-M系列MCU上,FreeRTOS作为轻量级RTOS的典型代表,其任务栈管理与中断优先级配置是工程实践中的关键挑战。本文聚焦于**栈溢出**与**中断优先级**这两个高频问题,深入剖析其成因与解决方案,帮助开发者规避系统崩溃与实时性失效的常见陷阱

weixin_33690963的博客 534

STM32突然死机以及莫名奇妙错误的解决

问题描述: 在STM32程序开发过程中,原本代码正常,为了实现接下来的功能,增加了一个结构体数组后,调试过程中遇到32死机的情况。后来通过逐步排查发现注释了结构体数组,程序运行正常,于是将结构体数组换成若干个数组替代,发现又出现了问题,这次是在串口调试过程中,显示了莫名其妙的结果。 我们结构体及结构体定义数组定义如下: #define max 100 struct m_data{ u8 compute_flag; //用于记录是否计算过的标志位 float temp; //若计算过则存储中间值

qq_42788340的博客 4385

ubuntu20.04安装UE4+Airsim环境

版本UE4.27+Airsim1.81

玖茸的博客 3380

STM32L0 系列 EEPROM 读写,程序卡死?

STM32L0 系列EEPROM读写,使用过程必须注意到的问题 !

不浮夸,不将就,认真对待学知识的我们 3210

H3C无线控制器二层注册实战:从零配置到AP上线全流程(附常见问题排查)

本文详细解析了H3C无线控制器二层注册的全流程,从网络基础准备、AC核心配置到AP上线,重点阐述了CAPWAP隧道建立的关键步骤。文章提供了清晰的典型配置示例,并针对AP无法上线、状态异常等常见问题,给出了六种典型故障现象的排查思路与解决命令,帮助网络工程师快速定位并解决问题。

weixin_29214199的博客 544

使用Dify打造视频生成工作流:从提示词到视频的完整指南

Dify作为开源LLM应用开发平台,通过可视化工作流编排实现从文本到视频的端到端生成,将创意周期从天级缩短至分钟级。核心流程包括提示词工程、视频API调用、存储分发和结果反馈。

牛奶夹心巧克力 3430

STM32L0 系列 EEPROM 读写,程序卡死?_stm32l0片内eeprom

STM32L051测试 (一、使用CubeMX生成工程文件 — ST系列芯片通用)STM32L051测试 (二、开始添加需要的代码)STM32L051测试 (三、I2C协议设备的添加测试)STM32L051测试 (四、Flash和EEPROM的读写)STM32L051测试 (五、Enocean模块串口通讯问题)STM32L0 系列产品都自带了 EEPROM ,使用保存数据起来特别方便,因为写 EEPROM 并不需要删除一篇扇区,可以直接在指定地址写入。

2401_85012481的博客 638

详细介绍pytorch重要的API

Tensor 是 PyTorch 中最基本的数据结构,提供了多种创建和操作张量的函数。Autograd 提供了自动求导功能,可以跟踪 Tensor 上的操作并计算梯度。损失函数用于衡量模型预测值与真实值之间的差异,提供了多种损失函数。是构建神经网络的基础类,提供了定义网络层和前向传播的方法。提供了 GPU 计算的支持,包括设备管理、内存管理等。提供了一些常用的函数式操作,如激活函数、损失函数等。提供了常用的数据集、模型架构和图像转换工具。提供了数据加载和预处理的工具,包括。

hello! 1223

记录问题2024

但是加入PC13灯闪烁代码在主函数里面时,oled不会卡时钟,时钟仍然在运转,灯也在闪烁(目前不清楚原因)如下图代码不会卡死。主循环有(实时时钟,温湿度读取,按键扫描,主页面显示时钟),在这里oled运行一会就卡死了,体现在时钟不更新。1.单片机出现莫名死机的状态。

gongmian7的博客 230

ICC2:postmask ECO参考脚本

更多学习内容请关注「拾陆楼」知识星球。

m0_61544122的博客 882

29、智能问答系统:原理、挑战与实现

本文深入探讨了智能问答系统的原理、挑战与实现方法。从智能问答系统的定义、重要性、问题类型和构建步骤,到实现中的歧义问题、数据集创建及基于规则的系统实现,全面解析了这一自然语言处理领域的重要应用。同时,文章还介绍了智能问答系统的应用场景、发展趋势以及面临的挑战与应对策略,为读者提供了一个全面而深入的理解框架。

redis7keeper的博客 163

STM32运行时程序卡在B.处

STM32运行时程序卡在B.处的问题处理的一天多,终于找到原因 1,表现 我所使用的芯片是stm32f427vit6,stm32f4系列芯片外设多数都相同,407,405的 用户也可以参考。 我的程序是使用can2收发数据,can2的外设的初始化函数,中断配置函数,中断服务函数都已经在另外一块板子,和工程上验证通过,故没有逻辑bug,本想遗址到新的工程上可以直接用,移植完成,编译通过,但是发...

zhuifeng_tjy163163的博客 4076

六、Tool 工具系统:让大模型拥有“手脚“

我问你一个问题:大模型能不能告诉你"北京今天天气怎么样"?能——它能用非常流畅的中文回答你不能——它不知道这个答案因为它没有联网能力,也没有实时数据。它可能会自信地编一个"今天晴,25 度"给你——这就是幻觉。问题出在哪?大模型是一个"推理引擎",不是一个"执行引擎"。它知道天气 API 怎么调用,但不能真的发出 HTTP 请求。它知道 Python 代码怎么写,但不能真的运行代码。它知道数学公式,但做不了精确的大数计算。Tool 工具系统解决的,就是这个"最后一公里"问题。

牛肉胡辣汤 157

STM32CubeC0实战指南:配置、裁剪与调试经验

嵌入式开发中,硬件抽象层与图形化配置工具是提升开发效率的关键。HAL库以完整封装简化外设操作,LL库以轻量设计贴近寄存器,二者在资源受限的Cortex-M0+内核MCU上形成互补。STM32CubeMX作为官方图形化工具,可基于芯片型号自动生成初始化工程。针对小家电、工业传感器等场景,工程师常面临Flash/RAM紧张、驱动选型与调试困难等挑战。STM32CubeC0固件包通过精简的HAL/LL驱动、CMSIS底层文件和配套例程,为STM32C0系列提供完整的开发支持。本文从目录结构、环境搭建、外设配置、驱

weixin_33755557的博客 409

13、超声断层乳腺图像融合算法:乳腺癌诊断新突破

本文介绍了一种新型超声断层乳腺图像融合算法,通过结合超声透射(UTTc、UTTα)和反射断层图像(URT),实现对乳腺组织的多参数自动可视化。该算法能有效区分良性与恶性肿瘤,具有高准确性、无辐射、低成本等优势,适用于大规模乳腺癌早期筛查。初步临床测试验证了其可行性,未来有望成为乳腺癌诊断的新标准。

9q8w7e6r5的博客 153

lwip-2.0.3

lwip是瑞典计算机科学院(SICS)的Adam Dunkels 开发的一个小型开源的TCP/IP协议栈。实现的重点是在保持TCP协议主要功能的基础上减少对RAM 的占用。

基于STM32的简易毕业设计2023:从选题到部署的实战全流程

最近在帮学弟学妹们看毕业设计,发现一个挺普遍的现象:很多基于STM32的毕设,功能点列了一堆,但代码写得像“一锅粥”,外设驱动、业务逻辑全挤在main.c里,后期加个功能或者查个Bug简直要命。这其实偏离了“工程实践”的初衷。今天,我就结合2023年常见的几个毕设方向(比如环境监测、智能小车),跟大家聊聊怎么从零开始,做一个的STM32毕业设计。目标不仅是“跑起来”,更要代码清晰、易于维护、资源可控,甚至为将来产品化打个基础。

2600_94960223的博客 328

ET2012新版免狗免安装绿色软件

ET2012新版免狗免安祖昂绿色软件。,新界面,新视觉,

上一篇: STM32中使用long long 型的数据以及数据的转换
下一篇: Ubuntu 设置自定义分辨率
CallMeSumo
博客等级 码龄10年 82粉丝 18原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值