首先安装Platform IO插件,怎么安装的教程有很多,可以自行百度,就不在重复了。

本篇文章将会以正点原子的跑马灯例程作为移植对象,基于CMSIS固件库3.5版本

将实现在VSCode上的程序编写与烧录,至于Debug...先留个坑吧



1.建立空白工程

在PIO的主页点击New Project

然后在弹出的对话框中输入实际的信息(可能对话框加载需要一定的时间,视网络情况而定)

Name:      就根据自己的需要来取了
Board: 可以直接输入MCU型号,然后根据自己实际选择后面带Generic就可以了,当然也有一些官方的板子是在支持列表的
Freamwork: 这里选择CMSIS,因为我们要做的是基于标准库来开发
Location: 这个是工程存放的目录,根据自己需求来就可以了

完成这些之后点击Finish,然后就是无尽的等待,第一次加载的话可以先去干其他活了,过一段时间再来看一看。

等待加载完成了之后可以在VSCode的工作区看到一个空白的工程

这时候可以试着点击一下编译,会提示编译失败,因为还没有任何东西在里面

2.将代码搬过来

本次使用的例程为 ALIENTEK MINISTM32 实验1跑马灯-库函数操作

本次工程名称为BLINK

1.原子工程中的CORE、HARDWARE、STM32F10x_FWLib、SYSTEM文件夹复制到BLINK/src文件夹目录下

然后进入CORE目录,将两个startup文件删除。

2.将原子工程中USER目录下的

main.c
stm32f10x.h
stm32f10x_conf.h
stm32f10x_it.c
stm32f10x_it.h
system_stm32f10x.c
system_stm32f10x.h

这几个文件复制到BLINK/src目录下

完成后整个工程目录如下

3.工程配置

PIO的工程配置文件为platformio.ini ,位于工程的根目录;关于详细的讲解在这里:https://docs.platformio.org/en/latest/projectconf.html

下面是本次实例工程使用的工程配置文件

[env:genericSTM32F103C8]
platform = ststm32
board = genericSTM32F103C8
framework = cmsis upload_protocol = jlink ; 代码上传工具,
debug_tool = jlink ; debug工具
build_flags = ; Build options
-Isrc
-Isrc/CORE
-Isrc/HARDWARE/LED
-Isrc/STM32F10x_FWLib/inc
-Isrc/SYSTEM/delay
-Isrc/SYSTEM/sys
-Isrc/SYSTEM/usart -D STM32F10X_MD ; 定义全局宏
-D USE_STDPERIPH_DRIVER

代码上传工具可以选择blackmagic,jlink,stlink;实际上我用的dap-link,配置文件中写的jlink也可以正常下载代码。

此处参考:https://www.cnblogs.com/Laggage/p/11263725.html

工程配置好了之后,可以点击左下角的√进行编译。

此时会提示core_cm3.o中有错误

打开core_cm3.c

如下修改736行和753行





此处参考:https://blog.csdn.net/winds211/article/details/86187402

再编译一次,发现还是有错,这次提示的错误位于sys.c中

打开sys.c 如下图所示修改代码

此处参考:https://www.cnblogs.com/zengsf/p/7170629.html


这时候再编译一下应该就可以通过了,如果是原子的板子的话直接点击 → 应该就可以看到对应得LED再闪烁了;

如果不是原子的板子,根据实际情况修改一下代码就OK了。

以后就可以愉快地在VSCode里面玩耍STM32了。

虽然在VSCode里面写代码非常爽,但是由于不知道会有那些隐藏的BUG,不建议直接使用这种方式进行实际生产上的开发!!!此教程仅供学习使用。

