【极光 Orbit•STC8A-8H】02. STC8 单片机工程模板创建
【极光 Orbit•STC8A-8H】02. STC8 单片机工程模板创建
七绝·单片机
小小芯片大乾坤,
集成世界在其中。
初学虽感千重难,
实践方知奥妙通。
今天的讲法和过去不同,直接来一个多文件模块化的工程模板创建,万事开头难,我们把难事开头做,后面的就简单了,一个月之后感谢我吧。
本教程将详细指导你完成 STC8A8K64S4 单片机工程模板的创建与使用。我们将基于 Keil C51 开发工具,详细讲解每一步操作,包括文件结构的创建、移植过程、移植文件名称及对应目录,以及 Keil 分组目录和对应文件的说明。
1️⃣ Keil C51 开发环境安装
1.1 Keil C51 介绍
Keil C51 是 Keil 公司推出的用于 8051 系列单片机的集成开发环境(IDE),支持 C 语言和汇编语言开发。
1.2 Keil C51 下载与安装
-
访问下载页面
打开 Keil 官网:https://www.keil.com,下载 Keil C51 安装包。 -
安装 Keil C51
- 右键以管理员身份运行安装包。
- 按照提示选择安装路径(路径中不能包含中文)。
- 填写个人信息(可随意填写)。
- 等待安装完成。
-
激活 Keil C51
- 以管理员身份运行 Keil C51。
- 点击
File -> License Management
。 - 点击
Get LIC via Internet
,按照提示填写信息并获取激活码。 - 将激活码粘贴到
New License ID Code (LIC)
中,点击Add LIC
完成激活。
2️⃣ STC8A8K64S4 器件支持安装
2.1 下载 STC-ISP 工具
-
访问 STC 官网
打开 STC 官网:https://www.stcmcudata.com,下载 STC-ISP 工具。 -
安装 ST极-ISP 工具
- 双击安装包,按照提示完成安装。
2.2 添加 STC 器件支持
-
打开 STC-ISP 工具
安装完成后,打开 STC-ISP 工具。 -
添加器件支持
- 在 STC-ISP 工具中,点击
Keil 仿真设置
选项卡。 - 点击
添加 STC 仿真驱动到 Keil 中
,选择 Keil 的安装路径。 - 等待驱动添加完成。
- 在 STC-ISP 工具中,点击
-
验证器件支持
- 打开 Keil C51,点击
Project -> Manage -> Pack Installer
,查看是否已添加 STC8A8K64S4 器件支持。
- 打开 Keil C51,点击
3️⃣ 工程模板创建与使用
3.1 创建新工程
-
新建工程文件夹
在本地创建一个文件夹,例如STC8A_Project
,注意路径中不能包含中文。 -
打开 Keil C51 并创建工程
- 打开 Keil C51,点击
Project -> New uVision Project
。 - 选择刚才创建的文件夹,输入工程名称,例如
STC8A_Template
。 - 点击
Save
。
- 打开 Keil C51,点击
-
选择芯片型号
在弹出的窗口中选择STC8A8K64S4
(根据实际芯片型号选择),点击OK
。
3.2 文件结构创建
- 创建文件夹结构
在工程文件夹STC8A_Project
中创建以下文件夹:Projects
:存放不同 IDE 的工程文件。MDK-RAM
:存放 Keil C51 极工程文件。
Drivers
:存放所有驱动相关文件。BSP
:存放底层相关的支持包。Module
:存放各类软件模块,如定时器、状态机等。Core
:存放核心文件。Libraries
:存放 STC8A 外设库文件。
APP
:存放应用程序,由用户编写,包含main
函数。
- 目录结构图示
STC8A_Project/
├── Projects/
│ └── MDK-RAM/
├── Drivers/
│ ├── BSP/
│ ├── Module/
│ ├── Core/
│ └── Libraries/
└── User/
- 复制库文件与启动文件
从 STC8A 外设库中复制以下文件到对应文件夹:Drivers/Core
:Drivers/STC8A_Libraries
:
3.3 Keil 分组目录与对应文件
- 在 Keil 中添加分组
- 右键
Target 1
,选择Add Group
,创建以下分组:User
BSP
Module
Core
Libraries
- 右键
- 添加文件到分组
BSP
分组:添加Drivers/BSP
文件夹中的文件。Module
分组:添加Drivers/Module
文件夹中的文件。Libraries
分组:添加Drivers/Libraries/Src
文件夹中的所有.c
文件。Core
分组:添加Drivers/Core 文件夹中的 所有
.c` 文件。User 分组:添加
APP` 文件夹中的文件。
- 添加头文件路径
- 点击
Project -> Options for Target -> C/C++
。 - 在
Include Paths
中添加以下路径:Drivers/BSP
Drivers/Module
Drivers/Libraries/Inc
Drivers/Core
User
- 点击
3.4 编写主程序
-
创建
main.c
文件- 右键
User
分组,选择Add New Item to Group
,创建main.c
文件。
- 右键
-
编写代码
在main.c
中添加以下代码:
#include "stc8a8k64s4.h"
#include "board_init.h"void Delay(uint32_t count) {while (count--);
}int main(void) {// 板子初始化Board_Init();// 配置 P1.0 为推挽输出P1M0 |= 0x01; // P1.0 推挽输出P1M1 &= ~0x01;while (1) {P1_0 = 0; // 点亮 LEDDelay(1000000);P1_0 = 1; // 熄灭 LEDDelay(1000000);}
}
3.5 编译与下载
-
编译工程
点击Build
按钮(或按F7
),确保没有错误和警告。 -
下载程序
连接开发板,点击Download
按钮(或按F8
),将程序下载到开发板。
4️⃣ 使用例程或模板
4.1 复制模板工程
-
从 STC8A 外设库中复制模板
找到STC8A 外设库
,将其复制到本地并重命名。 -
打开工程
在 Keil C51 中打开复制的工程文件(.uvprojx
)。
4.2 修改头文件路径
- 调整头文件路径
点击Project -> Options for Target -> C/C++
,修改头文件路径为相对路径。
4.3 编译与下载
-
编译工程
点击Build
按钮,确保没有错误和警告。 -
下载程序
连接开发板,点击Download
按钮,将程序下载到开发板。
5️⃣ 总结
通过本教程,你已经完成了 STC8A8K64S4 开发环境的安装、器件支持的添加以及工程模板的创建与使用。接下来,你可以基于模板开发自己的应用程序,探索 STC8A8K64S4 的更多功能!🌟
相关文章:

