- 打卡等级:初来乍到
- 打卡总天数:9
- 最近打卡:2025-06-09 09:28:28
高级会员
- 积分
- 540
|
发表于 2025-5-23 16:57:48
|
显示全部楼层
宏扩展后看迷糊了,请作者给解释下吧?
_ecode = uStartTask_Ready(Sysidle);
扩展为:
#define uStartTask_Ready(Sysidle) \
uStartTask(Sysidle, 0x00 )
#define uStartTask(Sysidle, 0x00) \
sUSV_StartTask(&u_taskhand_Sysidle, 0x00)
/** 启动任务 */
#define sUSV_StartTask(&u_taskhand_Sysidle, 0x00) \
( \
(*(s_boolvoid_tfp)(su_kernel_lock0))() || true ? su_startup_task((s_taskhand_tsp)&u_taskhand_Sysidle, !0x00 ? OS_STATUS_READY : OS_STATUS_SUSPENDED) : OS_ECODE_NOERROR \
)
_ecode = (*(s_boolvoid_tfp)(su_kernel_lock0))()|| true ? su_startup_task((s_taskhand_tsp)&u_taskhand_Sysidle, !0x00 ? 0x00 : 0x08) : 0;
/** 内核上锁(进入非嵌套服务层临界区)*/
void su_kernel_lock0(void)
{
mSysIRQ_Disable();
} 内核上锁返回值为空 (*(s_boolvoid_tfp)(su_kernel_lock0))() 这一句怎么理解?
(s_taskhand_tsp)&u_taskhand_Sysidle 这个是把指针强制转换为任务控制块指针吧?
&u_taskhand_Sysidle 这个是取u_taskhand_Sysidle的指针吧! u_taskhand_Sysidle 在什么地方没找到?
麻烦作者给详细解释下吧!
|
|