在PlatformIO使用标准库开发STM32(解决冲突)

博主也是刚开始学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文件填写调试工具。

虽然VS Code很好看,但是不建议在实际生产环境中使用,因为不知道有没有隐藏的bug,本教程仅供学习使用。

  • 7
    点赞
  • 16
    收藏
    觉得还不错? 一键收藏
  • 7
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 7
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值