文章目录
最新的Simulink/STM32工作流已经摒弃了以前通过CubeMX生成主要框架,然后把Matlab的代码加入到项目的方式,新的工作流虽然还是要基于CubeMX,但CubeMX基于上仅仅是生成外设代码而已,后续的工程构建是基于GCC的,可以做到编译、生成、下载一键完成。
但是这种新的方式对调试不友好,我还没看到有哪篇文章介绍这种工程的调试方式。本文章介绍了构建模型时的一些特别设置,以及如何在STM32CubeIDE中调试生成的工程和代码
1. CubeMX的特别设置
1. Time base 不能用Systick
2. Project management setting
3. Advanced setting
- Use LL lib for all peripheral
- De-select visibility for all generated function calls
4. Add RX DMA for USART for xcp comms
2. 在Simulink中搭建模型
没什么特别的注意事项,略过
3. 将生成的工程导入STM32CubeIDE调试
1.在STM32CubeIDE(V1.9+)导入模型代码
2.拷贝模型生成代码时的编译命令参数:
输入到IDE的编译命令参数中:
已经可以成功编译了:
3. 设置MCU型号
看似这一步并不需要提前做,可能相关的MCU信息已经在makefile中指定了
4. 创建调试配置:
奇怪的是直接点小虫子并不能进入调试,必须要进入调试配置,然后点Debug才行
OK,现在可以调试了!
生成模型代码的时候要先前面的Monitor and tune,编译的代码才有调试信息,如果选择的是Build/Deploy & Start的话,编译选项不含调试,生成的elf不能调试。
4.再连接
代码生成好了以后如果没有改动过则不需要重新生成,但是一定要在Simulink中Start才行,否则程序会在某个地方一直等待。做法是先在IDE中将程序运行起来,然后在Simulink中Connect->Start即可: