|

楼主 |
发表于 2021-6-27 12:04:18
|
显示全部楼层
举例:
- /*
- *********************************************************************************************************
- * 函 数 名: AppTaskMsgPro
- * 功能说明: 消息处理,这里用于接收事件标志。
- * 形 参: thread_input 是在创建该任务时传递的形参
- * 返 回 值: 无
- 优 先 级: 3
- *********************************************************************************************************
- */
- static void AppTaskMsgPro(ULONG thread_input)
- {
- ULONG actual_events;
- UINT status;
-
- while(1)
- {
-
- status = tx_event_flags_get(&EventGroup, /* 事件标志控制块 */
- BIT_ALL, /* 等待标志 */
- TX_OR_CLEAR , /* 等待任意bit满足即可 */
- &actual_events, /* 获取实际值 */
- TX_WAIT_FOREVER);/* 永久等待 */
-
- if(status == TX_SUCCESS)
- {
- switch (actual_events)
- {
- case BIT_ALL:
- /* 接收到bit1和bit0都被设置的消息 */
- printf("接收到bit0和bit1都被设置的消息\r\n");
- break;
-
- case BIT_0:
- /* 接收到bit0被设置的消息 */
- printf("接收到bit0被设置的消息\r\n");
- break;
-
- case BIT_1:
- /* 接收到bit1被设置的消息 */
- printf("接收到bit1被设置的消息\r\n");
- break;
-
- default:
- break;
- }
-
- }
- }
- }
- /*
- *********************************************************************************************************
- * 函 数 名: AppTaskUserIF
- * 功能说明: 按键消息处理
- * 形 参: thread_input 创建该任务时传递的形参
- * 返 回 值: 无
- 优 先 级: 4
- *********************************************************************************************************
- */
- static void AppTaskUserIF(ULONG thread_input)
- {
- uint8_t ucKeyCode; /* 按键代码 */
- (void)thread_input;
-
- while(1)
- {
- ucKeyCode = bsp_GetKey();
-
- if (ucKeyCode != KEY_NONE)
- {
- switch (ucKeyCode)
- {
- case KEY_DOWN_K1: /* K1键按打印任务执行情况 */
- DispTaskInfo();
- break;
-
- case KEY_DOWN_K2: /* K2键按下, 发送事件标志,置位bit0 */
- tx_event_flags_set(&EventGroup, BIT_0, TX_OR);
- break;
-
- case KEY_DOWN_K3: /* K2键按下, 发送事件标志,置位bit1 */
- tx_event_flags_set(&EventGroup, BIT_1, TX_OR);
- break;
-
- default: /* 其他的键值不处理 */
- break;
- }
- }
- tx_thread_sleep(20);
- }
- }
复制代码
|
|