找回密码
 立即注册
查看: 3552|回复: 12

KIEL C51 自带的 RTOS : RTX51_TINY2-STC单片机的配置

[复制链接]

11

主题

340

回帖

929

积分

荣誉版主

积分
929
发表于 2023-7-23 18:45:56 | 显示全部楼层 |阅读模式
KIEL C51 自带的 RTOS :
RTX51_TINY2@STC单片机的配置

1,RtxTiny2例程的地址:



  里面分别是Ex1、Ex2、Banking和Traffic,他们的内容和目的如下:
  Ex1:一个变量递增项目,演示了时间片调度的多任务系统。
  Ex2:一个变量递增项目,演示了时间片调度、os_wait函数和信号传递的使用。
  Banking:和RTX_EX2类型的项目,还演示了协助调度和os_set_ready的使用。
  Traffic:一个人行道红绿灯项目,演示了RTX51 Tiny的综合使用。

这里使用Ex1例子。拷贝一份到测试目录。

2.RTX51 Tiny的OS配置文件Conf_tny.A51 简单介绍

对于传统的51单片机主要修改2个内容,一个是INT_CLOCK,另一个是TIMESHARING





传统的51单片机一个最小指令周期需要12个时钟,定时器配置是按照传统51单片机指令计算的。
STC对51单片机魔改后,速度提升了不少。大部分指令都可以在一个时钟周期执行完毕。
当然定时器0默认是兼容传统51定时器,定时器0时钟默认12分频。
如果用12分配,有些时钟频率计算有误差。所以改1T时钟最好。

3.新增一个AUXR寄存器

辅助寄存器1(AUXR)Bit7位可以修改定时器的工作模式,
T0x12:定时器0速度控制位

0:12T 模式,即CPU 时钟12 分频(FOSC/12)
1:1T 模式,即CPU 时钟不分频分频(FOSC/1)




4.定时器改成模式0,屏蔽模式1

由于传统51单片机 16位定时器不能自动重载,需要在中断里面手动加载计数器。
STC的51单片机的定时器,已经支持16位自动重载功能。



5.定时器中断,加载计数器的代码屏蔽。



6.新增2个常量,SYS_CLOCK和TICK_HZ,用于自动算定时器的定时时长INT_CLOCK
定时器工作在1T模式,定时长度=系统时钟/OS时钟节拍Hz (INT_CLOCK)

注意:INT_CLOCK 数值小于65536。

7.TIMESHARING 配置调度器算法

当TIMESHARING == 0的时候,选择协议调度,任务的切换需要主动进行,如果一个任务不进行任务的切换动作(wait / switch……),那么这个任务将一直运行,其它任务得不到运行。

当TIMESHARING > 0的时候,选择时间片调度,也是就是分配给每一个任务固定的时间片TIMESHARING * Tick (ms),如果在此时间内任务没有主动切换,则由调度器挂起任务,切换到下一个可执行的任务中。。

默认值5,就是任务最多只能独占5个Tick ,之后调度器挂起任务,切换到下一个可执行的任务。


本例子运行截图


任务1,运行5个tick后挂起,然后任务2运行,
任务2,运行5个tick后挂起,然后任务3运行,

任务3,运行5个tick后挂起,然后任务1运行,

一直循环

本例在定时器中断增加P20翻转的代码,这样可以测试滴答时钟信号。




提供的例子屏蔽了这条代码,需要测试的话,去掉前面的 “;”

本案例适合定时器0有自动16位重载功能的STC 51单片机。







Ex1-230803.zip

12.53 KB, 下载次数: 204

示例文件

1 喜欢他/她就送朵鲜花吧,赠人玫瑰,手有余香!
回复

使用道具 举报 送花

11

主题

340

回帖

929

积分

荣誉版主

积分
929
发表于 2023-7-23 19:13:46 | 显示全部楼层

系统时钟工作在40MHz,测量数据如下:
没有任务切换,中断时间2.3us


任务0到任务1用时7.875us,


任务1到任务2用时7.75us



任务1到任务2用时12.2us




这个RTX系统运行速度还是很快。
回复 支持 反对

使用道具 举报 送花

11

主题

340

回帖

929

积分

荣誉版主

