IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> 开发工具 -> Ubuntu下使用VSCode+PlatformIO开发STC89/STC12/Arduino Nano -> 正文阅读

[开发工具]Ubuntu下使用VSCode+PlatformIO开发STC89/STC12/Arduino Nano

安装VSCode

https://code.visualstudio.com/Download 下载最新的 deb 版, 通过命令行安装

sudo apt install ./code_1.59.0-1628120042_amd64.deb

安装PlatformIO

  • 直接在VSCode的插件中查找PlatformIO并安装,
  • 安装完成后, 还需要等待PlatformIO安装完PlatformIO Core,
  • Core安装完之后, 在底部状态栏就会出现一个Home图标
  • 点击图标会打开PIO Home,
    • 这时候左侧会出现PIO自己的菜单, 里面点Platforms
    • 会列出Installed, Embedded, Desktop, Frameworkds等

MCS51/STC51项目

准备环境

在PIO Home里点击Platforms, 点击Embedded会列出可用的类型, 里面选择Intel MCS51, 点击Install, 这个下面会有STC系列的芯片
安装完之后会弹出提示, 实际的安装路径是 ~/.platformio/packages/ 下的toolchain-sdcc和tool-stcgal

Platform Manager: Installing intel_mcs51
Platform Manager: intel_mcs51 @ 1.2.3 has been installed!
Tool Manager: Installing platformio/toolchain-sdcc @ ~1.30804.10766
Downloading...
Tool Manager: toolchain-sdcc @ 1.30804.10766 has been installed!
Tool Manager: Installing platformio/tool-stcgal @ ~1.104.0
Tool Manager: tool-stcgal @ 1.104.0 has been installed!
The platform 'intel_mcs51' has been successfully installed!
The rest of the packages will be installed later depending on your build environment.

这里用的SDCC还是3.8.4, 比较旧. 最新的已经4.1.0了

增加对STC其他型号的支持

需要增加自定义Board, 其配置文件位置为/home/milton/.platformio/platforms/intel_mcs51/boards, 在这里可以添加自定义的Board, 例如新建stc89c516rd.json, 写入下面的内容, 就添加了对stc89c516rd的支持.

STC89C516RD+

  • Flash: 61K
  • RAM: 256 + 1024
  • 与 HML_FwLib_STC89 一起使用时要将 config.h 中的 #define __CONF_COMPILE_ISP 1 设为0, 因为这个型号没有EEPROM, 所以ISP功能无效
{
  "build": {
    "f_cpu": "11059200",
    "size_iram": 256,
    "size_xram": 1024,
    "size_code": 62464,
    "size_heap": 128,
    "mcu": "stc89c516rd",
    "cpu": "mcs51"
  },
  "frameworks": [],
  "upload": {
    "maximum_ram_size": 1280,
    "maximum_size": 62464,
    "protocol": "stcgal",
    "stcgal_protocol": "stc89",
    "protocols": [
      "stcgal"
    ]
  },
  "name": "Generic STC89C516RD",
  "url": "https://www.stcmicro.com/stc/STC89C516RD.html",
  "vendor": "STC"
}

STC12C5A56S2

  • Flash: 56K
  • RAM: 256 + 1024
{
  "build": {
    "f_cpu": "11059200",
    "size_iram": 256,
    "size_xram": 1024,
    "size_code": 57344,
    "size_heap": 128,
    "mcu": "stc12c5a56s2",
    "cpu": "mcs51"
  },
  "frameworks": [],
  "upload": {
    "maximum_ram_size": 1280,
    "maximum_size": 57344,
    "protocol": "stcgal",
    "stcgal_protocol": "stc12",
    "protocols": [
      "stcgal"
    ]
  },
  "name": "Generic STC12C5A56S2",
  "url": "https://www.stcmicro.com/stc/stc12c5a32s2.html",
  "vendor": "STC"
}

