地瓜patch 发表于 2025-3-25 22:36

stm32f070串口接受中断进入硬件错误

本帖最后由 地瓜patch 于 2025-3-25 23:07 编辑

为了解决stm32f407与stm32f070串口通信六七个小时后串口数据恒定不变的问题。
用cubeMX重新建立工程,生成项目代码。070用串口2中断接受407的数据。
出现的问题是在进入HAL_UART_RECEIVE_it()函数时,程序进入硬件错误HardFault_Handler 函数。
然后就没有然后了


地瓜patch 发表于 2025-3-26 16:37

结帖,犯了个致命低级错误,加载文件startup_stm32f070x6.s搞成startup_stm32f030x6.s了,问题解决

peterLaw 发表于 2025-3-26 16:45

学习一下,一般启动函数会导致问题

失物招領 发表于 2025-4-24 01:24

数组越界或指针非法访问,UART 接收缓冲区地址无效(如未初始化或越界)

她已醉 发表于 2025-4-24 02:35

中断嵌套或递归调用耗尽栈空间(STM32F070 的栈较小,默认约 1KB)

将爱藏于深海 发表于 2025-4-24 03:36


时钟配置错误也可能会这样,UART 波特率或时钟源配置不匹配

捧一束彼岸花 发表于 2025-4-24 04:34

UART 中断优先级配置不当,导致嵌套中断触发 HardFault

故意相遇 发表于 2025-4-24 05:36

在HardFault_Handler 中添加调试代码,读取 SCB 寄存器 确定错误类型

春日负喧 发表于 2025-4-24 06:36

确保传入HAL_UART_Receive_IT()的缓冲区地址有效且未被释放

春日负喧 发表于 2025-4-24 07:35


在CubeMX中确认 USART2 的时钟源(如 PCLK1)和 波特率 与 STM32F407 一致(如 115200)

白马过平川 发表于 2025-4-24 08:36

检查 USART2_TX/RX 引脚是否冲突(如被其他外设占用)

风凉 发表于 2025-4-24 09:36

避免 UART 中断被高优先级中断阻塞,在startup_stm32f070xx.s 中增大栈大小(如从 1KB 改为 2KB)

西洲 发表于 2025-4-24 10:34

在UART 错误回调函数中处理错误状态,HardFault 寄存器的具体值(CFSR/HFSR/MMFAR)
页: [1]
查看完整版本: stm32f070串口接受中断进入硬件错误