现象: 正常运行没问题, 但是一旦用gdb来debug, 开场很快就进hardfault
分析:
进了hardfault时候观察调用栈
竟然是从定时器中断过来的
也就是定时器中断执行这条时候
再往前推, 是初始化systick时候
也就是说, 前一行把中断打开, 这一行打开定时器时钟, 马上进了一次中断, 然后就崩了...
中断处理里面还在比较CCMR什么的寄存器呢, 这些东西还没有被初始化
把中断使能移动到定时器初始化之后就好了
原因: Hal驱动库版本老, 存在bug, 新版本已经修正.
github上主线的timebase模板已经修正了:
果然我现在的库是老的, 那么更新一下看看
升级到了1.8.5 结果也是不行的, 库里的时基模板文件已经修了这个bug, 但cubemx生成的还是一样
再试试升级cubemx本体
这回就好了, 能生成没bug的代码了