[STM32F2] STM32F205和STM32F405强制硬故障

[复制链接]
129|15
梧桐uuu 发表于 2025-10-16 10:34 | 显示全部楼层 |阅读模式
一个项目有两种板子STM32F205河STM32F405。系统运行FreeRTOS ,总共有三个任务。
嵌入式软件在两个版本之间共享应用代码,只有由CubeMX生成的部分不同。我使用了USB_OTG_FS和CAN1外设,TIM1作为系统时基,TIM2作为CAN消息的时间戳,以及CRC单元。没有特别复杂的东西。
将配置文件写入闪存时,我从定时器滴答中断得到一个奇怪的IRQ,然后出现硬故障。
最让我困惑的是,如果我将为STM32F205编译的代码加载到STM32F405上,一切都能按预期工作。没有崩溃,配置正确保存并通过CRC校验。
在CubeIDE中查看寄存器时,似乎是一个强制硬故障,HFSR的第30位被置位。CFSR的第16位被置位(UNDEFINSTR),但不确定这是否是硬件故障的原因。
我试了FreeRTOS的taskDISABLE_INTERRUPTS()函数、__enable_irq函数,并注释掉了系统中的其他两个任务,没找到问题出在哪里。试了FreeRTOS网站上的硬故障代码,似乎从未真正运行起来,只是卡在硬故障入口处。


cr315 发表于 2025-10-16 15:22 | 显示全部楼层
如果你的代码或库在F4上启用了FPU,但在F2上没有,这可能导致非法指令错误。
duo点 发表于 2025-10-16 16:23 | 显示全部楼层
可能是由于中断优先级配置错误或中断处理函数中存在非法操作。
elephant00 发表于 2025-10-16 15:23 | 显示全部楼层
检查所有中断处理函数,特别是与TIM、CAN和USB相关的中断。
flycamelaaa 发表于 2025-10-16 19:24 | 显示全部楼层
如果你的代码或数据访问了错误的内存地址,可能导致硬故障。
flycamelaaa 发表于 2025-10-16 19:25 | 显示全部楼层
指令集不兼容吧?
jcky001 发表于 2025-10-16 20:26 | 显示全部楼层
检查CubeMX生成的代码是否意外启用了FPU相关配置,在STM32F205的编译配置中禁用FPU
onlycook 发表于 2025-10-16 21:26 | 显示全部楼层
205的向量表在F405上未正确对齐,可能导致中断处理程序地址读取错误。
powerantone 发表于 2025-10-16 22:27 | 显示全部楼层
F405的定时器可能有额外功能或寄存器位,需检查CubeMX生成的代码是否在两种芯片上完全兼容。
solty 发表于 2025-10-16 15:58 | 显示全部楼层
可能硬故障处理函数本身有问题如栈溢出、无效指令
solty 发表于 2025-10-16 16:59 | 显示全部楼层
两种项目用相同版本的HAL库,避免已知Bug。
probedog 发表于 2025-10-16 15:30 | 显示全部楼层
可能是中断冲突
stormwind123 发表于 2025-10-16 19:41 | 显示全部楼层
F405的时钟树可能与F205不同,导致外设时钟异常。
七毛钱 发表于 2025-10-16 20:51 | 显示全部楼层
两种项目使用HAL库版本不一致?
今天会画卧蚕吗 发表于 2025-10-16 21:42 | 显示全部楼层
最可能的原因是编译时启用了Cortex-M4F特有的指令如FPU,但代码实际运行在Cortex-M3上。
内政奇才 发表于 2025-10-16 15:33 | 显示全部楼层
可能是中断向量表对齐或外设驱动不兼容的问题。
您需要登录后才可以回帖 登录 | 注册

本版积分规则

61

主题

63

帖子

0

粉丝
快速回复 在线客服 返回列表 返回顶部