vscode 使用 SDCC 开发 STM8

本文介绍如何在 EIDE 上将 STM8 标准库移植到 SDCC 工具链,并完成测试

以 STM8S105K4T6 为例,其他的库过程大都相同


1. 创建 STM8 项目

  1. 打开 EIDE, 新建项目,类型选择 C51,注意:路径里最好不要有中文空格,在编译器里会出错
  2. 切换工具链至 SDCC, 打开编译选项,设置 device 为 stm8
  3. 设置宏,本项目为:STM8S105,USE_STDPERIPH_DRIVER
  4. 新建一个目录,将复制外设库到里面,并去除掉芯片不支持的外设源文件

2. 移植过程:主要针对 stm8s.h, 其他文件基本不用动

移植的过程并不复杂,就是参照其他编译器的定义,查询 SDCC 手册,写出适合 SDCC 的定义

注:以下对比图,左图为原文件,右图为修改后的

  1. 定义编译器宏:查阅 SDCC 手册,SDCC 编译器定义的宏为: __SDCC
    vscode 使用 SDCC 开发 STM8_第1张图片
  2. 重定义关键字,SDCC 手册中不支持的就设置为空,编译时将会忽略这些关键字
    vscode 使用 SDCC 开发 STM8_第2张图片
  3. 重定义内嵌汇编指令,SDCC 格式为 __asm__(x)
    vscode 使用 SDCC 开发 STM8_第3张图片
  4. 重定义 interrupt ,trap 关键字, SDCC 格式为: __interrupt(x), __trap
    vscode 使用 SDCC 开发 STM8_第4张图片

3. 开始项目

在 main.c 中写好闪烁LED 的示例


注意:SDCC 要求含有 main() 函数的源文件必须处于链接的第一个位置;如果你的 main() 函数不是在默认的 main.c 中,务必到编译选项中更改 “$mainFileName” 字段为 main() 实际所处的源文件名
vscode 使用 SDCC 开发 STM8_第5张图片

开始编译,发现出现了错误,直接跳转到出错的源文件
vscode 使用 SDCC 开发 STM8_第6张图片
发现是这个函数是用的内联汇编实现的,于是用 SDCC 也实现一下
框出的部分即为加上去的 SDCC 实现
vscode 使用 SDCC 开发 STM8_第7张图片
再启动编译,成功
出现了两个警告,第一个提示函数没返回值,来自上一步,但注释中说可以直接忽略。第二个查看了一下也没影响
vscode 使用 SDCC 开发 STM8_第8张图片


4. 下载到开发板

安装好 STVP, 并设置好 STVP_CmdLine.exe 的路径,连接 ST-LINK,点击下载

提示下载成功
vscode 使用 SDCC 开发 STM8_第9张图片
板子上 LED 正常闪烁


此示例已上传至 EIDE 模板,可下载并安装

你可能感兴趣的:(EIDE,使用教程)