STC12C5A60S2

  • Flash: 60K
  • RAM: 256 + 1024
{
  "build": {
    "f_cpu": "11059200",
    "size_iram": 256,
    "size_xram": 1024,
    "size_code": 61440,
    "size_heap": 128,
    "mcu": "stc12c5a60s2",
    "cpu": "mcs51"
  },
  "frameworks": [],
  "upload": {
    "maximum_ram_size": 1280,
    "maximum_size": 61440,
    "protocol": "stcgal",
    "stcgal_protocol": "stc12",
    "protocols": [
      "stcgal"
    ]
  },
  "name": "Generic STC12C5A60S2",
  "url": "https://www.stcmicro.com/stc/stc12c5a32s2.html",
  "vendor": "STC"
}

新建项目

注意workspace如果不用默认的, 要自己选一下, 选择board的时候用stc关键词可以搜到STC相关的芯片.

加入第三方库

在platformio.ini中添加以下内容, 就能把第三方库添加到项目目录下的.pio/libdeps

lib_deps =
    /home/milton/.platformio/packages/toolchain-atmelavr/avr/include/

注意这个实际上是将文件都复制过来了, 如果你不用了把这个内容移掉是不够的, 你还得到.pio/libdeps下把文件给删掉, 不然还会生成在 c_cpp_properties.json 里, PlatformIO会自动去扫描项目的.pio/libdeps目录和lib目录, 把里面的内容添加到 c_cpp_properties.json中的 configurations.includePath和 configurations.browse

添加 HML_FwLib_STC89 库

没找到什么简单的方法, 现在是直接把项目文件复制进来了

  • inc下的hml目录复制到项目 lib/HML_FWLib_STC89/ 目录下
  • src下的c文件复制到项目的 lib/HML_FWLib_STC89/ 目录下

需要配置一下platformio.ini, 增加build_flags. 因为没有Makefile, 所以与封装库文档中的flag不同, 这里的flag名称是最终作用到编译参数上的名称, 这样编译就不会有warning了.

[env:stc89c52rc]
platform = intel_mcs51
board = stc89c52rc
build_flags =
    -D__CONF_FRE_CLKIN=11059200
    -D__CONF_MCU_PRESCALER=12
    -D__CONF_MCU_MODEL=MCU_MODEL_STC89C52RC

使编辑器支持 __sfr

默认配置下, 编辑器不能识别SDCC MCS51的__sfr关键字, 会提示错误, 这时候可以通过在main.c添加lint.h头文件解决

#include "lint.h"

参考 https://github.com/microsoft/vscode-cpptools/issues/2499

编译

  • 可以点击底部状态栏的勾号, 这个是编译
  • 也可以通过点左侧的PlatformIO图标, 然后点Build
  • 编译的时候会区分env, 这个要注意

Arduino项目

新建项目, 选择项目目录, 在board里搜索nano 328 new bootloader, 点击创建后, 会自动下载需要的插件

提示Arduino.h找不到avr/pgmspace.h

这个头文件实际上在~/.platformio/packages/toolchain-atmelavr/avr/include/下面, 此时编译是可以正常编译的, 只是在VSCode里展示会提示错误. 要解决这个错误提示, 需要加到platformio.ini里面, 加上lib_deps如下, 然后在项目文件浏览下的.pio/libdeps中就会出现这些头文件.

[env:nanoatmega328new]
platform = atmelavr
board = nanoatmega328new
framework = arduino
lib_deps =
    /home/milton/.platformio/packages/toolchain-atmelavr/avr/include/
  开发工具 最新文章
Postman接口测试之Mock快速入门
ASCII码空格替换查表_最全ASCII码对照表0-2
如何使用 ssh 建立 socks 代理
Typora配合PicGo阿里云图床配置
SoapUI、Jmeter、Postman三种接口测试工具的
github用相对路径显示图片_GitHub 中 readm
Windows编译g2o及其g2o viewer
解决jupyter notebook无法连接/ jupyter连接
Git恢复到之前版本
VScode常用快捷键
上一篇文章      下一篇文章      查看所有文章
加:2021-08-14 14:18:45  更:2021-08-14 14:21:03 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年12日历 -2024/12/22 12:57:23-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码