PlatformIO_platformio - CSDN
精华内容
参与话题
  • 1.生成工程 1.1 打开STM32CubeMX: 选择你的MCU,这里我用的是STM32F103RC RCC中开启外部HSE时钟,外部时钟比HSI更稳定些 开启DEBUG 4线 打开串口1用于打印调试信息,波特率115200,校验位0,停止位1 ...

    简介

    随着物联网近年来飞速的发展,嵌入式软件开发领域的发展也随之有所发展。集成开发环境Integrated Development Environment,简称IDE,在任何软件开发中都是最重要的部分之一。

    在以前,用来开发嵌入式应用的IDE通常是MDK Keil、IAR。但是上述IDE都是10年前的水平,从UI界面到稳定性都令人不满。所幸的是,新的IDE终于出现了,叫做PlatformIO

    Platform是基于Visual Studio Code(vscode),利用了vscode强大的扩展extension功能,使得开发者可以在vscode中直接调用gcc、jlink、gdb等进行开发、调试。

    PlatformIO只是一个集成开发环境,其本身几乎不包括任何实质性功能,但是其集成了很多了例如编译器、调试器等,主要包括以下:

    • vscode
    • gcc编译器,版本:arm-none-eabi-gcc (针对arm内核嵌入式设备的专属c语言编译器)
    • gdb调试器
    • jlink 驱动
    • Scons构建工具、

    以下是我实际使用的截图:
    主页:
    在这里插入图片描述
    设备管理页面:
    在这里插入图片描述
    debug界面:
    在这里插入图片描述





    安装PlatformIO

    先安装vscode:https://code.visualstudio.com/
    安装好之后,点击最左侧的工具栏,找到扩展,搜索PlatformIO,点击安装即可,安装好后会让你重启vscode。

    PlatformIO作为一个集成开发环境,只有其本身的安装包是托管在vscode官方上的,其他的很多东西都需要从第三方网站进行下载。所以PlatformIO安装过程比较缓慢。

    作者注:
    为了写这篇文章,我已经去阅读了PlatformIO的源码,从其中扣出了第三方包的下载网站是这里:http://dl.bintray.com/platformio/dl-packages/,并且看到其下载是使用python的request模块进行下载的(关键代码)。 而再google一下,发现可以设置 HTTP_PROXYHTTPS_PROXY 两个环境变量,来设置下载代理。

    综上所述,如果你的下载速度过慢,那么你可以直接上面的网站下载第三方包之后拷贝到C:/.platformio目录里面合适的位置中去 或者 需要速度快一点的梯子来做个代理。 (由于合适的位置我也不知道是哪里,所以推荐后者)




    新建工程

    安装好之后,会提示让你重启vscode,重启之后,即可进入主界面,如下图所示。
    在这里插入图片描述

    点击New Project,根据你的需要选择:

    • Name: 项目名称
    • Board:硬件平台,Generic代表裸板,其他的可选择STM3210C-EVAL这样的官方开发板。对于官方开发板,有些是板上自带的st-link或者是针对arduino的开发板,如果选择了的话,会自动帮你选择对应的st-link或者arduino框架
    • Framework:编程框架。 例如STM32HAL库、标准库、ARM CMSIS库等。
    • Location:项目位置。

    在这里插入图片描述

    这里我选择是STM32Cube(其实就是STM32HAL库),选择之后会进入下载中,这里和上述提到的安装中一样,会去第三方下载HAL库,过程会比较久。解决办法也是和上面一样:
    手动去第三方网站下 或者 使用梯子代理

    在这里插入图片描述



    编译调试

    创建好项目之后,使用快捷键 ctrl+k ctrl+o打开项目文件夹,在./src目录下新建一个main.c文件进行测试,文件内容如下:

    #include "stm32f1xx_hal.h"
    static int a = 1;
    // static char str[50] = "Hello PlatformIO";
    void SystemClock_Config(void);
    int main(void) {
        HAL_Init();
        SystemClock_Config();
        while(1) {
            __NOP();
        }
    }
    
    void SystemClock_Config(void)
    {
      RCC_OscInitTypeDef RCC_OscInitStruct = {0};
      RCC_ClkInitTypeDef RCC_ClkInitStruct = {0};
    
      /** Initializes the CPU, AHB and APB busses clocks 
      */
      RCC_OscInitStruct.OscillatorType = RCC_OSCILLATORTYPE_HSE;
      RCC_OscInitStruct.HSEState = RCC_HSE_ON;
      RCC_OscInitStruct.HSEPredivValue = RCC_HSE_PREDIV_DIV1;
      RCC_OscInitStruct.HSIState = RCC_HSI_ON;
      RCC_OscInitStruct.PLL.PLLState = RCC_PLL_ON;
      RCC_OscInitStruct.PLL.PLLSource = RCC_PLLSOURCE_HSE;
      RCC_OscInitStruct.PLL.PLLMUL = RCC_PLL_MUL9;
      if (HAL_RCC_OscConfig(&RCC_OscInitStruct) != HAL_OK)
      {
      }
      /** Initializes the CPU, AHB and APB busses clocks 
      */
      RCC_ClkInitStruct.ClockType = RCC_CLOCKTYPE_HCLK|RCC_CLOCKTYPE_SYSCLK
                                  |RCC_CLOCKTYPE_PCLK1|RCC_CLOCKTYPE_PCLK2;
      RCC_ClkInitStruct.SYSCLKSource = RCC_SYSCLKSOURCE_PLLCLK;
      RCC_ClkInitStruct.AHBCLKDivider = RCC_SYSCLK_DIV1;
      RCC_ClkInitStruct.APB1CLKDivider = RCC_HCLK_DIV2;
      RCC_ClkInitStruct.APB2CLKDivider = RCC_HCLK_DIV1;
    
      if (HAL_RCC_ClockConfig(&RCC_ClkInitStruct, FLASH_LATENCY_2) != HAL_OK)
      {
      }
    }
    

    然后在每一步都打上一个断点,等一下进行断点调试。
    在这里插入图片描述
    还需要在platformio.ini中指定一下调试工具,这里我用的是jlink:

    ; PlatformIO Project Configuration File
    ;
    ;   Build options: build flags, source filter
    ;   Upload options: custom upload port, speed and extra flags
    ;   Library options: dependencies, extra library storages
    ;   Advanced options: extra scripting
    ;
    ; Please visit documentation for the other options and examples
    ; https://docs.platformio.org/page/projectconf.html
    
    [env:genericSTM32F103RC]
    platform = ststm32
    board = genericSTM32F103RC
    framework = stm32cube
    debug_tool = jlink
    

    最后点击左侧的这个调试按钮切换到调试窗口,点击这个绿色的箭头进行调试。

    在这里插入图片描述
    最终的效果如下所示,可以看到在左侧:

    • 查看watch变量
    • 查看调用栈
    • 查看所有的断点
    • 查看ADC、USART等外设寄存器
    • 查看R0~R15等通用寄存器
    • 直接根据内存地址查看数据
    • 查看汇编代码

    在这里插入图片描述


    至此,关于PlatformIO的基本介绍就结束了,但是实际上我们使用PlatformIO还会涉及到更多的知识,如果你有兴趣欢迎查看我的下一篇文章: 嵌入式IDE-PlatformIO结合STM32CubeMX

    展开全文
  • 简述 介绍如何使用VScode 直接开发Arduino 程序,避免使用Arduino IDE时的没有...同时Visual Studio Code插件PlatformIO IDE开发Arduino 跨平台无论你是用的windows,ubuntu或者mac都可以玩转。 安装Visual Studi...

    ###简述
    介绍如何使用VScode 直接开发Arduino 程序,避免使用Arduino IDE时的没有代码提示功能,文件关系不清晰、头文件打开不方便等问题及使用Visual Stdio集成插件的庞大安装工程;同时Visual Studio Code插件PlatformIO IDE开发Arduino 跨平台无论你是用的windows,ubuntu或者mac都可以玩转。

    安装Visual Studio Code PlatformIO

    • https://code.visualstudio.com/页面下载安装vscode

    • 安装完成vscode启动,扩展页面下搜索platformio即可找到,选择第一个Platformio IDE,安装即可(这里需要耐心等待一会)

    • 安装完成,重新加载后,左下角会多一个小房子图标,点击后即可显示Platformio IDE主页

    测试

    • 选择New Project创建工程,选择相应的Board,我这里使用Mega2560,输入2560找到对应的Board
    • 修改main.cpp
    #include <Arduino.h>
    
    void setup() {
        pinMode(13, OUTPUT);
    }
    
    void loop() {
        digitalWrite(13, HIGH);
        delayMicroseconds(1000);
        digitalWrite(13, LOW);
        delay(1000);
    }
    
    • 编译与下载
      • 同样左下角有一堆按钮
        选择upload即可完成下载,指示灯也可以正常闪烁,可以看到我们连端口都没有选择就完成了下载的工作,非常方便。

    问题与高级功能

    arduino IDE有库管理功能可以,下载到需要的库。这里还要方便,例如我们想使用TimerOne输出PWM,

    #include <Arduino.h>
    #include <TimerOne.h>
    
    void setup() {
        Timer1.initialize(40);
    }
    
    void loop() {
        Timer1.pwm(11, 512);
    }
    

    Arduino IDE我们会这样写,然库管理搜索下载TimerOne库,在这里我们只需要在配置文件platformio.ini加上下面一句即可

    lib_deps = TimerOne
    

    选择编译按钮编译,我们可以看到输出信息

    找到了TimerOne库并下载至.piolibdeps文件夹下

    注意点

    • 接上面我们也可以把下载好的TimerOne库直接放置在lib目录下,也就无需添加lib_deps。
    • 我们不想在main里面直接使用TimerOne的pwm,我们想自己写一个motor库,motor库会使用到TimerOne

    motor.h

    #ifndef TEST_MOTOR_H_
    #define TEST_MOTOR_H_
    
    class Motor{
        public:
            void init(unsigned char fre);
            void pwm(unsigned short);
    };
    #endif
    

    motor.cpp

    #include "motor.h"
    #include "TimerOne.h"
    
    void Motor::init(unsigned char fre) {
        Timer1.initialize(1000.0/fre);
    }
    void Motor::pwm(unsigned short val) {
        Timer1.pwm(11,val);
    }
    

    main.cpp

    #include <Arduino.h>
    #include <motor.h>
    Motor motor1;
    void setup() {
        motor1.init(15);
    }
    
    void loop() {
        motor1.pwm(512);
    }
    
    
    • 编译完成,提示找不到TimerOne.h头文件,可以看到Library Dependency Graph没有TimerOne
    • 两种解决方法
    1. main.cpp include头文件TimerOne.h,这个比较low,英文main中根本就没有使用到TimerOne
      2.之前的办法添加lib_deps = TimerOne

    总结

    至此可以看到,使用VSCode集成的PlatformIO IDE插件开发与查看arduino的代码都非常方便

    展开全文
  • stm32开发新方式-platformio

    千次阅读 2018-01-09 05:36:21
    硬件测试环境: macOSstm32f103c8t6最小系统板st-link v2 新建pio工程 创建工程文件夹并进入: 1 mkdir test && cd test ...会看到以下结果,十里这里选择genericSTM32F103

    硬件测试环境:

    1. macOS
    2. stm32f103c8t6最小系统板
    3. st-link v2

    新建pio工程

    • 创建工程文件夹并进入:

      1
      mkdir test && cd test
    • 查找自己适合的板子

      1
      pio boards

      会看到以下结果,十里这里选择genericSTM32F103C8,这里执行这个命令,主要是查找对应自己最小系统板的board ID:

      1
      2
      3
      4
      5
      6
      7
      8
      9
      10
      ...
      disco_l152rb STM32L152RBT6 32Mhz 128kB 16kB ST STM32LDISCOVERY
      disco_f100rb STM32F100RBT6 24Mhz 128kB 8kB ST STM32VLDISCOVERY
      genericSTM32F103C8 STM32F103C8 72Mhz 64kB 20kB STM32F103C8 (20k RAM. 64k Flash)
      genericSTM32F103CB STM32F103CB 72Mhz 128kB 20kB STM32F103CB (20k RAM. 128k Flash)
      genericSTM32F103R8 STM32F103R8 72Mhz 64kB 20kB STM32F103R8 (20k RAM. 64k Flash)
      genericSTM32F103RB STM32F103RB 72Mhz 128kB 20kB STM32F103RB (20k RAM. 128k Flash)
      genericSTM32F103RC STM32F103RC 72Mhz 256kB 48kB STM32F103RC (48k RAM. 256k Flash)
      genericSTM32F103RE STM32F103RE 72Mhz 512kB 64kB STM32F103RE (64k RAM. 512k Flash)
      ...
    • 初始化工程,以vim作为IDE:

      1
      pio init --ide vim -b genericSTM32F103C8
    • 新建Makefile,添加以下内容(这里注意缩进问题):

      1
      2
      3
      4
      5
      6
      7
      8
      9
      10
      11
      12
      all:
      platformio -f -c vim run
      upload:
      platformio -f -c vim run --target upload
      clean:
      platformio -f -c vim run --target clean
      program:
      platformio -f -c vim run --target program
      uploadfs:
      platformio -f -c vim run --target uploadfs
      update:
      platformio -f -c vim update
    • 配置platformio.ini文件
      因为我们这里使用stlink v2,所以需要将程序上传方式定为stlink,默认生成的工程使用arduino框架,这是玩过Arduino的网友的福音,不是吗?只需添加一行指定程序上传方式,最终内容如下:

      1
      2
      3
      4
      5
      [env:genericSTM32F103C8]
      platform = ststm32
      board = genericSTM32F103C8
      framework = arduino
      upload_protocol = stlink

    添加代码

    添加点灯代码,十里的最小系统板上LED对应于管脚PB0,所以在src目录下添加main.cpp的内容如下:

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    #include <Arduino.h>
    void setup() {
    pinMode(PB0, OUTPUT);
    }
    void loop() {
    digitalWrite(PB0, HIGH);
    delay(500);
    digitalWrite(PB0, LOW);
    delay(500);
    }

    编译一下,编译的时候会下载stm32平台开发需要的编译工具和相关框架,你能做的就是waiting…:

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    test make all
    platformio -f -c vim run
    [Wed Nov 8 09:42:57 2017] Processing genericSTM32F103C8
    (upload_protocol: stlink; platform: ststm32; board: genericSTM32F103C8; framework: arduino)
    --------------------------------------------------------------------------------------------------
    Verbose mode can be enabled via `-v, --verbose` option
    Collected 27 compatible libraries
    Looking for dependencies...
    No dependencies
    Linking .pioenvs/genericSTM32F103C8/firmware.elf
    Calculating size .pioenvs/genericSTM32F103C8/firmware.elf
    text data bss dec hex filename
    6484 1936 312 8732 221c .pioenvs/genericSTM32F103C8/firmware.elf
    ================================ [SUCCESS] Took 1.55 seconds =====================================

    上传程序

    因为前面已经配置了程序上传方式为stlink,所以将stlink连接最小系统板和mac就可以执行上传了,这里也会下载相应的下载工具,waiting … :

    1
    make upload

    可能会遇到下面类似的问题:

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    test make upload
    platformio -f -c vim run --target upload
    [Wed Nov 8 09:50:10 2017] Processing genericSTM32F103C8
    (upload_protocol: stlink; platform: ststm32; board: genericSTM32F103C8; framework: arduino)
    ------------------------------------------------------------------------------------------------------
    Verbose mode can be enabled via `-v, --verbose` option
    Collected 27 compatible libraries
    Looking for dependencies...
    No dependencies
    Linking .pioenvs/genericSTM32F103C8/firmware.elf
    Checking program size
    text data bss dec hex filename
    6484 1936 312 8732 221c .pioenvs/genericSTM32F103C8/firmware.elf
    Uploading .pioenvs/genericSTM32F103C8/firmware.bin
    2017-11-08T09:50:11 INFO src/common.c: Loading device parameters....
    2017-11-08T09:50:11 WARN src/common.c: unknown chip id! 0xe0042000
    st-flash 1.3.1
    *** [upload] Error 255
    ====================================== [ERROR] Took 1.53 seconds ======================================
    make: *** [upload] Error 1

    有一个临时的解决方法,将板上的BOOT0VDD短接,复位一下最小系统板,会进入boot模式,此时执行make upload,程序会同时烧写在flash和内存上,一旦复位内存上的程序会消失,如果BOOT0还是接VDD的话还会进入boot模式,此时程序已经没了,但是flash 中仍然存在,所以只需将BOOT0短接GND再复位一下,板子就从flash启动了,所以最终程序调试方法为:

    调试程序:BOOT0短接VDD,每次上传程序先复位板子,然后执行make upload;不进行调试的话,先以调试程序的方式上传程序,然后短接BOOT0GND,复位一下板子,板子会从flash启动运行固化的程序。

    上述问题本来不该出现,后来发现原来是我的usb hub有问题,我直接将stlink v2连接到macbook上是没有上述问题的。


    展开全文
  • PlatformIO 集成在VSCODE中 , 往往出现问题后 在VSCode中删除再添加是不行的 最好的做法是 关闭VSCode,结束后台, 打开安装路径 ,C:\Users\用户名\.platformio 文件夹下 将packages...

     

    PlatformIO   集成在VSCODE中 ,

    往往出现问题后 在VSCode中删除再添加是不行的

    最好的做法是

     

     

     

     

     

     

     

     

     

     

     

     

    关闭VSCode,结束后台,

    打开安装路径 ,C:\Users\用户名\.platformio 文件夹下

    将 packages 文件夹和里面的内容保留 ,其余文件和文件夹全部删掉,

    因为packages 文件夹下存放的是各种下载的库,一般不会出错

    然后打开VSCOde  重新安装 PlatformIO

    这样最快

     

    展开全文
  • 文章目录安装步骤PlatformIO的配置 PlatformIO简介: PlatformIO 是开源的物联网开发生态系统。提供跨平台的代码构建器、集成开发环境(IDE),兼容 Arduino,ESP8266和mbed等。支持在Windows、Linux、macOS上使用预...
  • NodeMCU开发环境搭建之PlatformIO (ESP8266)

    万次阅读 多人点赞 2018-12-09 21:38:28
    最近一直在折腾,在尝试各种开发环境,因为手上有几块NodeMCU(ESP8266),就想用它做点东西,之前听说这个芯片是能作为MCU使用的。 我以前熟悉的是Keil集成开发环境,用起来很顺手,自然而然也想延续以前的做法,...
  • 一.平台背景与关联 如果你是初学者建议阅读这一章节,搞清楚平台的结构对于开发而言有事半功倍的效果 (1)什么是Arduino? Arduino是一家制作开源硬件和软件的公司,同时兼有项目和用户社区,该公司负责设计和...
  • 用clion自带的platformIO和开发esp32!!!

    千次阅读 2020-05-05 10:41:16
    用clion自带的platformIO和开发esp32!!! 太爱Jetbrains了!!! 上次用烦了keil写stm32,Clion马上给俺整了个2019.1更新,直接整合了stm32CubeMX,从此抛弃keil.(详见用clion自带的嵌入式开发功能和stm32cubeMX开发stm32!!...
  • 安装 platformIO ,在 platformIO上建立一个新工程,并烧写程序
  • PlatformIO资料

    千次阅读 2019-02-01 14:25:19
    使用PlatformIO构建和刷新固件 使用PlatformIO从Visual Studio代码构建和更新 NodeMCU开发环境搭建之PlatformIO (ESP8266) vscode arduino platformIO 入门 ESP32在VS Code下PlatformIo插件下首次体验...
  • platformio.org是一个物联网全能的IDE,甚至还贴心的提供了在命令行下编程的版本:platformio CLI 好东西不能独享啊,拿出来给看到这篇文章的童鞋们。 一、安装篇。 platformio是用python开发,所以,要先安装...
  • 物联网越来越成为炙手可热的领域,不过提到嵌入式IoT开发,最让人不舒服的一件事无疑就是不同厂家的芯片可能要使用不同的集成开发环境。例如:STM32要使用Keil,Arduino默认使用自家Arduino开发环境,而且Keil和...
  • 官方对spring Io platform的概述:SpringIO是一个构建现代应用程序的内聚版本平台。它是一个模块化的企业级发行版,提供一组经过管理的依赖关系,同时让开发人员完全控制只部署他们需要的部分。SpringIO是100%的开源...
  • vscode arduino platformIO 入门

    千次阅读 2018-07-23 23:18:41
    下载 https://code.visualstudio.com/ VSCodeSetup-x64-1.25.1.exe 需要用到git https://git-scm.com/ Git-2.18.0-64-bit.exe
  • 缘起:Spring起初只专注ioc和aop,现在已发展成一个庞大体系。比如security、mvc等。如此一来,不同模块或者与外部进行集成时,依赖处理就需要各自对应版本号。比如,较新spring与较老的quartz,它们集成就会遇到...
  • 今天在网上看到Visual Studio Code for arduino的介绍就下载了一个,没想到发现了一个新的插件PlatformIO IDE支持如下平台,太夸张了 Visual Studio Code的安装文件非常小只有42M,插件库相当的丰富,更多资料去问...
  • ESP32在VS Code下PlatformIo插件下首次体验[过程] 写在前面:本次学习参考多方文章,在此对各原作者表示感谢,下列部分: 1、DEVELOP ESP32 WITH PLATFORMIO IDE 2、PlatformIO IDE搭建统一的物联网嵌入式开发环境 3...
  • Spring IO Platform

    千次阅读 2019-09-19 17:37:04
    Spring IO Platform
  • PlatformIO IDE可以作为Visual Studio Code的插件,用来对物联网模组或者单片机进行编程设计。默认开启串口监视器的波特率为9600,虽然开启监视器之后可以再次修改,但是我更希望启动时就能以我想要的波特率来接收...
  • VS Code安装platformIO出现问题

    千次阅读 2020-02-21 10:08:48
    怎么解决?
1 2 3 4 5 ... 20
收藏数 73,170
精华内容 29,268
关键字:

PlatformIO