stc-xuewei
发表于 2024-5-4 20:12:21
使用uDelay_s(~0)延时语句,编译后有报警,如下所示:
Sources\Test\test.c(23): warning C188: 'constant': value truncated
但不影响运行,是否有隐含问题?
CosyOS
发表于 2024-5-4 20:59:18
本帖最后由 CosyOS 于 2024-5-4 21:10 编辑
stc-xuewei 发表于 2024-5-4 20:12
使用uDelay_s(~0)延时语句,编译后有报警,如下所示:
Sources\Test\test.c(23): warning C188: 'constant' ...
你说的这个问题,我仔细的研究了一下,还真是个大问题!
你可立大功了!!!
郑重通知大家:
以后只要是想在任务中进行“无限延时”的,
API一律使用:uDelay_tc(~0);以滴答周期为单位进行无限延时。
无论是 STC8、STC32、ARM,都是如此。
否则,即使编译器没报警,~0 被编译后也会变成非最大值的滴答周期,
并最终导致“无限延时”变为了不确定的“有限延时”。
特此公告!
其它含有超时机制的服务,无限等待结果成功,不受影响。
如 uTakeBin(bin, ~0);
因为所有含有超时机制的服务,超时时间的单位就是滴答周期。
stc-xuewei
发表于 2024-5-4 21:53:47
阻塞和挂起是两个概念吗?
CosyOS
发表于 2024-5-4 22:53:49
本帖最后由 CosyOS 于 2024-5-4 22:59 编辑
stc-xuewei 发表于 2024-5-4 21:53
阻塞和挂起是两个概念吗?
是的。
阻塞的任务,可以用“清除阻塞”来使其就绪并运行;
挂起的任务,可以用“恢复任务”来恢复该任务的原状态。
看 Demo 示例程序,具体同步过程是如何应用的。
没事多看下已发布的课程资料pptx。
DIY365
发表于 2024-5-5 19:38:29
很强大!!!顶起{:4_174:}{:4_174:}{:4_174:}
stc-xuewei
发表于 2024-5-5 22:12:00
是不是邮箱发送的只能是指针?
CosyOS
发表于 2024-5-6 01:06:04
本帖最后由 CosyOS 于 2024-5-6 07:42 编辑
stc-xuewei 发表于 2024-5-5 22:12
是不是邮箱发送的只能是指针?
是的也不是。
说“是的”,是因为传输的的确是指针:(void *)类型;
说“不是”,是因为在满足特定条件时,也可传输数据;
特定条件是:
C51下,sizeof(数据类型) <= 3;
C251、MDK下,sizeof(数据类型) <= 4;
并且,传输的数据必须为真值。
示例一 - 传输指针
uCreateMailbox( mbox_2 );
发送线程:
static xxx_t m; // xxx_t 可为任意类型,m 可为任意值
uSendMail( mbox_2, &m );
接收线程:
xxx_t *m = (xxx_t *)uRecvMail( mbox_2, ~0 );
if(m){ 使用 *m; }
示例二 - 传输数据
uCreateMailbox( mbox_2 );
发送线程:
uSendMail( mbox_2, (void *)m ); // m可以是立即数,必须为真值。
接收线程:
uint m = (uint)uRecvMail( mbox_2, ~0 );
if(m){ 使用m; }
如果仅传输真值数据,可考虑采用“飞信”,比邮箱效率高。
飞信传输的数据类型:
C51:u8
C251:u16
MDK:u32
详情请查阅相关说明。
如果还有疑虑,也不必着急,下节课中会重点讲解!
CosyOS
发表于 2024-5-6 10:53:48
CosyOS-II 如何减少 内存 和 flash 占用
一、系统配置文件中,要做针对性的裁剪,禁用不使用的功能。
二、如果禁用 任务管理器,内存 和 flash 占用,都将会有一个质的减少。
对于系统资源紧缺的MCU,建议用户禁用 任务管理器。
三、对于51、251(有时),由于采用 NOOVERLAY 技术,将导致 REMOVEUNUSED 失效。
所以,更需做针对性的裁剪,禁用不使用的功能。
1、大概率,很少有人会在 滴答 中调用服务,即便调用,也是极少的。
所以,可以考虑移除 sv_tick.c ,或在该文件中删除用不到的服务函数。
2、在极端情况下,所有 sv_xxx.c 文件中的服务函数都可逐一排查,删除用不到的服务函数。
3、手动移除用户自己的、未使用的,函数和全局变量。
380091044
发表于 2024-5-6 11:56:38
CosyOS 发表于 2024-5-6 10:53
CosyOS-II 如何减少 内存 和 flash 占用
一、系统配置文件中,要做针对性的裁剪,禁用不使用的功能。
这个实用,支持
stc-xuewei
发表于 2024-5-6 22:15:43
单次同步,是不是一个发送源,一个线程接收?
并发同步,是不是多个发送源,一个线程接收?