关于STM32运行时卡住问题

最近在调试STM32H7的时候发现我运行突然卡住了,这个功能函数就只能执行一次,然后就用DEBUG查看卡在了哪里

c 复制代码
void HardFault_Handler(void)
{
  /* Go to infinite loop when Hard Fault exception occurs */
  while (1)
  {
  }
}

使用DEBUG后发现卡在了这个循环里

HardFault_Handler中断

HardFault_Handler硬件中断,是单片机中经常出现的一种异常问题。出现 HardFault_Handler 的原因主要有3类:

内存溢出或者访问越界:由于程序中申请的内存超出了系统的可用内存,或者申请的内存在使用过程中未被正确释放。这种情况会导致系统无法为其他请求分配足够的内存,甚至可能导致系统崩溃。访问了数组范围之外的内存位置或使用野指针,也会导致HardFault_Handler错误。

堆栈溢出:通常发生在函数调用或数组访问时。当函数内部的数组过大,或者递归调用层次太深时,就可能发生堆栈越界。

数组越界:

硬件故障:如果硬件出现故障,例如电源干扰、连接器故障或传感器故障等,可能会导致HardFault_Handler错误

这个时候你就要去检查你的数组空间是不是给的太小了,检查代码里malloc空间是不是申请成功了

可以在这个while循环里加一个软复位。

c 复制代码
void HardFault_Handler(void)
{
  /* Go to infinite loop when Hard Fault exception occurs */
  while (1)
  {
     NVIC_SystemReset(); 
  }
}

这样有问题系统直接复位。

相关推荐
拾知_H3 小时前
STM32+FreeRTOS基础配置
stm32·嵌入式硬件·freertos
WWJA王文举5 小时前
# STM32使用DMA后数据异常?可能不是DMA配置问题:从缓存、变量类型、时序到外设状态全面排查
stm32·嵌入式硬件·缓存
我和头发拼了5 小时前
STM32--9USART收发HEX数据包
stm32·单片机·嵌入式硬件
wuyk5555 小时前
7.AVL 树:第一个自平衡二叉搜索树
开发语言·stm32·单片机·算法
树的枝6 小时前
【STM32】05.TIM定时器
笔记·stm32·单片机·嵌入式硬件
caimouse6 小时前
ReactOS 图形系统分析(50):画笔子系统 — pen.c
c语言·开发语言·stm32
lingzhilab7 小时前
零知派——STM32F103驱动ST7789与INA219太阳能充电功率实时监测系统
stm32·单片机·嵌入式硬件
wuyk55517 小时前
98.C语言易混难点:字符数组与字符串指针的底层差异
c语言·开发语言·c++·stm32·嵌入式硬件·算法
zcmodeltech1 天前
工程机械与矿山机械沙盘模型多系统协同控制系统设计:基于STM32与Modbus RTU的露天开采-井下掘进-智慧矿山全场景联动方案
数据库·stm32·单片机·嵌入式硬件·制造·多分类
云泽8081 天前
深入浅出 STM32(十五):多通道GPIO驱动的软件抽象与实现
stm32·单片机·嵌入式硬件