找回密码
 立即注册
查看: 1578|回复: 11

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

[复制链接]

该用户从未签到

11

主题

329

回帖

872

积分

荣誉版主

积分
872
发表于 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, 下载次数: 72

示例文件

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

使用道具 举报

该用户从未签到

11

主题

329

回帖

872

积分

荣誉版主

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

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


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


任务1到任务2用时7.75us



任务1到任务2用时12.2us




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

使用道具 举报

该用户从未签到

11

主题

329

回帖

872

积分

荣誉版主

积分
872
 楼主| 发表于 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



回复 支持 反对 送花

使用道具 举报

该用户从未签到

551

主题

9294

回帖

1万

积分

管理员

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

使用道具 举报

  • TA的每日心情
    奋斗
    2023-12-25 19:35
  • 签到天数: 1 天

    [LV.1]初来乍到

    0

    主题

    5

    回帖

    46

    积分

    新手上路

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

    使用道具 举报

  • TA的每日心情
    开心
    前天 11:14
  • 签到天数: 79 天

    [LV.6]常住居民II

    3

    主题

    60

    回帖

    518

    积分

    荣誉版主

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

    点评

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

    使用道具 举报

  • TA的每日心情
    奋斗
    2023-12-25 19:35
  • 签到天数: 1 天

    [LV.1]初来乍到

    0

    主题

    5

    回帖

    46

    积分

    新手上路

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

    使用道具 举报

  • TA的每日心情
    开心
    昨天 13:21
  • 签到天数: 137 天

    [LV.7]常住居民III

    4

    主题

    32

    回帖

    618

    积分

    高级会员

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

    使用道具 举报

  • TA的每日心情
    奋斗
    2023-12-25 19:35
  • 签到天数: 1 天

    [LV.1]初来乍到

    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
    回复 支持 反对 送花

    使用道具 举报

  • TA的每日心情
    奋斗
    2023-12-25 19:35
  • 签到天数: 1 天

    [LV.1]初来乍到

    0

    主题

    5

    回帖

    46

    积分

    新手上路

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

    Ex1_20240201.rar

    54.91 KB, 下载次数: 28

    回复 支持 反对 送花

    使用道具 举报

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

    本版积分规则

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

    GMT+8, 2024-5-2 20:10 , Processed in 0.103404 second(s), 69 queries .

    Powered by Discuz! X3.5

    © 2001-2024 Discuz! Team.

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