
问答对人们有帮助,内容完整,我也想知道答案
![]()
我定义了一个信号量集: OS_FLAG_GRP * FlagTest1; INT8U Flag_Error
![]()
在任务初始化之前,创建: FlagTest1 = OSFlagCreate((OS_FLAGS)0,&Flag_Error);
任务很简单:
staticvoidAppTask3(void * p_arg)

{
(void)p_arg;
while(1)
![]()
{
OSFlagPend(FlagTest1信号量集,(OS_FLAGS)3,OS_FLAG_WAIT_SET_ALL + OS_FLAG_CONSUME,0,&Flag_Error);
printf(“ TASK3没问题!\ n”);

}
}
在其他任务中,向信号量集发出信号.
我的问题是: 第一次重置程序时,第一次请求运行时信号量集,任务三中的信号量可以执行一次,然后根据我发送的信号量正确执行以下操作. . 我不知道是什么原因造成的. 将执行第一个信号量请求,并且向其发送信号的任务的优先级低于任务三.
在请求信号量的前面,我添加了OSFlagQuery函数来检测该值确实为0,但确实执行了request语句. 我不知道为什么.
![]()
本文来自电脑杂谈,转载请注明本文网址:
https://www.pc-fly.com/a/jisuanjixue/article-281263-1.html
还美军保护地
人家导弹都装在发射筒里真是阿Q精神