tzz1983
发表于 2024-9-5 08:52:55
durongze 发表于 2024-9-5 07:47
亲测,可以编译通过了。0警告。
Rebuild target 'FreeRTOS_STC32G_Demo'
compiling croutine.c...
恭喜你,成功迈入了RTOS的殿堂,学习RTOS对编程能力有很大助益,加油
durongze
发表于 2024-9-6 11:17:14
本帖最后由 durongze 于 2024-9-6 11:18 编辑
tzz1983 发表于 2024-4-17 10:26
没有BUG哦, 我做了代码都没死机
代码做好了, 按您的要求做的,
-------------------------------下面和定时器有关,如果不改变任务本身,不需要修改(我的理解)。-----------------------------------
T4T3M |= 0x02;
TM3PS = TM3PS_VALUE;
T3L = (uint8_t)(RELOAD_VALUE);
T3H = (uint8_t)(RELOAD_VALUE >> 8);
T3IF = 0;
ET3 = 1;
T3R = 1;
------------------------------------------------------------
+++++++++++ P01是做什么的? P03 又是做啥的? P20 、P21、P22是用来观察 3个任务的运行状态(我的理解)。++++++++++++++++++
TaskA P01(false)P02(30) P20
TaskB P03(false)P04(1) P21
TaskC P03(true) P05(30) P22
+++++++++++++++++++++++++++++
我用的是10楼的代码,楼主帮忙看下我分析的testTask对不对? P01、P03 又是做啥的?
https://www.stcaimcu.com/data/attachment/forum/202409/06/100355m1zwrrgwzazr1zar.jpg
https://www.stcaimcu.com/data/attachment/forum/202409/06/100823a7cmffsss4fzv9xp.jpg
tzz1983
发表于 2024-9-6 12:56:11
durongze 发表于 2024-9-6 11:17
-------------------------------下面和定时器有关,如果不改变任务本身,不需要修改(我的理解)。------ ...
一个一个问题来回答吧,
我总算明白你昨天问的那个是什么意思了,
先回答你昨天那个文件前有感叹号的问题,
如图:
如图红箭头所指的地方,看到一个红色的横杆没,
这代表这是一个被项目禁用的文件,具体解释是:
这个文件虽然没有被项目移除,但是不参与编译,
留着它是因为以后如果要用到这个文件时,只要改一下文件的“Options”就可以了。
进入文件“Options”的方法是:项目窗口的文件名上鼠标右键快捷菜单第一个选项
所以你昨天问的问题,为什么头文件前有感叹号,你无法打开,因为 -> 包含这些头文件的主C文件没有生效
今天的问题,下面这段是什么意思,因为文件没有参加编译,所以整个 StatisticaIOs.c 都不起作用,也包含下面这一段
tzz1983
发表于 2024-9-6 13:09:06
本帖最后由 tzz1983 于 2024-9-6 13:42 编辑
durongze 发表于 2024-9-6 11:17
-------------------------------下面和定时器有关,如果不改变任务本身,不需要修改(我的理解)。------ ...
补充一下: 刚才说下面 StatisticaIOs.c 的这些代码是没有用的,
但是在另一个文件“testTask.c”中有一段相同的代码,“testTask.c”中的代码是有用的,
就是初始化定时器3, 每秒钟产生77次中断。
下次你问代码时,要说明一下出至哪个文件的第多少行,否则别人可能会找不到
T4T3M |= 0x02;
TM3PS = TM3PS_VALUE;
T3L = (uint8_t)(RELOAD_VALUE);
T3H = (uint8_t)(RELOAD_VALUE >> 8);
T3IF = 0;
ET3 = 1;
T3R = 1;
tzz1983
发表于 2024-9-6 13:24:14
本帖最后由 tzz1983 于 2024-9-6 13:31 编辑
durongze 发表于 2024-9-6 11:17
-------------------------------下面和定时器有关,如果不改变任务本身,不需要修改(我的理解)。------ ...
回答第三个问题:
这个代码是发给杨老师用逻辑仪检查任务捕捉任务切换时间用的,
里面的逻辑是这样子的:
任务A初始化定时器3后挂起自己 -> 定时器3中断里 { P01=1;portYIELD_FROM_ISR( xTaskResumeFromISR(taskA_Handle) ); }P01输出高电平,并解除挂起的任务A。
-> 任务A被解除挂起后,第一件事情就是 P01=0;由此看得出 P01高电平的期间,就是中断解除任务A挂起到实际任务A运行所需的时间。(用逻辑仪捕捉到这个高电平,就是切换用的时间)
任务C和B的行为和以上类似: 任务C解除任务B的挂起,用来展示信号的端口是 P03 , 自己观察吧。
其它说明:
这幅图我没看懂,不知道你摘录自哪里?
另外,杨老师用的应该是打狗棒,具体是什么我也不清楚,
就是说和你发的图片上的电路应该是不一样的,我不清楚你连了那么多线代表什么意思
再者,看代码应理解其意,简单点说就是看代码本身做了些啥,
而不是纠结用的是哪个GPIO端口这种细节,改一个GPIO名用来适应不同的硬件,这种事情是比较简单的,留到最后再去做
durongze
发表于 2024-9-6 14:28:27
tzz1983 发表于 2024-9-6 13:24
回答第三个问题:
这个代码是发给杨老师用逻辑仪检查任务捕捉任务切换时间用的,
知道啦。非常感谢。我以为这个代码是给实验箱用的。原来是给逻辑仪检查任务捕捉任务切换时间用的
durongze
发表于 2024-9-6 14:28:53
tzz1983 发表于 2024-9-6 13:09
补充一下: 刚才说下面 StatisticaIOs.c 的这些代码是没有用的,
但是在另一个文件“testTask.c”中有一段 ...
{:titter:} 好的,谢啦。
tzz1983
发表于 2024-9-7 16:20:37
2024/9/7
FreeRTOS 在 Ai8051U 上运行的 最简代码例程
为了方便大家在Ai8051U 实验箱 上做 FreeRTOS 实验,
直接下载即可运行。
通常RTOS移植成功后的例程,会衔接一些典型的使用例子.
最近发现一个有趣的事情,
对于一些初学者,RTOS本身没有难倒他们,反而是那些例程让他们绕得很深。
鉴于此,这次使用的是最简范本,例程中仅两个点灯任务,
第一个任务,让实验箱上的8个LED走流灯,只有三行代码:
第二个任务,每秒用printf()函数输出一段字符串,只有一行代码:
喜欢FrerRTOS的朋友们,放飞吧,喜欢什么功能自己加!
FreeRTOS 在 Ai8051U 上运行的 最简演示代码例程
为了方便大家在Ai8051U 实验箱 上做 FreeRTOS 实验,
直接下载即可运行。
神农鼎
发表于 2024-9-10 16:39:30
网友问:
请问STC32G12K128运行FreeRTOS最大任务数量取决于edata还是xdata
我估计卡在不清楚楼主移植的这个,如何配置:
MSP ?
PSP ?
MSP+PSP ?
32G12K128: edata/4k,xdata/8k
32G8K64: edata/2k,xdata/6k
AI8051U: edata/2k,xdata/32k
https://www.stcaimcu.com/forum.php?mod=redirect&goto=findpost&ptid=4702&pid=33284
tzz1983
发表于 2024-9-10 19:06:48
神农鼎 发表于 2024-9-10 16:39
网友问:
请问STC32G12K128运行FreeRTOS最大任务数量取决于edata还是xdata
STC32G12K128运行FreeRTOS最大任务数量取决于edata
STC32G12K128的edata 有4K, 还是比较大的, 十几个任务很轻松,
小型系统一般几个任务就可以了, 所以说还是比较宽松的.
本贴这个FreeRTOS版本没有做MSP+PSP处理.
对于2K edata 产品, 可以考虑用uC/OS-2 移植版,
https://www.stcaimcu.com/forum.php?mod=viewthread&tid=4702&extra=page%3D1
uC/OS-2 移植版已经比较完善, 以下特征都适合在小尺寸edata型号上运行:
[*]MSP+PSP 对多任务的RAM节省量是非常可观的, 任务越多越明显.
[*]OS内部的全局变量可指定到xdata/edata
[*]支持Large模式,全局变量一键切换到xdata.很方便.
另外 CosyOS 对AI全系列型号的支持也不错,
https://www.stcaimcu.com/forum.php?mod=viewthread&tid=1807&extra=page%3D1
上次作者聊到,
在251内核的机型上也支持搬栈选项,
很合适对任务数量比较执着的人群.