一个项目有两种板子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网站上的硬故障代码,似乎从未真正运行起来,只是卡在硬故障入口处。
|
|