STC8H8K64U 库函数学习笔记 —— GPIO 点灯

本文介绍了在KeilIDE(如KeiluVision)中使用STC8H8K64U芯片进行GPIO编程的方法,尽管缺少实时代码提示,但通过熟悉API、查阅文档、创建代码片段和合理配置,作者分享了如何在没有这些现代化功能的情况下高效开发。
摘要由CSDN通过智能技术生成

STC8H8K64U 库函数学习笔记 —— GPIO 点灯

环境说明:
芯片:STC8H8K64U
软件:

  1. KeilC51 μVersion V5.38.00
  2. STCAI-ISP (V6.94)

不得不说,Keil 是我用过的 IDE 中,最让人头疼的事情,写代码就像是在记事本里编写一样。

对于我这个烦恼,分享以下文心一言给我的回答:

Keil uVision 在默认情况下确实可能不提供像一些现代IDE那样的实时代码提示或代码补全功能。然而,这并不意味着你不能在Keil中有效地编写代码。以下是一些建议和方法,可以帮助你在没有实时代码提示的情况下更高效地使用Keil uVision:

  1. 熟悉API和函数库:对于你正在使用的STC芯片和相关库函数,你需要熟悉它们提供的API和函数。这样,即使没有代码提示,你也知道应该调用哪些函数。
  2. 查阅文档:STC芯片和相关库函数的文档是你最好的朋友。当你不确定某个函数的参数或返回值时,查阅文档会是一个很好的选择。
  3. 使用代码片段:你可以创建自己的代码片段库,将常用的代码块保存起来,并在需要时快速插入。这可以大大提高你的编程效率。
  4. 更新Keil版本:确保你使用的是最新版本的Keil uVision。新版本可能包含了对代码提示和补全功能的改进。
  5. 安装插件或扩展:虽然Keil本身可能没有强大的代码提示功能,但可能有第三方插件或扩展可以增强这个功能。你可以查看Keil的插件市场或相关社区,看看是否有适合你的插件。
  6. 使用其他编辑器:如果你发现Keil的代码提示功能不能满足你的需求,你可以考虑使用其他编辑器(如Visual Studio Code、Sublime Text等)来编写代码,然后再将代码导入到Keil中进行编译和调试。这种方法可以充分利用现代编辑器的代码提示和补全功能,同时保留Keil的编译和调试能力。

尽管Keil uVision可能在代码提示方面不如一些现代IDE,但它仍然是嵌入式系统开发领域非常受欢迎的工具之一。通过熟悉API、查阅文档、使用代码片段等方法,你可以有效地在Keil中编写嵌入式代码。

接下来,记录下创建项目的步骤

  1. 点击菜单 Project -> New μVersion Project
    New μVersion Project

  2. 在弹出来的对话中选择基于目标芯片的设备。
    Use Extend Linker (LX51) instead of BL51

附加说明,我这里勾选了 Use Extend Linker (LX51) instead of BL51 ,这不是必须的,需要根据自己需要判断是否需要勾选,勾选该选项后的说明如下:

使用Extend Linker (LX51) 而不是 BL51 通常意味着在链接Keil MDK-ARM或其他基于ARM的嵌入式开发环境中的项目时,您希望使用更高级或具有更多功能的链接器。

BL51是Keil的一个早期版本的链接器,它主要用于链接8051系列微控制器的目标文件。然而,随着嵌入式系统的发展和ARM架构的普及,Keil和其他工具链也进行了相应的更新和扩展。

LX51(或称为Extend Linker)是BL51的一个更现代、更强大的版本,它提供了更多的链接选项和功能,特别适用于ARM和其他更复杂的微控制器架构。使用LX51而不是BL51可能允许您执行更复杂的内存布局、符号解析和代码优化。

