博主也是刚开始学stm32,觉得keil不好看,想用更加熟悉的VS Code来开发STM32。我学的教材用的是标准库,可是网上大部分教程都是针对HAL库的。终于找到一篇教程之后,发现复制进去的库在链接时会和PlatformIO自带的库冲突。
这个是我很久之前写的,不知道现在还能不能用,现在我在用STM32CubeIDE(HAL库)
这是我参考的文章:
STM32F103 在VSCode下使用Platform IO 基于CMSIS标准库函数开发 - Zennn - 博客园 (cnblogs.com)
研究一番之后,是因为system_stm32f10x.c和PlatformIO自带的system_stm32f1xx.c冲突了,解决方法如下:
把这几个文件放进include目录,作为全局头文件。如果不想分类的话,直接放进src目录也行。
stm32f10x_conf.h
stm32f10x_it.h
stm32f10x.h
system_stm32f10x.h
然后把stm32f10x_it.c
文件、FWlib目录放进src目录。
具体结构如下:
然后修改platformio.ini
文件:
[env:genericSTM32F103VE]
platform = ststm32
board = genericSTM32F103VE ; 板块
framework = cmsis ; 标准库
upload_protocol = stlink ; 上传工具
debug_tool = stlink ; 调试工具
build_flags = ; Build 选项
-Isrc/FWlib/inc ; 添加搜索,目录
-D STM32F10X_MD ; 设备类型
-D USE_STDPERIPH_DRIVER
如果需要使用其他容量的芯片,可以参考下面修改设备类型:
STM32F10X_LD: STM32 Low density devices
STM32F10X_LD_VL: STM32 Low density Value Line devices
STM32F10X_MD: STM32 Medium density devices
STM32F10X_MD_VL: STM32 Medium density Value Line devices
STM32F10X_HD: STM32 High density devices
STM32F10X_HD_VL: STM32 High density value line devices
STM32F10X_XL: STM32 XL-density devices
STM32F10X_CL: STM32 Connectivity line devices
注意,不需要复制core_cm3
这些文件到工程目录,也省掉修改736行和753行这些操作。一般到这里就可以正常编译了,如果想调试,必须在platformio.ini
文件填写调试工具。