找回密码
 立即注册
楼主: 熊仔

最新版本uC-OS2-2.93.01已移植到STC32G上,请帮忙查错

[复制链接]
  • 打卡等级:以坛为家II
  • 打卡总天数:432
  • 最近打卡:2025-05-01 16:19:56

5

主题

1127

回帖

4263

积分

荣誉版主

积分
4263
发表于 2023-9-18 13:33:18 | 显示全部楼层
熊*** 发表于 2023-9-18 13:05
最好选择能自动清零的中断。当然手动也行,多执行一条清零语句。

你的os代码太庞大了。之前看了一下,没 ...

是的,能硬件自动清0的更好,然后中断清零的定义为空即可。
回复 支持 反对

使用道具 举报 送花

  • 打卡等级:以坛为家II
  • 打卡总天数:432
  • 最近打卡:2025-05-01 16:19:56

5

主题

1127

回帖

4263

积分

荣誉版主

积分
4263
发表于 2023-9-18 13:43:47 | 显示全部楼层
另外,定时器0的时钟模式,会根据系统时钟和系统滴答周期自动配置为1T或12T,这个思路你可以参考一下。@熊仔

点评

tzz1983网友弄的自动分频。STC32有分频寄存器。STC8没有。其实一般使用1kHz,不改也行。 [attachimg]21698[/attachimg] 我也研究了一下,挺不错。  详情 回复 发表于 2023-9-18 13:52
回复 支持 反对

使用道具 举报 送花

11

主题

340

回帖

929

积分

荣誉版主

积分
929
发表于 2023-9-18 13:52:18 | 显示全部楼层
Cos*** 发表于 2023-9-18 13:43
另外,定时器0的时钟模式,会根据系统时钟和系统滴答周期自动配置为1T或12T,这个思路你可以参考一下。@熊 ...

tzz1983网友弄的自动分频。STC32有分频寄存器。STC8没有。其实一般使用1kHz,不改也行。

截图202309181351257112.jpg

我也研究了一下,挺不错。
回复 支持 反对

使用道具 举报 送花

  • 打卡等级:以坛为家II
  • 打卡总天数:473
  • 最近打卡:2025-05-01 08:58:09

0

主题

50

回帖

189

积分

注册会员

积分
189
发表于 2023-9-18 14:03:11 | 显示全部楼层
如能将ucos2 stc8允许任务堆栈空间任意大小的功能移植到是stc32上来,stc32g8k64上ram就宽松了

点评

STC8和STC32的ucos版本都支持任意大小堆栈。  详情 回复 发表于 2023-9-18 14:33
回复 支持 反对

使用道具 举报 送花

11

主题

340

回帖

929

积分

荣誉版主

积分
929
发表于 2023-9-18 14:33:20 | 显示全部楼层
eda*** 发表于 2023-9-18 14:03
如能将ucos2 stc8允许任务堆栈空间任意大小的功能移植到是stc32上来,stc32g8k64上ram就宽松了 ...

STC8和STC32的ucos版本都支持任意大小堆栈。
回复 支持 反对

使用道具 举报 送花

  • 打卡等级:以坛为家II
  • 打卡总天数:473
  • 最近打卡:2025-05-01 08:58:09

0

主题

50

回帖

189

积分

注册会员

积分
189
发表于 2023-9-18 15:02:50 | 显示全部楼层
熊*** 发表于 2023-9-18 14:33
STC8和STC32的ucos版本都支持任意大小堆栈。


我指的是使用OSTaskCreate生成不同任务可设置不一样的堆栈尺寸,这样一些轻量任务可以设置较小size

screenshot20230918.png

点评

STC8的ucos 新建任务函数OSTaskCreate改过的,需要增加堆栈大小。才能支持任意大小 STC32的不需要改,直接支持  详情 回复 发表于 2023-9-18 15:08
回复 支持 反对

使用道具 举报 送花

11

主题

340

回帖

929

积分

荣誉版主

积分
929
发表于 2023-9-18 15:08:09 | 显示全部楼层
eda*** 发表于 2023-9-18 15:02
我指的是使用OSTaskCreate生成不同任务可设置不一样的堆栈尺寸,这样一些轻量任务可以设置较小size

...

STC8的ucos 新建任务函数OSTaskCreate改过的,需要增加堆栈大小。才能支持任意大小
STC32的不需要改,直接支持
回复 支持 反对

使用道具 举报 送花

  • 打卡等级:以坛为家II
  • 打卡总天数:473
  • 最近打卡:2025-05-01 08:58:09

0

主题

50

回帖

189

积分

注册会员

积分
189
发表于 2023-9-18 15:15:19 | 显示全部楼层
熊*** 发表于 2023-9-18 15:08
STC8的ucos 新建任务函数OSTaskCreate改过的,需要增加堆栈大小。才能支持任意大小
STC32的不需要改,直 ...

谢谢,我在stc32g8k64上试试看
回复 支持 反对

使用道具 举报 送花

11

主题

340

回帖

929

积分

荣誉版主

积分
929
发表于 2023-9-18 15:58:38 | 显示全部楼层
调用OS_EventTaskRdy的系统函数。都会有改变优先级的可能。
截图202309181553049806.jpg

有这么多。
中断退出前调用OSIntExit (),
OSIntExit ()调用OS_SchedNew ()

截图202309181556231286.jpg


    OSPrioCur = OSPrioHighRdy;
    OSTCBCur  = OSTCBHighRdy;

这两条必须在临界区读取和赋值
回复 支持 反对

使用道具 举报 送花

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

33

主题

1079

回帖

2319

积分

荣誉版主

积分
2319
发表于 2023-9-19 07:13:06 来自手机 | 显示全部楼层
UCOS用于ST32G总结两个需要注意的地方:
1.每多开放一级中断优先级,任务堆栈将会增加至少37字节的需求,每个任务都有要加,多级中断嵌套时非常值得引起注意。解决办法:非必要时用任务优先级替代中断代先级
2.在函数内定义局部变量时,不要指定存储类型“xdata”,编译器只对edada区的自动类型局部变量做重入(入桟)管理。解决办法:小尺寸局部变量不指定存储类型,默认edata即可。大尺寸的,用OS自带的内存管理,先申请一片内存,用完后释放它。(我之前有贴子,上面有用错xdata的例子)
回复 支持 反对

使用道具 举报 送花

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

本版积分规则

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

GMT+8, 2025-5-2 02:24 , Processed in 0.128226 second(s), 108 queries .

Powered by Discuz! X3.5

© 2001-2025 Discuz! Team.

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