【极光 Orbit•STC8A-8H】02. STC8 单片机工程模板创建
【极光 Orbit•STC8A-8H】02. STC8 单片机工程模板创建 七绝单片机 小小芯片大乾坤, 集成世界在其中。 初学虽感千重难, 实践方知奥妙通。 今天的讲法和过去不同,直接来一个多文件模块化的工程模板创建,万事开头难,…...

Spring Boot WebFlux 中 WebSocket 生命周期解析
Spring Boot WebFlux 中的 WebSocket 提供了一种高效、异步的方式来处理客户端与服务器之间的双向通信。WebSocket 连接的生命周期包括连接建立、消息传输、连接关闭以及资源清理等过程。此外,为了确保 WebSocket 连接的稳定性和可靠性,我们可以加入重试…...

PostgreSQL中的事务隔离
1. 事务隔离的概念 在数据库管理系统中,事务隔离是一项重要的功能,它能确保在并发访问数据库时事务之间能够独立运行,不会相互干扰。数据库系统通常支持不同级别的事务隔离,用来满足不同应用程序之间的需求。 2. 事务隔离的种类…...

基于Rye的Django项目通过Pyinstaller用Github工作流简单打包
前言 Rye的介绍和安装 Ryehttps://rye.astral.sh/Rye 完整使用教程_安装rye-CSDN博客https://blog.csdn.net/zhenndbc/article/details/144544692 正文 项目建立 配置好环境后 新建文件夹 新建文件夹,进入项目 初始化 rye init下载依赖 rye syncpycharm 打…...

ubuntu 20.04 C++ 源码编译 cuda版本 opencv4.5.0
前提条件是安装好了cuda和cudnn 点击下载: opencv_contrib4.5.0 opencv 4.5.0 解压重命名后 进入opencv目录,创建build目录 “CUDA_ARCH_BIN ?” 这里要根据显卡查询一下,我的cuda是11,显卡1650,所以是7.5 查询链接:…...

