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

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

相关推荐
项目題供诗2 小时前
STM32-TIM定时中断(十)
stm32·单片机·嵌入式硬件
CHANG_THE_WORLD4 小时前
PE文件二进制对比
stm32·单片机·嵌入式硬件
时光の尘7 小时前
【嵌入式大厂面经】·CAN总线常见考点(持续更新中···)
stm32·单片机·mcu·物联网·can·ack
染予9 小时前
将星历算法移植到stm32F427要面临的问题
stm32·单片机·嵌入式硬件
笨笨饿10 小时前
80_聊聊SPI以及它们的变体
linux·c语言·网络·stm32·单片机·算法·个人开发
水利行业RTU手艺人12 小时前
STM32 野外 RTU 固件升级配置丢失错乱终极解法:告别结构体字节偏移与 FATFS 掉电损坏的 KV 键值对实战
stm32·单片机·嵌入式硬件
d111111111d13 小时前
MQTT+STM32+云平台+AT命令的编写
服务器·笔记·stm32·单片机·嵌入式硬件·算法
LCG元13 小时前
STM32实战:基于STM32F103的触摸屏(TSC2046)驱动与校准
stm32·单片机·嵌入式硬件
国科安芯13 小时前
抗辐射 MCU 赋能商业航天电源系统:基于 AS32S601 的高可靠能量管理控制器设计与辐照验证
stm32·单片机·嵌入式硬件·mcu·risc-v·空间计算
大志出奇迹15 小时前
传输协议为大端,STM32为小端,数据传输的字节序问题
c语言·stm32·单片机·mcu·算法·rtos