PlatformIO 使用stm32CubeMx

上次PlatformIO 使用arduion平台, 然而做为一个悲剧工程师,总觉得arduion做demo还可以,然而做产品总有不放心,许是觉得黑盒子不是无法控制吧,不管怎样还是学习下按照常规做法,使用Stm32CubeMX生成代码,使用PlatformIO编译和下载。

1,使用Stm32Cube建立工程。按照正常使用配置IO,然后再Project Manager->Project 下面 Toolchain/IDE 下选择Makfile。Code Generator下 选择Copy only the necessary library files ,以及Generate peripheral in initialization as a pair of ‘.c/.h’files per peripheral(该项非必须) 具体如下图, 其他根据习惯及需求修改,然后生成code

stmcubemx

code

2,打开PlatformIO IDE 根据刚才目录新建项目,芯片选择使用的芯片stm32f103c8(Generic)

pio_cube

注意此时工程连接的库文件是platformIO下的, 要改成生成的代码要对platformio.ini 进行修改,主要修改为需要编译的C文件及inlcude 文件,由于生成时,只生成必要的文件,因此所有的都包含在内了,头文件一斤宏定义可以直接从makefile文件里面拷贝, 修改完后 怎加调试工具及烧录工具,具体内容如下:

[platformio]
src_dir = ./

[env:genericSTM32F103C8]
platform = ststm32
board = genericSTM32F103C8
;framework = stm32cube

build_flags =
-DUSE_HAL_DRIVER 
-DSTM32F103xB
-IInc
-IDrivers/STM32F1xx_HAL_Driver/Inc/Legacy
-IDrivers/STM32F1xx_HAL_Driver/Inc
-IMiddlewares/Third_Party/FreeRTOS/Source/include
-IMiddlewares/Third_Party/FreeRTOS/Source/CMSIS_RTOS_V2
-IMiddlewares/Third_Party/FreeRTOS/Source/portable/GCC/ARM_CM3
-IDrivers/CMSIS/Device/ST/STM32F1xx/Include
-IDrivers/CMSIS/Include
-IDrivers/CMSIS/Include

;extra_scripts = pre:CubeMX_script.py
src_filter = +<src/> +<startup_stm32f103xb.s> +<Drivers/> +<Middlewares/>
board_build.ldscript = ./STM32F103C8Tx_FLASH.ld
; build_unflags = -nostdlib -nostartfiles
debug_tool = jlink
upload_protocol = jlink

需要注意的时makefil里面的include文件都又反斜杠,platform里面需要删掉, 然后编译即可成功, 但此时连接的好像并不是stm32cube生成的库文件原因时platformio生成项目时自动连接了自动下载的库文件,此时需要删掉.vscode 文件夹,然后重新打开platformIO 编译即可所有文件均为自己目录下的文件,一切又都在控制之中了

3,从上述过程中可以看到platformIO 主要识别文件夹下的platformio.ini, 因此,可以先用CubeMx生成代码,然后编写platformIO,再用vscode打开项目文件夹编译即可成功。最后的问题是同以前用keil或者IAR建工程,然后用VScode查看编写代码相比似乎并没有什么太大差别?唯一的便是直接可以编译而已Sad smile。或者配合arduino及现成的开发板才是正道,关注结果而非过程,重视创意而非实现细节才对,自己总时太偏激了。。。

Leave a Reply

Your email address will not be published. Required fields are marked *