前面介绍了在Windows的Keil5环境下使用FwLib_STC8, 以下介绍在Linux(本文使用Ubuntu20.04)的VSCode下的环境搭建
因为当前在Linux下不能通过烧录工具调整芯片的内置RC时钟频率, 所以芯片的时钟调整要用其它方法
对于第二, 第三, 第四种情况, 需要得到以下4个值, 下面配置项目时会用到:
因为PlatformIO的MCS-51中只包含很少的几种board, 需要预先添加. 对应STC8G, STC8H的board配置可以从这里下载 platform-intel_mcs51/tree/contrib-snovotill/boards.
将这些json都放到你本地PlatformIO对应MCS-51的boards目录下去, 默认路径为用户home目录下的 .platformio/platforms/intel_mcs51/boards 目录, 如图
打开VSCode, 在下方点击PlatformIO图标, 打开PlatformIO首页
点击 New Project 打开新项目对话框
在对话框中依次填写
期间会弹出对话框问是否信任此目录下所有文件的作者, 选择"Yes"
项目创建完成后, 可以看到项目的目录结构
.
├── include # 项目的头文件路径
├── lib # 项目用到的库文件, FwLib_STC8将放到这个目录下
├── src # 项目的源文件, 项目代码都放到这里
└── test # 项目的测试文件
右侧则是对应当前环境的配置信息
在lib上右键, 点击Open Containing Folder, 打开文件夹
在lib文件夹下, 注意路径别错了, 右键点击Open In Terminal, 或者直接Ctrl + Alt + T打开命令行, 直接cd到这个路径下也可以,
执行git命令将项目克隆到当前路径
# github
git clone https://github.com/IOsetting/FwLib_STC8.git FwLib_STC8
# 或者giteee
git clone https://gitee.com/iosetting/fw-lib_-stc8.git FwLib_STC8
回到VSCode, 可以看到 lib 目录下已经多了 FwLib_STC8 这个目录, 并且能看到里面的.h和.c文件. PlatformIO 会根据封装库里的 library.json 将封装库自动配置到项目里
在项目树中, 浏览路径 FwLib_STC8/demo/uart, 选择uart1_timer1_tx.c
, 这是用Timer1做串口1的波特率发生器的演示代码, 右键点击 Copy,
再到 src 上方右键点击 Paste, 将代码复制到项目代码目录
下面配置编译参数, 打开paltformio.ini, 在下面添加参数,
添加之后的内容为
[env:stc8h3k32s2]
platform = intel_mcs51
board = stc8h3k32s2
build_flags =
-D__CONF_FOSC=36864000UL
-D__CONF_MCU_MODEL=MCU_MODEL_STC8H3K32S2
-D__CONF_CLKDIV=0x02
-D__CONF_IRCBAND=0x03
-D__CONF_VRTRIM=0x19
-D__CONF_IRTRIM=0x28
-D__CONF_LIRTRIM=0x00
upload_protocol = custom
upload_port = /dev/ttyUSB0
upload_speed = 1152000
upload_flags =
-p$UPLOAD_PORT
-s$UPLOAD_SPEED
-e
upload_command = ${platformio.packages_dir}/tool-stc8prog/stc8prog $UPLOAD_FLAGS -f $SOURCE
对以上编译参数的说明
对以上烧录参数的说明
此时就可以进行编译了, 点击左侧的PlatformIO图标, 然后点击导航栏中的PROJECT TASKS -> stc8h3k32s2(这里根据你的环境命名可能会不同) -> General -> Build
如果最后显示 SUCCESS, 就表示编译成功
前往 stc8prog 的发布页stc8prog/releases下载最新版并解压出 stc8prog 可执行文件. 浏览到自己的PlatformIO的packages安装目录, 默认为用户home目录下的 .platformio/packages 目录.
在下面创建目录 tool-stc8prog, 并将刚才得到的 stc8prog 可执行文件复制到这个目录下
回到VSCode, 就可以执行烧录任务了.
连接好USB2TTL和芯片, 点击左侧PlatformIO图标, 点击导航栏中的 PROJECT TASKS -> stc8h3k32s2(这里根据你的环境命名可能会不同) -> General -> Upload, 待下方出现等待提示后对芯片重新上电, 就会开始下载.
下载完成后就会自动运行, 通过串口工具CuteCOM, 或者命令行screen /dev/ttyUSB0 115200
, 使用8bit波特率115200连接, 可以观察到每隔1秒输出的"T41U string"
如果要运行其它演示用例, 则删除include和src目录下的文件, 再将需要运行的演示用例文件复制到src目录, 按上面的步骤进行编译和烧录即可
PlatformIO支持同时配置多个环境, 各环境使用不同的芯片和参数, 并设置其中一个为默认环境, 用快捷键可以直接对默认环境进行编译和烧录, 这点比Keil5要方便很多.
platformio.ini的多环境配置示例如下, 这里配置了两个环境, 一个是stc8h3k32s2芯片的stc8h3k32s2_36m840hz, 另一个是stc8h1k08的stc8h1k08_36m840hz, 并将stc8h3k32s2_36m840hz设置成了默认环境. 在开发中, 可以直接用快捷键Ctrl + F9 唤起编译, 用快捷键 Ctrl + Alt + U 唤起烧录.
[platformio]
default_envs = stc8h3k32s2_36m840hz
[env:stc8h3k32s2_36m840hz]
platform = intel_mcs51
board = stc8h3k32s2
build_flags =
;--opt-code-size
-D__CONF_FOSC=36864000UL
-D__CONF_MCU_MODEL=MCU_MODEL_STC8H3K32S2
-D__CONF_CLKDIV=0x02
-D__CONF_IRCBAND=0x03
-D__CONF_VRTRIM=0x19
-D__CONF_IRTRIM=0x28
-D__CONF_LIRTRIM=0x00
upload_protocol = custom
upload_port = /dev/ttyUSB0
upload_speed = 1152000
upload_flags =
-p$UPLOAD_PORT
-s$UPLOAD_SPEED
-e
upload_command = ${platformio.packages_dir}/tool-stc8prog/stc8prog $UPLOAD_FLAGS -f $SOURCE
[env:stc8h1k08_36m840hz]
platform = intel_mcs51
board = stc8h1k08
build_flags =
-D__CONF_FOSC=36864000UL
-D__CONF_MCU_MODEL=MCU_MODEL_STC8H1K08
-D__CONF_CLKDIV=0x00
-D__CONF_IRCBAND=0x01
-D__CONF_VRTRIM=0x1F
-D__CONF_IRTRIM=0xB5
-D__CONF_LIRTRIM=0x00
upload_protocol = custom
upload_port = /dev/ttyUSB1
upload_speed = 1152000
upload_flags =
-p$UPLOAD_PORT
-s$UPLOAD_SPEED
-e
upload_command = ${platformio.packages_dir}/tool-stc8prog/stc8prog $UPLOAD_FLAGS -f $SOURCE
以上就是针对Linux下, VSCode+PlatformIO环境, 使用FwLib_STC8封装库进行环境配置和运行演示用例的说明.
手机扫一扫
移动阅读更方便
你可能感兴趣的文章