文章目录
一、前言
上一节学习了使用逻辑或同步线程,接下来学习使用逻辑与同步线程。
STM32工程:
链接:https://pan.baidu.com/s/1wKWtdPEHyn1NBTc97DRb5A
提取码:hmeo
二、实验目的
分别长按KEY0,KEY1,KEY2后同步线程A。
三、API
3.1、osEventFlagsWait
/* 使用举例1 */
void thread_A_App(void *argument)
{
osStatus_t os_Status;
while(1)
{
os_Status = osEventFlagsWait(event_Flags1_ID, /* 事件标志组ID */
0x00000003U, /* 等待事件标志位0与事件标志位1 */
osFlagsWaitAll, /* 逻辑与 */
osWaitForever /* 一直等待 */
);
printf("thread A is running.\r\n");
}
}
/* 使用举例2 */
void thread_A_App(void *argument)
{
osStatus_t os_Status;
while(1)
{
os_Status = osEventFlagsWait(event_Flags1_ID, /* 事件标志组ID */
0x00000003U, /* 等待事件标志位0与事件标志位1 */
osFlagsWaitAll, /* 逻辑与 */
2000U /* 超时时间2S */
);
printf("thread A is running.\r\n");
}
}
四、代码
4.1、main.h
4.2、main.c