我的 STC 单片机开发工作流
本文最后更新于 96 天前,其中的信息可能已经有所发展或是发生改变。

本文主要用作记录开发过程中使用的不同工具。主要也是课程导向的,所以可能并不会使用实际上更好的方法。设备是 STC15F2P60S2。

添加设备库

先安装 Arm Keil uVision 5。由于课程需要,使用 Keil 的开发工具链,主要是懒得去学 SDCC 的语法差异,也懒得移植学校给的 BSP 库。

使用十分复古的 STC-ISP 来添加设备库。直接点击“添加型号和头文件……”即可。

添加设备库

创建项目

需要首先新建项目目录、一个 C 文件(空不空都行),以及所需的头文件和库文件(.lib),文件都放在项目文件夹中。这里我将 C 文件和库文件放到 source/ 目录,将 头文件放到 inc/ 目录。

在 uVision 主界面顶部点击 Project – New uVision Project 来创建一个项目文件。由于 Keil 松散的文件管理,这个文件并不必须与源代码同目录同名,但为了遵循其他 IDE 的惯例,最好还是保持相同。

选择设备时可以在下拉栏里找到 STC MCU database,然后选择你的 STC 芯片。

之后询问的 STARTUP.A51 没必要复制进来。

然后找到左边项目浏览器中的 Target,如果没有下属 Group 就先创建一个,有了之后直接双击它,打开添加文件界面。将你的库文件和 C 代码添加进来。如果在这里添加头文件,要指定好目录,但如果是某种库的话可以留到后面添加,所以这里只添加了两个文件。

添加文件

正常情况下 C 文件包含的头文件是会自动显示在 C 源代码下属的,就像上图这样。但是刚添加进文件的时候是没有的。

之后找到顶部 Project 菜单,选择 Options for Target xxx,点击 C51,找到 Include Paths,在这里添加额外的包含目录。我的库文件在项目文件夹 inc/ 目录,故添加完成如图。

编写与构建项目

Keil 本身是一个完善的 IDE,那么对于写代码,我们自然是……用 VS Code!

只是为了自动识别 Keil 的项目,需要再装一个插件。该插件的信息如下。

名称: Keil Assistant
ID: cl.keil-assistant
说明: An assistant for Keil uVision
版本: 1.7.0
发布者: CL
VS Marketplace 链接: https://marketplace.visualstudio.com/items?itemName=CL.keil-assistant

在插件设置中指定 Keil 工具链 UV4.exe 的路径,就可以用 VS Code 打开工作区的同时自动识别 Keil 项目了。

编辑代码

VS Code 自带的 C language server 能够完美地契合我们的需求,体验比 Keil 高到不知哪里去了。将鼠标移至特定 Target 上,甚至可以直接构建项目。

如果没有 hex 文件输出,可以修改 uvproj 文件中的一行,在 tag 之间加一个 1,如下。或者在前面 Target Options 页面里找到 Output,选上Create HEX file。

          <CreateHexFile>1</CreateHexFile>

区分多种编译选项

有时由于方便调试的原因,我们需要添加调试输出,如 RS485 难以调试,则在开发时也输出到 USB 串口;同时我们也不希望最终使用时带有这种调试信息,那么在 C 语言中常用#define 语句来区分:

    Uart2Print(buf2, 8);
#ifdef DEBUG
    Uart1Print(buf2, 8);
#endif

可以使用多build target的方式,对每个target设定不同的define选项。从刚刚找到的Options for Target右边,点击File Extensions, …按钮,然后新建一个target,并选择其为当前target。然后打开之前P3提到过的C51选项,在define里设置想提前声明的内容即可。

刷写项目

这里仍然不使用 STC-ISP,而使用开源的 stcgal。

命令很简单,一般来说只需要一把梭:

stcgal some-program.hex -p COMx

由于程序似乎是为 Linux 设计的,在 Windows 下必须指定 COM 号。一般这个号和特定 USB 接口有对应关系,用 STC-ISP 看一下就行了。

刷写程序

这样我们可以将工作流与 vscode 深度融合,直接在其终端中操作,编辑、构建、刷写一体化,此时基本不需要 Keil。

参考文献

暂无评论

发送评论 编辑评论


				
|´・ω・)ノ
ヾ(≧∇≦*)ゝ
(☆ω☆)
(╯‵□′)╯︵┴─┴
 ̄﹃ ̄
(/ω\)
∠( ᐛ 」∠)_
(๑•̀ㅁ•́ฅ)
→_→
୧(๑•̀⌄•́๑)૭
٩(ˊᗜˋ*)و
(ノ°ο°)ノ
(´இ皿இ`)
⌇●﹏●⌇
(ฅ´ω`ฅ)
(╯°A°)╯︵○○○
φ( ̄∇ ̄o)
ヾ(´・ ・`。)ノ"
( ง ᵒ̌皿ᵒ̌)ง⁼³₌₃
(ó﹏ò。)
Σ(っ °Д °;)っ
( ,,´・ω・)ノ"(´っω・`。)
╮(╯▽╰)╭
o(*////▽////*)q
>﹏<
( ๑´•ω•) "(ㆆᴗㆆ)
😂
😀
😅
😊
🙂
🙃
😌
😍
😘
😜
😝
😏
😒
🙄
😳
😡
😔
😫
😱
😭
💩
👻
🙌
🖕
👍
👫
👬
👭
🌚
🌝
🙈
💊
😶
🙏
🍦
🍉
😣
Source: github.com/k4yt3x/flowerhd
颜文字
Emoji
小恐龙
花!
上一篇
下一篇