本帖最后由 杨为民 于 2024-2-29 17:03 编辑
一、前 言 本文使用的STC单片机软件工具链为: 1. 单片机 STC8H8K64U 2. 开发板 STC实验箱 V9.3 3. 集成开发环境 STCIDE-V01 4. 编译器 长缨8 C351编译器 5. 实时多任务操作系统 泰山x51-RTOS 6. 代码下载器 STC-ISP 二、STC单片机与开发板 (1)本文范例使用的STC实验箱V9.3(用STC8H8K64U单片机),其外观与V9.4(用STC32G12K128单片机): 三、STC集成开发环境
(2)STC集成开发环境“StcIde.exe”是一款免安装的绿色软件,直接点击就可以执行,并自动注册各种信息。下图是其打开的界面: (3)STC集成开发环境可以选择中文或者英文界面,可以进行各种设置。STCIDE与Keil集成开发环境高度兼容,其操作方法与Keil类似,它也可以直接读取Keil的项目文件,STCIDE的文本编辑界面比Keil更加友好。 (4)STCIDE目前可以直接使用STCC351编译器对STC8051系列的单片机程序进行编译和连接,如果没有错误就会生成HEX烧录文件。
下面是使用STCIDE对项目进行操作的过程视频:
四、长缨8 C351编译器 (5)目标为STC8051系列单片机的STCC351编译器的内部名称为“长缨8”。长缨8是专门为编译RTOS程序设计的,包括通常的前后台程序是实时多任务程序。 (6)长缨8采用32位单片机和计算机的C语言规范,除了“main”函数和中断服务程序(这两类函数不允许重入),所有的函数都是可重入的。长缨8缺省使用XDATA,用户也可以用“data”和“idata”关键字来指定变量的存储空间。 (7)长缨8使用的C351语言是单片机C语言的一个子集,子集的大小以满足RTOS程序设计为限,并采用最简单的语法以方便C语言初学者掌握。 (8)长缨8使用A351汇编语言,A351语言是A8051语言的超集,除了包括全部8051汇编语言外,还虚拟的80351 CPU为模型增加了16位和32位的通用寄存器和操作指令,包括但不限于整数的加减乘除和32位浮点数的加减乘除运算。 五、泰山x51-RTOS (9)泰山x51-RTOS是专门为验证长缨8编译器C351/A351语言能力研制的抢占式实时多任务操作系统。由于其中使用了A351汇编语言,因此只能用长缨8来编译,不能用C51来编译。 (10)泰山x51-RTOS的用户接口以uC/OS-II为参考模型,用户可以参考各种uC/OS-II资料来辅助自己编写RTOS程序。但是与uC/OS-II相反的是泰山x51-RTOS采用“微内核”架构。(微内核的操作系统有:Windows、Minix、Mac等等,宏内核的操作系统有:Unix、Linux) (10)泰山x51-RTOS是分模块设计的,模块分三类:RTOS核心模块、RTOS扩展模块和设备驱动模块。 本文范例就包含了RTOS核心模块“TSx51_SYS_RTOS_V11_STC8H.OBJ”、STC8H基本驱动模块“TSx51_DRV_MCU_80x51_STC8H.OBJ”和8位数码管设备驱动模块“TSx51_DRV_STCBOX_V93_STC8H.OBJ”。 (11)本文范例包括了5个实时任务,其中优先级最高的任务0是控制台任务,它从串口1接收命令行,任何解释执行该命令。
下图是任务0的程序: (12)任务0接受4个命令,它们的格式如下: 1. 命令 T HH:MM:SS 设置时间。 2. 命令 R n 运行第n个任务。 3. 命令 P n 暂停第n个任务。 4. 命令 S xxxx 送字符串到 第1个任务。字符串xxxx是用逗号分开的两个浮点数,比如123.4,-5678.9,然后这个字符串就被送个任务1取做加法处理。 下面是本文范例运行的视频,从视频中可以看到手工如何从串口助手输入和发布命令,然后可以从串口输出和数码管的显示看到命令执行后果。值得说明的是任务2、任务3和任务4都使用数码管,如果打开了它们中不止一个的任务,数码管显示会发生混乱显示。
下面是本文范例运行的视频效果:
下面是本文范例和STCIDE:
|