关于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(); 
  }
}

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

相关推荐
✎ ﹏梦醒͜ღ҉繁华落℘12 小时前
单片机基础知识---stm32单片机的优先级
stm32·单片机·mongodb
牛根生同志15 小时前
SPI数据收发的时候 TXE与RXNE标志位置位的时机
stm32·spi·transfer
goldenrolan17 小时前
学习型红外控制系统稳定性挂测工装专项总结
软件测试·python·stm32·嵌入式·红外
CC城子19 小时前
STM32H7_FDCAN 驱动笔记
stm32·can·canfd
意法半导体STM3219 小时前
【官方原创】如何为STM32CubeMX2配置Visual Studio Code配置方案
vscode·stm32·单片机·嵌入式硬件·策略模式·stm32cubemx·嵌入式开发
雾削木20 小时前
B语言经典教程现代化重构
java·前端·stm32·单片机·嵌入式硬件
Digitally20 小时前
如何快速将文件从电脑传输到平板电脑
stm32·嵌入式硬件·电脑
项目題供诗21 小时前
STM32-USART串口协议(二十二)
stm32·单片机·嵌入式硬件
欢乐熊嵌入式编程21 小时前
选型避坑:ESP32 vs STM32+模组 vs NB-IoT,不同场景怎么选
stm32·单片机·嵌入式硬件·物联网·esp32·嵌入式iot
振南的单片机世界21 小时前
ARM中断比51快在哪?硬件压栈+NVIC集中管理
arm开发·stm32·单片机·嵌入式硬件