提问人:Cinnamon 提问时间:11/18/2023 最后编辑:Cinnamon 更新时间:11/19/2023 访问量:45
尝试使用NUCLEO板调试程序STM32CubeIDE时出现断言错误:退出错误3
Assertion error while trying to debug program STM32CubeIDE, using NUCLEO board: exit error 3
问:
我刚刚开始学习如何对STM32板进行编程,我的第一个项目应该是闪烁的蓝色二极管。我正在学习教程,但是在CDT构建控制台中执行命令make -j16之后,我收到一条消息:
12:00:27 **** Incremental Build of configuration Debug for project test ****
make -j16 all
Assertion failed!
Program: C:\Users\Aya\Desktop\Saturn's house\CubeIDE\STM32CubeIDE_1.13.2\STM32CubeIDE\plugins\com.st.stm32cube.ide.mcu.externaltools.make.win32_2.1.0.202305091550\tools\bin\make.exe
File: ../job.c, Line 2648
Expression: ap <= end
"make -j16 all" terminated with exit code 3. Build might be incomplete.
12:00:39 Build Finished. 0 errors, 0 warnings. (took 11s.299ms)
我写的代码:我很困惑,因为显然它不会产生错误,但我仍然无法将此代码加载到微控制器中。此外,没有与项目同名的 .bin 文件(据说应该创建它,但我找不到它)。有谁知道如何解决这个问题?我正在使用 NUCLEO STM32-F207ZGT6。 HAL_GPIO_WritePin(GPIOD, GPIO_Pin_15, GPIO_PIN_SET);
我尝试切换到版本,尝试更新插件以及尝试使用不同的二极管 - 它总是生成相同的退出代码:退出代码 3。
答:
无法加载代码,因为代码尚未生成:
Build might be incomplete.
这看起来像是一个工具链问题。参考资料:
File: ../job.c, Line 2648
断言发生的位置不是代码中的断言,而是 make.exe(生成管理工具)中的断言。你没有错误,因为没有文件被编译 - 它从来没有走到那一步。
您似乎正在使用 STM32CubeIDE,但已将其安装在非标准位置(在 Windows 桌面上)。我强烈建议卸载并让工具链安装程序安装到默认路径。与任何基于 GNU 的工具一样,我肯定会避免安装到包含空格的路径上 - 凭借其 Linux 传统,Win32 版本并不总是与空格配合得很好。
或者,您不打算使用STM32CubeIDE工具链,而是安装并拿起它,而不是预期的工具链。如果您使用的是 CubeIDE,为什么要从命令行运行?IDE 将为您管理项目。make
我肯定会省略作为测试。这决定了将执行的并发“作业”的数量。鉴于断言消息指的是 ,它很可能是相关的。本教程的作者对您的平台一无所知,也不知道 16 个并发作业是否有意义。构建优化在大型项目中可能很重要,但对您的学习练习可能并不重要。它可能构建得更慢,但目前它根本没有构建,并且对于成功或正确的构建不是必需的。-j16
jobs.c
评论