首先安装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. ES6---变量解构赋值

    1.数组的解构赋值 1.1 基本用法 解构赋值:在ES6中 ,按照一定模式从数组和对象中提取值,然后对变量进行赋值,这被称为解构赋值.本质:这种写法属于“模式匹配”,只要等号两边的模式相同,左边的变量 ...

  2. Openmp多线程编程练习

    环境配置 一般使用Visual Studio2019来作为openmp的编程环境 调试-->属性-->C/C++-->所有选项-->Openmp支持改为 是(可以使用下拉菜单) ...

  3. 第二十九章 System V共享内存

    共享内存数据结构 共享内存函数 shmget int shmget(key_t key, size_t size, int shmflg); 功能: 用于创建共享内存 参数: key : 这个共享内存 ...

  4. mysql分组和去重同时使用

    这是我的数据结构: 这是我的统计SQL

  5. [2018-06-28] 创建第一个django项目

    1.创建一个名称为tmpl的项目 django-admin.py startproject tmpl 2.进入刚刚创建的tmpl目录 cd tmpl 3.创建一个名称为learn的应用 python ...

  6. 手写一个简易的IOC

    这个小项目是我读过一点Spring的源码后,模仿Spring的IOC写的一个简易的IOC,当然Spring的在天上,我写的在马里亚纳海沟,哈哈 感兴趣的小伙伴可以去我的github拉取代码看着玩 地址 ...

  7. nginx篇最初级用法之地址重写

    nginx服务器的地址重写,主要用到的配置参数是rewrite rewrite regex replacement flag rewrite 旧地址 新地址 [选项] 支持的选项有: last 不再读 ...

  8. NOIP模拟测试8反思

    被动态逆序对戏耍,来写博客这次考试油炸了 模板爆零,哈希调半天导致T3没时间,我都干了些什么&_& T3思路: 利用环的性质先拼成一条链,然后二分边界. 证明就不说啦(其实是我不会) ...

  9. 雷神领域(并查集真是个好东西)并查集+流氓dp

    考场上,整整看了半个小时以上的题目!!! 化简题意: 给定一个全0矩阵,一些坐标点(x,y)为1,当三个点可以构成一个直角三角形时(直角边长为整数)拓展为一个矩形,之后从(0,0)出发,求最多的占用行 ...

  10. Python - selenium自动化-Chrome(headless)

    什么是 Headless Chrome Headless Chrome 是 Chrome 浏览器的无界面形态,可以在不打开浏览器的前提下,使用所有 Chrome 支持的特性运行你的程序.相比于现代浏览 ...