使用STM32CubeMX产生启动相关代码,配置各种外设。在后续程序开发过程中,有可能使用STM32CubeMX逐步产生使用的代码,为了将其产生的代码和我们程序隔离,一种可行的程序架构如下:
在此架构中,STM32CubeMX产生的相关代码作为整个架构的HWD层,和我们的程序分开放到不同的目录,易于区分。
HWD层依赖HAL层,功能模块和业务逻辑也依赖HAL层。
HWD层依赖HAL层,在STM32CubeMX产生的代码USER处添加HAL层内的函数的依赖。
这样,当后续使用STM32CubeMX再次产生代码时,原USER处添加的代码不会发生变化。
HWD依赖HAL层,这种依赖在实现时使用HWD include HAL层内对应头文件。
为了在没有HWD层时,程序编译/链接/仿真不出问题,在HAL层内,使用弱函数(内部可以先为空,保证编译/链接正确),需要时在HWD层内实现同名函数功能。
RTOS层在层级上位于HAL层上,具体是否调用HAL层接口,依赖具体实现。
文件目录结构参考如下:
STM32CubeMX_Project为CubeMX产生的代码,在USER处加入了依赖代码。
Source为除HWD外的程序。
Output为编译出的目标文件。