文章目录
一、前言
今天继续学习事件标志组的知识点,在实际项目上肯定会用到的osEventFlagsSet,还有实际项目上可能会用到的osEventFlagsGet。
Note:
必须先创建消息队列,接着再创建线程。顺序颠倒就相当于内存未初始化就被线程使用,导致线程莫名其妙。
STM32工程:
链接:https://pan.baidu.com/s/1P_ltxVUjgUsdZCV5IGdQ-A
提取码:kq6u
二、实验目的
长按按键KEY1,将事件标志组event_Flags1的flag0置1,并获取当前事件标志组event_Flags的值。
长按按键KEY2,将事件标志组event_Flags1的flag1,flag2,flag3同时置1,并获取当前事件标志组event_Flags的值。
三、API
3.1、osEventFlagsSet
/* 使用案例 */
osEventFlagsSet(event_Flags1_ID,0x01U << 0); /* 事件标志组event_Flags1的flag0置1 */
osEventFlagsSet(event_Flags1_ID,0x01U << 7); /* 事件标志组event_Flags1的flag7置1 */
osEventFlagsSet(event_Flags1_ID,0x0FU); /* 事件标志组event_Flags1的flag0,flag1,flag2,flag3同时置1 */
3.2、osEventFlagsGet
/* 使用案例 */
uint32_t flags;
flags = osEventFlagsGet(event_Flags1_ID); /* 获取event_Flags1的值 */
四、代码
4.1、main.h
4.2、main.c
五、Event Recorder调试
5.1、长按按键KEY1,将事件标志组event_Flags1的flag0置1,并获取当前事件标志组event_Flags的值
5.2、长按按键KEY2,将事件标志组event_Flags1的flag1,flag2,flag3同时置1,并获取当前事件标志组event_Flags的值
5.3、接着,长按KEY1或KEY2再观察事件标志组的值
从下图可以证明osEventFlagsGet并不会清除事件标志组的flag。