Posted on  Updated on 

使用platformio开发stm32标准库

前言

网上很多教程都不太合适,大多是基于正定原子的库,这里使用的单片机是STM32F103c8t6,烧录器为stlink。
默认大家VScode和platformio已经安装好了

开始

name为工程名称,board为板子类型,framework为架构,标准库架构为CMSIS
单击finish开始创建,建议开梯子,更快,打开如下

然后我们得删除一些东西,防止定义冲突
下图文件全部删除

下图文件system_stm32flxx删除

下图文件删除,vscode使用c++编译器

从官网下载固件包,这里使用3.5版本

将STM32F10x_StdPeriph_Driver复制到src文件下

在src文件下创建main.c文件

将下面.h文件复制到include,.c文件复制到src
STM32F10x_StdPeriph_Lib_V3.5.0\Libraries\CMSIS\CM3\DeviceSupport\ST\STM32F10x

进入编译器选择,选择startup_stm32f10x_md,根据实际单片机选择,复制到src下

将下面几个文件.h复制到include,。.c复制到src,

替换即可

结果如下

修改代码

1
2
3
4
5
6
7
8
9
10
11
12
13
[env:genericSTM32F103C8]
platform = ststm32
board = genericSTM32F103C8
framework = cmsis

debug_tool = stlink ;调试器
upload_protocol = stlink ;烧录器
build_flags =
-I src/STM32F10x_StdPeriph_Driver/inc ;库函数

-D USE_STDPERIPH_DRIVER ;宏定义
-D STM32F10X_MD

main写入代码

1
2
3
4
5
6
7
#include "stm32f10x.h"

int main(void){
while(1){

}
}

删除这两行代码,”C:/Users/Lenovo/.platformio/packages/framework-cmsis-stm32f1/Include”,这个,删除该文件这个代码

电机左下的对勾,编译