【VUE】第一期——初使用、基本语法
目录 0 前言 1 准备工作 1.1 创建vue实例 1.2 vue开发者工具 2 插值表达式 2.1 基本用法 3 常用指令 3.1 内容渲染指令 3.1.1 v-text 3.1.2 v-html 3.2 条件渲染指令 3.2.1 v-show 3.2.2 v-if 3.2.3 v-else 和 v-else-if 3.3 事件绑定指令 3.3.1 内联语句 3.3…...

计算光学成像与光学计算概论
计算光学成像所涉及研究的内容非常广泛,虽然计算光学成像的研究内容是发散的,但目的都是一致的:如何让相机记录到客观实物更丰富的信息,延伸并扩展人眼的视觉感知。总的来说,计算光学成像现阶段已经取得了很多令人振奋…...

开启科创服务新篇章:八月瓜科技CRM数字化管理系统成功上线
近日,北京八月瓜科技有限公司(以下简称 “八月瓜科技”)与纷享销客达成深度战略合作,成功部署并上线CRM数字化管理系统。此次合作是八月瓜科技在数字化转型进程中的重要里程碑,标志着其在科技创新服务领域的数字化变革…...

AI提示词(Prompt)的理解和学习指南
AI提示词(Prompt)的理解和学习指南 一、什么是AI提示词? AI提示词(Prompt)是用户输入给人工智能模型的指令或问题,用于引导模型生成特定类型的回答或内容。它如同与AI沟通的“钥匙”,设计得当…...

记录一些面试遇到的问题
重载和重写的区别 重载是overload,覆盖是override 重载属于编译时多态,覆盖属于运行时多态 运行时多态和编译时多态 运行时多态指的是在运行的时候才知道要调用哪一个函数,编译时多态是指在编译的时候就知道调用哪一个函数。 运行时多态…...

OpenHarmony4.0_Linux环境搭建
查看链接:OpenHarmony4.0_Linux环境搭建https://www.yuque.com/xinzaigeek/jishu/fs9msruqhd5nhw4i...

DeepSeek开源Day5:3FSsmallpond技术详解
2 月 24 日,DeepSeek 启动 “开源周”,第四个开源的代码库为 3FS&smallpond(又是一下发布了两个)。 3FS(Fire-Flyer File System)是 DeepSeek 内部开发的一款高性能分布式文件系统,旨在为 A…...

Java集合面试篇
目录 1.概念 1.1.数组与集合的区别,用过哪些? 1.2.说说Java中的集合? 1.3.Java中的线程安全的集合是什么? 1.4.集合遍历的方法有哪些? 2.List 2.1.list可以一边遍历一边修改元素吗? 2.2.Arraylist和…...

