当前位置:   article > 正文

【STC单片机】VSCode PlatformIO开发环境详细配置过程_vscode配置stc15单片机开发环境

vscode配置stc15单片机开发环境

【STC单片机】VSCode PlatformIO开发环境详细配置过程


在这里插入图片描述

第一步:PlatformIO 8051单片机环境搭建

在这里插入图片描述

第二步: 安装python插件stcgal,用于上传hex文件到STC芯片上的。

stcgal - STC MCU ISP flash tool,就不做介绍使用了。

在这里插入图片描述

第三步: 新建工程在这里插入图片描述

  • 工程目录文件架构
    在这里插入图片描述

  • 工程源文件和头文件放置在src目录下面。

main.c
  • 1
#include<lint.h>//包含SDCC_mcs51定义,使编辑器支持 __sfr
#include <8052.h>//这个51的头文件
#include "delay.h"
#define MAIN_Fosc 16000000uL
#define led P1_0
void main()
{
  while (1)
  {
      led = 0X01;
      delay_ms(500);
      led = 0X00;
       delay_ms(500);
  }
}

  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • delay.c文件代码
#include <delay.h>

void delay_ms(unsigned int ms)
{
    unsigned int i;
    do
    {
        i = MAIN_Fosc / 13000;
        while (--i)
            ;
    } while (--ms);
}
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • delay.h文件代码
#ifndef	__DELAY_H
#define	__DELAY_H

#define MAIN_Fosc 16000000uL //晶振频率
void delay_ms(unsigned int ms);
#endif
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6

在这里插入图片描述

配置头文件路径

  • 我的SDCC头文件目录:C:\Users\Administrator\.platformio\packages\toolchain-sdcc\include\mcs51
    在这里插入图片描述

根据上面的头文件位置,来设定下面的配置文件路径。

c_cpp_properties.json//文件内容
  • 1

在这里插入图片描述

//
// !!! WARNING !!! AUTO-GENERATED FILE!
// PLEASE DO NOT MODIFY IT AND USE "platformio.ini":
// https://docs.platformio.org/page/projectconf/section_env_build.html#build-flags
//
{
    "configurations": [
        {
            "name": "PlatformIO",
            "includePath": [
                "C:/Users/Administrator/.platformio/packages/toolchain-sdcc/include/mcs51",
                "C:/Users/Administrator/.platformio/packages/toolchain-sdcc/include",
                "c:/Users/Administrator/Documents/PlatformIO/Projects/STC15W408AS/include",
                "c:/Users/Administrator/Documents/PlatformIO/Projects/STC15W408AS/src",
                "C:/Users/Administrator/.platformio/packages/tool-unity"
            ],
            "browse": {
                "limitSymbolsToIncludedHeaders": true,
                "path": [
                    "C:\\Users\\Administrator\\.platformio\\packages\\toolchain-sdcc\\include\\mcs51",
                    "C:/Users/Administrator/.platformio/packages/toolchain-sdcc/include",
                    "c:/Users/Administrator/Documents/PlatformIO/Projects/STC15W408AS/include",
                    "c:/Users/Administrator/Documents/PlatformIO/Projects/STC15W408AS/src",
                    "C:/Users/Administrator/.platformio/packages/tool-unity",
                    ""
                ]
            },
            "defines": [
                "F_CPU=16000000",
                "HEAP_SIZE=128",
                "PLATFORMIO=50204",
                ""
            ],
            "compilerPath": "C:/Users/Administrator/.platformio/packages/toolchain-sdcc/bin/sdcc.exe",
            "compilerArgs": [
                "-mmcs51",
                ""
            ]
        }
    ],
    "version": 4
}
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22
  • 23
  • 24
  • 25
  • 26
  • 27
  • 28
  • 29
  • 30
  • 31
  • 32
  • 33
  • 34
  • 35
  • 36
  • 37
  • 38
  • 39
  • 40
  • 41
  • 42
  • 8051头文件路径需要自己添加,如果没有添加,会显示波浪线,虽然不影响编译,但是感觉看的很不舒服。
  • 这个文件文章需要根据个人电脑安装路径来定,并不一定和我的一样。
                "C:/Users/Administrator/.platformio/packages/toolchain-sdcc/include/mcs51",
                "C:/Users/Administrator/.platformio/packages/toolchain-sdcc/include",
  • 1
  • 2

编译和上传代码

  • 编译的话,只要包含了所需头文件路径没有问题,还有工程代码没有问题,编译就没什么问题。
  • Platform IO默认是需要手动按一下板子上的复位按键才能把程序下载到芯片里面的。我是受到《单片机—Mac下的开发环境【3】(STC单片机 + PlatformIO IDE)》启发,该烧写的命令。
  • 烧写命令修改地方:C:\Users\Administrator\.platformio\platforms\intel_mcs51\builder中的main.py文件,第145行:
    在这里插入图片描述
  • 原信息
