可以在一个STM32CubeIDE中为多个目标进行编译吗
我产品部署时使用STM32L452VET3。由于产品PCB仍在布局阶段,我使用STM32L452RET6的Nucleo开发板进行应用的开发和测试。考虑到这两款微控制器属于同一系列,我不想维护两个几乎相同的独立项目,但又想为两个设备保留各自的.ioc配置文件。有没有办法让两个.ioc文件输出到相同的Drivers/Core/Middleware目录,然后通过条件编译等方式选择不同的目标设备?
我之前也是L4系列这么干的,用同一个工程管理多个目标。可以在CubeIDE里新建多个Build Configuration,每个配置选不同的芯片和宏定义,挺方便的。 我之前也是L4系列这么干的,用同一个工程管理多个目标。可以在CubeIDE里新建多个Build Configuration,每个配置选不同的芯片和宏定义,挺方便的。 我建议你保留一个主工程,用#ifdef STM32L452xx这种条件编译方式区分两块板的差异。只要保持寄存器定义一致,问题不大。 我怀疑如果直接放两个.ioc文件在同一目录,CubeIDE会乱掉,它生成代码会覆盖文件。你可以建子目录存放不同.ioc,自己控制生成路径。 这需求挺常见的,其实Keil的多目标支持比CubeIDE强些,CubeIDE现在得靠多个build target变通实现。 我做法是用git分支,一个分支是L452VET3,一个是RET6,驱动共享,用软链接指向同一份Drivers,改动同步方便。 Nucleo那块其实就是封装不同封装的L4,除了Flash容量差点差异都不大。条件编译搞个宏就能兼容,不用两个工程。 Nucleo那块其实就是封装不同封装的L4,除了Flash容量差点差异都不大。条件编译搞个宏就能兼容,不用两个工程。 要是你用CMake方式构建就简单多了,直接定义不同target就能切换芯片。CubeIDE那套project structure有点死板。 有空可以试试CubeMX命令行生成代码,它支持指定输出路径,这样可以自动化生成两个配置文件到同一个源码树下。 其实还有个小技巧:在Memory窗口里添加多个区域,比如RAM和Flash都开着,方便对比数据变化,挺好用的。 可以建子目录存放不同.ioc,自己控制生成路径。 只要保持寄存器定义一致,问题不大。
页:
[1]