plt和cv2有不同的图像表示方式和颜色通道顺序
在处理图像时,matplotlib.pyplot (简称 plt) 和 OpenCV (简称 cv2) 有不同的图像表示方式和颜色通道顺序。了解这些区别对于正确处理和显示图像非常重要。 1. 图像形状和颜色通道顺序 matplotlib.pyplot (plt) 形状:plt 通常使用 (height, width, cha…...

Sqlserver安全篇之_手工创建TLS用到的pfx证书文件
Sqlserver官方提供的Windows Powershell脚本 https://learn.microsoft.com/zh-cn/sql/database-engine/configure-windows/configure-sql-server-encryption?viewsql-server-ver16 # Define parameters $certificateParams {Type "SSLServerAuthentication"Subje…...

基于RapidOCR与DeepSeek的智能表格转换技术实践
基于RapidOCR与DeepSeek的智能表格转换技术实践 一、技术背景与需求场景 在金融分析、数据报表处理等领域,存在大量图片格式的表格数据需要结构化处理。本文介绍基于开源RapidOCR表格识别与DeepSeek大模型的智能转换方案,实现以下典型场景: …...

创建阿里云CDN
创建阿里云CDN CDN域名管理 SSL证书上传...

tomcat的web管理
进入到conf cd /usr/local/tomcat/conf/备份tomcat-users.xml cp tomcat-users.xml{.,bak}编辑tomcat-users.xml vim tomcat-users.xml增加以下内容 配置tomcat-users.xml <role rolename"manager-gui"/><role rolename"admin-gui"/><use…...

【Linux系统】-----进程初相识:原理与概念全解析
Linux系列 文章目录 Linux系列前言一、进程的概念二、进程的管理三、Linux操作系统的进程管理3.1、进程标识符3.2、查看进程3.3、查看进程的PID和PPID 前言 经过前两篇文章的铺垫,我们对操作系统的管理方式已经有了比较完整的认识,今天我们将学习Linux比…...

分布式系统设计(架构能力)
一、微服务架构 服务治理 Nacos 注册中心(AP模式) CAP选择:Nacos 默认采用 AP 模式(可用性 分区容忍性),通过心跳检测实现服务健康管理。服务发现:客户端定时拉取服务列表,支持权重…...

171. Excel 表列序号
Excel 表列序号 题目描述尝试做法推荐做法 题目描述 给你一个字符串 columnTitle ,表示 Excel 表格中的列名称。返回 该列名称对应的列序号 。 例如: A -> 1 B -> 2 C -> 3 … Z -> 26 AA -> 27 AB -> 28 … 示例 1: 输入: colum…...

在 Java 中使用 Apache POI 为 Word 文档添加水印
在 Java 中使用 Apache POI 为 Word 文档添加水印 在日常办公中,我们经常需要给 Word 文档添加水印,以标明文件的机密性或归属权。本文将介绍如何使用 Apache POI 库在 Java 中给 Word 文档添加水印。 技术栈 Apache POI:用于操作 Word 文…...

贪心算法二
> 作者:დ旧言~ > 座右铭:松树千年终是朽,槿花一日自为荣。 > 目标:了解什么是贪心算法,并且掌握贪心算法。 > 毒鸡汤:有些事情,总是不明白,所以我不会坚持。早安! >…...

【大模型安全】大模型的技术风险
【大模型安全】大模型的技术风险 1.DDoS攻击2.常见的传统网络攻击方式3.恶意意图的识别4.AI生成虚假信息传播5.利用AI进行黑客攻击6.模型对抗攻击7.后门攻击8.Prompt攻击9.数据投毒攻击10.模型窃取攻击11.数据窃取攻击 1.DDoS攻击 2023年11月9日凌晨,OpenAI在官网公…...

Java 线程池中 shutdown 与 shutdownNow 的区别是什么?
Java 线程池中 shutdown 与 shutdownNow 的区别 核心行为差异 | 方法 | 行为描述 | |----------------|----------------------------------------------------------------------------| | shutdown | 平缓关闭线程池:1. 停止接受新任务。2. 已提交的任务ÿ…...

基于Spring Boot的共享学习经验系统的设计与实现
目录 摘 要 第1章 绪论 1.1研究背景与意义 1.2国内外现状 1.3研究目标 第2章 需求分析 2.1业务需求 2.1.1业务概述 2.1.2业务流程 2.2.1用例概述 2.2.2用例描述 2.3非功能性需求 第3章 系统设计 3.1技术路线 3.2系统功能模块设计 3.3系统架构 3.4数据库设计 3.4.1概念结构设…...

【简单的C++围棋游戏开发示例】
C围棋游戏开发简单示例(控制台版) 核心代码实现 #include <iostream> #include <vector> #include <queue> using namespace std;const int SIZE 9; // 简化棋盘为9x9:ml-citation{ref"1" data"citationList&…...

单片机中的基础外设GPIO的知识和应用—(6)
GPIO(通用输入输出)是单片机与外部世界交互的重要接口。单片机的GPIO引脚可以灵活配置为输入、输出、中断或复用功能,广泛应用于LED控制、按键读取、传感器通信等场景。下文以STM32F103C8T6的GPIO为例。有些51单片机IO功能有的稍微有不同&…...

10-Agent循环分析新闻并输出总结报告
目录 关键词 摘要 速览 自动新闻总结与行业分析报告生成流程 创建深度行业分析报告的工作流 测试用例执行与调试 业务逻辑与循环处理任务 演示如何在循环体中添加链接读取工具 使用大模型处理和分析新闻信息 构建循环分析新闻并生成综合报告的流程 分析和优化慢速循…...

十二、Redis Cluster(集群)详解:原理、搭建、数据分片与读写分离
Redis Cluster(集群)详解:原理、搭建、数据分片与读写分离 Redis Cluster 是 Redis 官方提供的分布式存储方案,通过数据分片(Sharding)实现 水平扩展(scalability),并提供 高可用性(HA) 和 故障自动转移(failover) 能力,解决了单机 Redis 内存受限、主从复制故障…...