if upload_protocol == "stcgal":
    f_cpu_khz = int(board_config.get("build.f_cpu")) / 1000
    stcgal_protocol = board_config.get("upload.stcgal_protocol")
    stcgal = join(env.PioPlatform().get_package_dir("tool-stcgal") or "", "stcgal.py")
    env.Replace(
        UPLOADERFLAGS=[
            "-P", stcgal_protocol,
            "-p", "$UPLOAD_PORT",
            "-t", int(f_cpu_khz),
            "-a"
        ],
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11

默认在点击烧写时,会卡在下面这个地方。需要手动去按一下板子上的复位按键,才能下载到板子上。

在这里插入图片描述

  • 按下开发板上的复位按键后,开始下载到开发板的芯片当中了
    在这里插入图片描述

  • 参考stcgal帮助信息
    在这里插入图片描述

烧录协议中的最后一个参数-a去掉。因为我自制的开发板使用的是CH340C,使用了RTS引脚作为下载时的联络信号,来给芯片断电复位的电路。换句话说,我的板子支持自动下载功能。

  • -a, --autoreset cycle power automatically by asserting DTR
if upload_protocol == "stcgal":
    f_cpu_khz = int(board_config.get("build.f_cpu")) / 1000
    stcgal_protocol = board_config.get("upload.stcgal_protocol")
    stcgal = join(env.PioPlatform().get_package_dir("tool-stcgal") or "", "stcgal.py")
    env.Replace(
        UPLOADERFLAGS=[
            "-P", stcgal_protocol,
            "-p", "$UPLOAD_PORT",
            "-t", int(f_cpu_khz),
            
                   ],
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 去掉-a参数后,整个下载过程信息
    在这里插入图片描述
> Executing task in folder STC15W408AS: C:\Users\Administrator\.platformio\penv\Scripts\platformio.exe run --target upload <

Processing stc15w408as (platform: intel_mcs51; board: stc15w408as)
------------------------------------------------------------------------------------------------------------------Verbose mode can be enabled via `-v, --verbose` option
CONFIGURATION: https://docs.platformio.org/page/boards/intel_mcs51/stc15w408as.html
PLATFORM: Intel MCS-51 (8051) (1.2.3) > Generic STC15W408AS       
HARDWARE: STC15W408AS 11MHz, 512B RAM, 8KB Flash
PACKAGES:
 - tool-stcgal 1.104.0 (1.4)
 - toolchain-sdcc 1.30804.10766 (3.8.4)
LDF: Library Dependency Finder -> https://bit.ly/configure-pio-ldf
LDF Modes: Finder ~ chain, Compatibility ~ soft
Found 0 compatible libraries
Scanning dependencies...
No dependencies
Building in release mode
Checking size .pio\build\stc15w408as\firmware.hex
Advanced Memory Usage is available via "PlatformIO Home > Project Inspect"
Flash: [          ]   2.0% (used 161 bytes from 8192 bytes)
Configuring upload protocol...
AVAILABLE: stcgal
CURRENT: upload_protocol = stcgal
Looking for upload port...
Auto-detected: COM10
Uploading .pio\build\stc15w408as\firmware.hex
Waiting for MCU, please cycle power: done
Target model:
  Name: STC15W408AS
  Magic: F51F
  Code flash: 8.0 KB
  EEPROM flash: 5.0 KB
Target frequency: 15.910 MHz       
Target BSL version: 7.2.5T
Target wakeup frequency: 35.675 KHz
Target options:
  reset_pin_enabled=True
  clock_source=external
  clock_gain=high
  watchdog_por_enabled=False
  watchdog_stop_idle=True
  watchdog_prescale=256
  low_voltage_reset=False
  low_voltage_threshold=3
  eeprom_lvd_inhibit=True
  eeprom_erase_enabled=False
  bsl_pindetect_enabled=False
  por_reset_delay=long
  rstout_por_state=high
  uart2_passthrough=False
  uart2_pin_mode=normal
  cpu_core_voltage=unknown
Loading flash: 161 bytes (Intel HEX)
Switching to 19200 baud: done
Erasing flash: done
Writing 512 bytes: ........ done
Finishing write: done
Setting options: done
Target UID: F51FC6360E298E
Disconnected!
========================================== [SUCCESS] Took 4.52 seconds ==========================================

终端将被任务重用,按任意键关闭。
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22
  • 23
  • 24
  • 25
  • 26
  • 27
  • 28
  • 29
  • 30
  • 31
  • 32
  • 33
  • 34
  • 35
  • 36
  • 37
  • 38
  • 39
  • 40
  • 41
  • 42
  • 43
  • 44
  • 45
  • 46
  • 47
  • 48
  • 49
  • 50
  • 51
  • 52
  • 53
  • 54
  • 55
  • 56
  • 57
  • 58
  • 59
  • 60
  • 61
  • 62
  • 本文为Perseverance52博主原创文章,未经博主允许,不得转载!
声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/我家自动化/article/detail/217749
推荐阅读
相关标签
  

闽ICP备14008679号