# debug 心得
又称:遇到的各种奇怪问题
# Keil 的编译优化
编译优化默认开启 O3,可能会导致调试时汇编代码与 C 代码顺序不一致
# Volatile
问题:调试中发现变量已经满足循环退出的条件,但始终未退出
如果没有使用 volatile 声明,编译器可能会优化掉对它的重复读取操作,导致主循环中永远看不到它的变化
资料 [https://zhuanlan.zhihu.com/p/1911474605773809001]
需要声明为 Volatile 类型
据说是编译器自动优化掉了,也许关闭编译优化也可以解决?
# DMA 自动装载
问题:23 年 H 题,连续两次 ADC 采样出现了问题
DMA 启动后,相应的装载不占用系统时钟
出于同步的原因,需要依据情况 HAL_Delay 相应时间,或者等待传输完成的中断标志位
# DMA 中断只触发一次
待研究
试一试关闭 DMA 重新打开
# 大的全局数组
问题:串口通讯,重定向 printf,程序总是卡死
参考 https://blog.csdn.net/networkhunter/article/details/83959254
和这篇文章里面一样,申请了大空间的全局数组,后面把数组拆分小就解决了,原因不明
建议不要使用 printf