使用STM32CubeMX_import_project时BUG解决方法

Author Avatar
ZLXT 12月 07, 2018

  最近看见别人的项目中有用到STM32的,然而自己这么长时间也没学过什么控制器,于是决定学一手STM32。现在比较主流的还是利用标准库进行程序的开发,但未来的发展趋势却是利用STM32CubeMX和HAL库进行开发。好处是可以在STM32的平台上各芯片之间进行任意的代码移植,不用像移植标准库一样欲仙欲死。花了三天入个门,学会了控制GPIO,之后准备实践不同芯片间程序移植这个最优越的特性。
  通过使用import project可以从原来的工程生成新的工程,可以用于代码在不同芯片间的移植。


使用时出现的BUG

  import project后其他的选项一切正常,唯独Mcu Reference这个选项没有变,还是原来的芯片,且无法进行更改。

原来的工程

F103的旧工程


新的工程

F407的新工程出现的问题


生成的keil工程

综合后,生成keil工程出现的问题


解决方案

  将import project后的工程保存后直接关闭,不进行综合。之后用文本编辑器直接打开新生成的.ioc工程文件。在文件中找到ProjectManager.DevicId=将其后的芯片的值修改为现在所用的芯片型号,保存关闭即可。

生成的keil工程

工程文件要修改的地方


生成的keil工程

工程文件要修改后


生成的keil工程

修改后的工程


生成的keil工程

修改后生成的Keil工程


  STMCubeMX在进行工程移植后,先前的用户代码不会和Keil工程一起生成,需要重新编写。Hal库的兼容性比较强,可以在编写程序时将用户的程序和STMCubeMX自动生成的代码进行分开,只在MAIN函数中对用户代码进行调用,来方便以后工程移植到其它芯片上。