我正在
STM32L4R9I-EVAL
开发板上编程,但我的项目已配置
对于 STM32L4S9AII6。我的时钟频率为 120MHz。
我断断续续地与以下错误作斗争大约 3 个月。几个月前我就此寻求帮助,并认为我已经解决了这个问题。
我想我解决了这个问题,然后它大约每 2-4 天随机弹出来毁了我的一天。当我试图配置一个一次性定时器时,问题首先出现在我的项目中。从那时起,我观察到 97% 的人确信这是 MxCube 的中断配置问题,但当我调试代码并分析 MxCube 自动生成的代码时,一切似乎都是正确的。
循环是这样进行的。由于各种原因,我必须对 MxCube 进行一些更改,例如从 FreeRTOS 中删除互斥锁或队列,或者使用 DMA 或 ADC 中断调整设置。我爬过的 ADC 和 DMA 中断是最糟糕的,从那以后我完全放弃了能够使用 DMA 和/或 ADC 中断的任何希望。我还注意到与前面提到的一次性计时器有很强的相关性。这个外围设备不能从我的项目中废弃。
无论如何,每次 bug 返回时,行为都是一样的。我通过调试模式在 IDE 中运行我的代码。程序进入 HAL_Init() 并在时基定时器(
tiM3,但我已经尝试过其他几个)之后启用 IRQ 我注意到 3 个从未配置的中断变为挂起(DMA1_ch3、DMA1_ch5 和 OTG_FS)。就像 MCU 完全失去了它。我制作了以下流程图来说明我在调试时看到的情况。
因此,我在 MxCube 中的 NVIC 选项卡上挣扎了几个小时或几天,然后问题就消失了,一切都很好。就像MCU被恶魔附身了一样。我从来没有见过这样的事情。
我什至尝试重新创建我的项目,以便从最新版本的 MxCube (6.5) 开始,但我没有注意到任何差异。我今天还注意到,一旦程序到达崩溃点,大约 4mA 的电流就开始流入 MCU 的一个 ADC 引脚 (PA7)。
这可能是因为我在使用不同 MCU 的 STM32L4R9I-EVAL 开发板上运行 STM32L4S9AII6 固件吗?
任何帮助将不胜感激。谢谢!
0