前言
最近在搞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
#高速电路设计