要在Keil或其他IDE中更改链接器,您通常需要在项目的配置或设置中进行选择。这通常涉及指定要使用的链接器命令行工具或选择预定义的链接器配置。

  1. 右键 Source Group 1 ,选择 Add New Iitem to ....
    Add New Iitem

  2. 选中 C File,并命名为 main,点击 Add 按钮
    选择 C 文件

  3. Keil C 并不会为新建的 C 文件自动生成 main 函数代码,所以,需要自己手动补充。补充完代码后,点击工具栏的 Rebuild 按钮。可以在 Build Output 面板中看到没有 Error 信息,则说明一切顺利。
    编写代码并编译

  4. 但是我们的工程是需要生成 .Hex 文件后便于烧录工具执行烧录操作,所以,需要修改下配置项。点击工具栏的魔术棒(Options for target)
    Options for target

  5. 在弹出的对话框中,选择 Output 选项卡,然后勾选 Create HEX file 即可。
    Create HEX file

  6. 再次点击工具栏的 Rebuild 按钮。可以看在 Build Output 面板中看到创建 HEX 文件的 信息,则说明配置成功。
    从当前工程创建 HEX 文件

  7. 也可以打开工程中的 Objects 目录,可以找到该文件,记住这个文件的位置,后面我们需要到该目录下找到该文件用于烧录的。
    在这里插入图片描述

  8. 接下来就是需要将 STC8H 的库文件拷贝到工程中了,我习惯在工程目录下新建一个 Lib 目录,因为我不想把这些库文件跟当前工程中的已有源代码文件混在一起。
    新建 Lib 目录

  9. 启动 STC-ISP 软件,依次点击 资料下载 -> 软件库函数 -> STC8G-STC8H库函数,当然了,也可以直接点击https://www.stcmcudata.com/STC8F-DATASHEET/STC8G-STC8H-LIB-DEMO-CODE.zip 进行下载。
    下载库文件

  10. 解压下载下来的 zip 包,后如下所示,库函数目录就是我们需要的库函数文件了。
    STC8G-STC8H-LIB-DEMO-CODE

  11. 将库函数中如下四个文件拷贝到我们的工程中建好的 Lib 目录中。
    拷贝库函数

  12. 右键 Source Group 1 ,选择 Add Existing Files to Group .... 菜单,然后将 Lib 目录中的 STC8G_H_GPIO.c 文件加入到工程。
    在这里插入图片描述

  13. 再次点击工具栏的 Rebuild 按钮。可以看在 Build Output 面板中看到没有 Error 信息,则说明一切顺利。
    加入库文件后重新编译

  14. 在第 10 步的时候有说过,我不想把这些库文件跟当前工程中的已有源代码文件混在一起。所以,可以通过项目文件管理,来重新调整 Keil C 左侧栏的视觉效果。按下图所示,打开 Manage Project Item 对话框。
    在这里插入图片描述

  15. 把默认的 Source Group 1 更名为 Source,并将该组下的刚刚加入到工程中的 STC8G_H_GPIO.c 文件移除,再新增一个名为 Lib 的组,并将 STC8G_H_GPIO.c 文件加入到这个组。
    修改项目中的呈现结构

  16. 再次点击工具栏的 Rebuild 按钮。可以看在 Build Output 面板中看到没有 Error 信息,则说明一切顺利。
    调整之后的结构

再次声明下,第 16 步和 17 步不是必须的,只是我个人有强迫症,不想把这些库文件跟当前工程中的已有源代码文件混在一起。

  1. 从实际目录结构来说,库文件实际是在 main.c 文件的下一级目录中,故而,在使用包含指令的时候,需要考虑该因素。代码如下:
#include "lib/Config.h"
#include "lib/STC8G_H_GPIO.h"

void main() {
    while(1);
}
  1. 最后通过调用 GPIO 来实现点亮 LED,代码如下:
#include "lib/Config.h"
#include "lib/STC8G_H_GPIO.h"

void main() {
	GPIO_InitTypeDef init;
	init.Mode = GPIO_OUT_PP;       // 设置工作模式为:推挽
	init.Pin  = GPIO_Pin_3;        // 设置工作引脚为:3号引脚
	GPIO_Inilize(GPIO_P5, &init);  // 初始化 P5 端口
    
    P53 = 1;                       // 为 P5 端口的 3 号引脚赋予高电平
    
    while(1);
}

通过观察 STC8G_H_GPIO.h 文件,可以发现它已经包含了config.h ,而且还提供了很多实用的函数,调整代码如下也可以实现点灯。

#include "lib/STC8G_H_GPIO.h"

void main() {
    // 设置 P27 为准双向
    P2_MODE_IO_PU(GPIO_Pin_7);
    
    P27 = 0;
    
    while(1);
}
  • 21
    点赞
  • 20
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值