找回密码
 立即注册
楼主: fanxsp

原创极简的51-MCU专用RTOS TinyRTOS51

  [复制链接]
  • 打卡等级:以坛为家II
  • 打卡总天数:501
  • 最近打卡:2025-05-01 14:43:21

1

主题

183

回帖

1863

积分

金牌会员

积分
1863
发表于 2024-5-23 12:14:57 | 显示全部楼层
ZHAOB*** 发表于 2024-5-23 11:51
这个不错,有STC15的吗?

都可以用
回复 支持 反对

使用道具 举报 送花

  • 打卡等级:初来乍到
  • 打卡总天数:1
  • 最近打卡:2024-12-02 11:23:23

0

主题

1

回帖

68

积分

注册会员

积分
68
发表于 2024-6-4 18:45:53 | 显示全部楼层
可以支持STC32G系列MCU吗?
回复 支持 反对

使用道具 举报 送花

  • 打卡等级:初来乍到
  • 打卡总天数:5
  • 最近打卡:2025-04-30 07:46:22

33

主题

1079

回帖

2319

积分

荣誉版主

积分
2319
发表于 2024-6-12 15:29:02 | 显示全部楼层
嘿, fanxsp, 好久没说话了, 不打算更新了吗,  今天去了一下你的代码, 怎么出了个 OSNesting 呢   
回复 支持 反对

使用道具 举报 送花

  • 打卡等级:以坛为家II
  • 打卡总天数:501
  • 最近打卡:2025-05-01 14:43:21

1

主题

183

回帖

1863

积分

金牌会员

积分
1863
发表于 2024-6-12 16:16:04 | 显示全部楼层
tzz1*** 发表于 2024-6-12 15:29
嘿, fanxsp, 好久没说话了, 不打算更新了吗,  今天去了一下你的代码, 怎么出了个 OSNesting 呢    ...

OSNesting  是用来 做为  large 模式的 reentrant函数 跟踪中断层次的,这样任务和中断可以分配单独的模拟软堆栈,类似于PSP  MSP,可以节省空间,这个功能是可以配置的,可以配置为不使用。
回复 支持 反对

使用道具 举报 送花

  • 打卡等级:以坛为家II
  • 打卡总天数:501
  • 最近打卡:2025-05-01 14:43:21

1

主题

183

回帖

1863

积分

金牌会员

积分
1863
发表于 2024-6-12 16:24:32 | 显示全部楼层
有增加一些功能,过一段时间,在实际项目中,多测试一下,再说吧。
回复 支持 反对

使用道具 举报 送花

  • 打卡等级:偶尔看看I
  • 打卡总天数:13
  • 最近打卡:2025-04-15 09:17:07

0

主题

5

回帖

142

积分

注册会员

积分
142
发表于 2024-6-22 14:02:47 来自手机 | 显示全部楼层
呵呵呵,裸奔的我从头到尾看一遍,技术在交流中进步!
回复 支持 反对

使用道具 举报 送花

  • 打卡等级:初来乍到
  • 打卡总天数:5
  • 最近打卡:2025-04-30 07:46:22

33

主题

1079

回帖

2319

积分

荣誉版主

积分
2319
发表于 2024-6-28 12:16:18 | 显示全部楼层
本帖最后由 tzz1983 于 2024-6-28 13:23 编辑

@fanxsp 最近有没有玩251呀, 我遇到了一个问题, 百思不行其解, 帮我看看?

型号: STC32G12K128   251内核

进出临界区的代码如下:
#define  OS_ENTER_CRITICAL()    do{ EA=0;uxCriticalNesting++; }while(0)
#define  OS_EXIT_CRITICAL()     do{ uxCriticalNesting--; if(uxCriticalNesting==0) EA=1; }while(0)

运行一段时间就出现异常, 更换别的方法又正常, 我是左想右想也想不出原因呀!
这个逻辑应该没有问题 , 而且在51核上这样用得好好的,到251上就不行了



===已经找到原因了
回复 支持 反对

使用道具 举报 送花

  • 打卡等级:以坛为家II
  • 打卡总天数:501
  • 最近打卡:2025-05-01 14:43:21

1

主题

183

回帖

1863

积分

金牌会员

积分
1863
发表于 2024-6-28 22:06:41 | 显示全部楼层
tzz1*** 发表于 2024-6-28 12:16
@fanxsp 最近有没有玩251呀, 我遇到了一个问题, 百思不行其解, 帮我看看?

型号: STC32G12K128   251内核

原因找到了是吧,能说说是什么情况吗?

点评

临界区代码没有问题 , 是我自己没按规范使用. 这里体现出了这个临界区代码的优缺点: 优点是精简, 缺点是,总是假定第一次进临界区时的条件是 EA=1, 否则在退出临界区时EA会被意外打开. 当然这不是BUG, 严格按配对  详情 回复 发表于 2024-6-29 08:16
回复 支持 反对

使用道具 举报 送花

  • 打卡等级:初来乍到
  • 打卡总天数:5
  • 最近打卡:2025-04-30 07:46:22

33

主题

1079

回帖

2319

积分

荣誉版主

积分
2319
发表于 2024-6-29 08:16:04 | 显示全部楼层
本帖最后由 tzz1983 于 2024-6-29 08:19 编辑
fan*** 发表于 2024-6-28 22:06
原因找到了是吧,能说说是什么情况吗?

临界区代码没有问题 , 是我自己没按规范使用.

这里体现出了这个临界区代码的优缺点:
优点是精简,  

缺点是,总是假定第一次进临界区时的条件是 EA=1, 否则在退出临界区时EA会被意外打开.
当然这不是BUG, 严格按配对规则使用时没有问题.

我当时出错是因为在中断内用汇编时, 因为中断内EA的状态已知, 所以直接CLR EA ,  后面再SETB  EA.
本来也不会有问题 , 可偏偏在中途调用外部勾子函数,勾子函数又使用了临界区. 所以挂了.

总结来说是我自己的一个BUG.
回复 支持 反对

使用道具 举报 送花

  • 打卡等级:以坛为家II
  • 打卡总天数:501
  • 最近打卡:2025-05-01 14:43:21

1

主题

183

回帖

1863

积分

金牌会员

积分
1863
发表于 2024-6-29 08:44:13 | 显示全部楼层
tzz1*** 发表于 2024-6-29 08:16
临界区代码没有问题 , 是我自己没按规范使用.

这里体现出了这个临界区代码的优缺点:

是的,OS启动时,EA就是开的,所以直接操作EA ,要很小心。
回复 支持 反对

使用道具 举报 送花

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

本版积分规则

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

GMT+8, 2025-5-2 02:49 , Processed in 0.147390 second(s), 114 queries .

Powered by Discuz! X3.5

© 2001-2025 Discuz! Team.

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