积分
929
发表于 2023-7-23 19:26:28 | 显示全部楼层
本帖最后由 熊仔 于 2023-7-23 19:41 编辑

测试的时候应该屏蔽count++代码这样更准确。


没有任务切换中断耗时 1.917us

任务0到任务1耗时7.583us,


任务1到任务2耗时7.583us



任务2到任务1耗时11.875us



回复 支持 反对

使用道具 举报 送花

  • 打卡等级:偶尔看看III
  • 打卡总天数:54
  • 最近打卡:2025-05-01 09:07:55

717

主题

1万

回帖

1万

积分

管理员

积分
15613
发表于 2023-7-23 21:46:52 | 显示全部楼层
这个好
回复

使用道具 举报 送花

  • 打卡等级:初来乍到
  • 打卡总天数:1
  • 最近打卡:2023-12-25 19:35:16

0

主题

5

回帖

46

积分

新手上路

积分
46
发表于 2023-12-26 13:58:01 | 显示全部楼层
我一直觉得rtx tiny是个好东西,就是跟stc深入结合,我搞不定,希望熊仔大神把这个事情做好,非常感谢。
回复 支持 反对

使用道具 举报 送花

  • 打卡等级:常住居民III
  • 打卡总天数:116
  • 最近打卡:2025-03-09 18:14:54

3

主题

88

回帖

642

积分

荣誉版主

积分
642
发表于 2023-12-26 21:55:15 来自手机 | 显示全部楼层
能用在stc32上面吗

点评

这个可以用 我们荣誉版主移植的 uCOS, FreeRTOS, 或原创 CosyOS  发表于 2023-12-27 08:20
回复 支持 反对

使用道具 举报 送花

  • 打卡等级:初来乍到
  • 打卡总天数:1
  • 最近打卡:2023-12-25 19:35:16

0

主题

5

回帖

46

积分

新手上路

积分
46
发表于 2024-1-29 17:20:07 | 显示全部楼层
我又来麻烦大佬了,我今天用实际的打狗棒实验板测试了,不知道什么原因,p2.0波形不对。不知道大佬能不能在实际的板子上测试一下,谢谢。
回复 支持 反对

使用道具 举报 送花

  • 打卡等级:以坛为家I
  • 打卡总天数:377
  • 最近打卡:2025-05-01 12:18:21

5

主题

45

回帖

291

积分

中级会员

积分
291
发表于 2024-1-31 18:42:17 | 显示全部楼层
这个除了占定时器0,还要占哪些中断硬件
回复 支持 反对

使用道具 举报 送花

  • 打卡等级:初来乍到
  • 打卡总天数:1
  • 最近打卡:2023-12-25 19:35:16

0

主题

5

回帖

46

积分

新手上路

积分
46
发表于 2024-2-1 20:17:20 | 显示全部楼层
我来继续更新吧,这两天有时间又仔细看了上面的程序,也折腾了好久。
现在整理如下:
1.需要增加P2M0和P2M1的定义,否则没法看P20的波形。
2.通过SYS_CLOCK和TICK_HZ定义以及用SYS_CLOCK/TICK_HZ公式来计算INT_CLOCK的方式不行,很奇怪,用直接定义的方式可以,但缺少灵活性。我自己测试的原因可能是EQU后面的数值不能超过65536所致。
为了说明结果,补一张图片。
微信图片_20240201200908.jpg
回复 支持 反对

使用道具 举报 送花

  • 打卡等级:初来乍到
  • 打卡总天数:1
  • 最近打卡:2023-12-25 19:35:16

0

主题

5

回帖

46

积分

新手上路

积分
46
发表于 2024-2-1 20:21:06 | 显示全部楼层
为了大家学习方便,把最后的程序上传供参考。

Ex1_20240201.rar

54.91 KB, 下载次数: 161

回复 支持 反对

使用道具 举报 送花

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

QQ|手机版|小黑屋|深圳国芯人工智能有限公司 ( 粤ICP备2022108929号-2 )

GMT+8, 2025-5-2 06:53 , Processed in 0.166328 second(s), 115 queries .

Powered by Discuz! X3.5

© 2001-2025 Discuz! Team.

快速回复 返回顶部 返回列表