STM32F103C8T6 在VSCode下使用Platform IO开发,基于库函数V3.5版本的更多相关文章

  1. Vetur:VSCode下强大的Vue开发工具

    Vue自从发布以来就一直受到前端开发人员的热爱,而除了一些本身优秀的特征之外,还有就是丰富的插件和工具的支持和更新.虽然现在的编辑器需要安装相应的plugins才能进行Vue组件化开发,但是越来越多优 ...

  2. vscode下搭建vue.js开发环境(基于最新的@Vue/cli 4.2.2)

    2020-02-13. 网上的那些怎么安装vue环境的2.x就不要再看了,都过时了,现在去官网下载,按照他们的设置各种问题.接下来看下最新的安装方法. 前四步是一样的: 1.下载并安装vscode 2 ...

  3. 【转】搭建Mac OS X下cocos2d-x的Android开发环境

    http://young40.github.io/blog/2013/02/23/setting-up-android-development-envirment-on-mac-os-x/ http: ...

  4. 使用IBM Blockchain Platform extension开发你的第一个fabric智能合约

    文章目录 安装IBM Blockchain Platform extension for VS Code 创建一个智能合约项目 理解智能合约 打包智能合约 Local Fabric Ops 安装智能合 ...

  5. 【转】linux和windows下安装python集成开发环境及其python包

    本系列分为两篇: 1.[转]windows和linux中搭建python集成开发环境IDE 2.[转]linux和windows下安装python集成开发环境及其python包 3.windows和l ...

  6. mac10.9下eclipse的storm开发环境搭建

    --------------------------------------- 博文作者:迦壹 博客地址:http://idoall.org/home.php?mod=space&uid=1& ...

  7. 使用React、Node.js、MongoDB、Socket.IO开发一个角色投票应用的学习过程(三)

    这几篇都是我原来首发在 segmentfault 上的地址:https://segmentfault.com/a/1190000005040834 突然想起来我这个博客冷落了好多年了,也该更新一下,呵 ...

  8. 使用socket.io client 开发时兼容IE低版本的办法

    使用socket.io client 开发时兼容IE低版本的办法 socket.io提供了针对各个版本浏览器的‘socket’功能的封转:websocket,长连接,流,flash什么的.给你格式化下 ...

  9. Windows 7/8/10 系统下Laravel框架的开发环境安装及部署详解(Vagrant + Homestead)

    注意! laravel/homestead box项目地址已经不再是原来的 https://atlas.hashicorp.com/laravel/boxes/homestead 而已经变更成 htt ...

随机推荐

  1. 文件读取(filestream)

    在stream中已经介绍过,文件读取应用filestream,其是以字节为单位读取文件的.在操作中,当应用filestream创建文件流,读取时应先定义一个字节数组,在转化成char类型,最后转化成s ...

  2. django-模板之静态文件加载(十四)

    1.在templates同级目录下建static 2.index.css 3.index.html {% load static %} <!DOCTYPE html> <html l ...

  3. 第八篇 Flask中的蓝图

    随着业务代码的增加,将所有代码都放在单个程序文件中,是非常不合适的.这不仅会让代码阅读变得困难,而且会给后期维护带来麻烦.如下示例:我们在一个文件中写入多个路由,这会使代码维护变得困难. 如图所示,如 ...

  4. git 的基本使用命令

    1,git 的作用:git是目前世界上最先进的分布式版本控制系统(没有之一) 用在版本控制  和  代码整合 2,git 配置: 1,git init  初始化文件,会在自己的文件夹下创建一个.git ...

  5. SpringBoot整合Redis在可视化工具乱码问题,以及常用的api

     pom依赖: <parent> <groupId>org.springframework.boot</groupId> <artifactId>spr ...

  6. CSPS模拟 94

    以后干脆不要在准备提交的代码里放调试信息. 再也不忘删printf可是memset还是看不见... T1 玄学错误,不想研究.skyh帮我研究出来了.HACKDATA:1 1 T2 傻逼做法. 发现一 ...

  7. [转载]1.4 UiPath参数的介绍和使用

    一.参数介绍 用于将数据从一个项目传递到另一个项目.在全局意义上,它们类似于变量,因为它们动态地存储数据并传递给它.变量在活动之间传递数据,而参数在自动化之间传递数据.因此,它们使你能够一次又一次地重 ...

  8. Dockerfile介绍及指令详情

    Dockerfile简介:   镜像的定制实际上就是定制每一层所添加的配置.文件.如果我们可以把每一层修改.安装.构建.操作的命令都写入一个脚本,用这个脚本来构建.定制镜像,那么哪些无法重复的问题.镜 ...

  9. 201871010114-李岩松《面向对象程序设计(java)》第四周学习总结

    项目 内容 这个作业属于哪个课程 https://www.cnblogs.com/nwnu-daizh/ 这个作业的要求在哪里 https://www.cnblogs.com/nwnu-daizh/p ...

  10. phpStudy中MySQL版本升级到5.7.17方法

    本文主要给大家介绍了关于phpStudy中升级MySQL版本到5.7.17的方法步骤,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面来一起看看吧.希望能帮 ...