Cmake环境下使用cmsis-driver


前言

最近在搞IMU的统一驱动,在设计上想保持最大的兼容性,于是首先想到了通杀ARM的Cmsis-Driver,然而,STM32CubeMX的软件包设计内并没有CMSIS-Driver相关内容(史,只能说keil不愧是arm亲儿子),于是有了本文,即在GCC+Cmake环境下使用cmsis组件

探索过程

clone下来cmsis-driver的源码GitHub - ARM-software/CMSIS-Driver: Repository of microcontroller peripheral driver implementing the CMSIS-Driver API specification,并加入到CMakeLists.txt中

include_directories(Core/Inc Drivers/STM32G4xx_HAL_Driver/Inc Drivers/STM32G4xx_HAL_Driver/Inc/Legacy  
        Drivers/CMSIS/Device/ST/STM32G4xx/Include Drivers/CMSIS/Include  
        Middlewares/ST/ARM/DSP/Inc  
        CMSIS-Driver-2.9.0  
        CMSIS-Driver-2.9.0/Config  
        CMSIS-Driver-2.9.0/SPI)  
  
add_definitions(-DDEBUG -DUSE_HAL_DRIVER -DSTM32G431xx)  
  
file(GLOB_RECURSE SOURCES "Core/*.*" "Middlewares/*.*" "Drivers/*.*" "CMSIS-Driver-2.9.0/*.*" "bsp/*.*")

此时发现一点问题

于是去CMSIS的DocumentOverview里面查了一下,这玩应在Driver_SPI.h里面

项目目录一顿找,没有,everything最后发现应该在cmsis的源码包里面

在CubeMX里面找了一圈没发现这玩应怎么启用,文件可以确定在CMSIS/Driver/Include下,实现在DriverTemplate里面


想了一下CubeMX下载的repo里面应该会有,结果就是

ST:我把CMSIS去掉了一部分好让你知道HAL是我写的
是真没有(草
那怎么办,只好把CMSIS源码Clone下来手动加进去

include_directories(Core/Inc Drivers/STM32G4xx_HAL_Driver/Inc Drivers/STM32G4xx_HAL_Driver/Inc/Legacy  
        Drivers/CMSIS/Device/ST/STM32G4xx/Include  
        Drivers/CMSIS/Include  
        Drivers/CMSIS/Driver/Include  
        Middlewares/ST/ARM/DSP/Inc  
        CMSIS-Driver-2.9.0  
        CMSIS-Driver-2.9.0/Config  
        CMSIS-Driver-2.9.0/SPI)  
  
add_definitions(-DDEBUG -DUSE_HAL_DRIVER -DSTM32G431xx)  
  
file(GLOB_RECURSE SOURCES "Core/*.*" "Middlewares/*.*" "Drivers/*.*" "CMSIS-Driver-2.9.0/*.*" "bsp/*.*")

好了很多,但是注意到CMSIS-Driver调用了CMSIS-OS2,错误由于缺少头文件

目前暂不确定是否使用RTOS,继续加文件

好了,没错误了,但是好奇为啥调用了CMSIS-OS

杂记

STM32CubeMX的repo目录最好换一下,也好换
Help-Updater Settings

#高速电路设计


文章作者: Harry Zhang
版权声明: 本博客所有文章除特別声明外,均采用 CC BY 4.0 许可协议。转载请注明来源 Harry Zhang !
  目录