第12章 任务间通信与同步
使用举例 __task void AppTaskMsgPro(void) { uint8_t *pMsg; OS_RESULT xResult; const uint16_t usMaxBlockTime = 200; /* 延迟周期 */ while (1){ xResult = os_mbx_wait(mailbox, (void *)pMsg, usMaxBlockTime); switch (xResult){ case OS_R_OK: printf(无需等待,pMsg = %d\r\n, *pMsg); break; case OS_R_MBX: printf(消息邮箱空,等待时间从消息邮箱内获得数据,pMsg = %d\r\n, *pMsg); break; case OS_R_TMO: bsp_LedToggle(1); bsp_LedToggle(4); break; default: break; } } } 函数 isr_mbx_check OS_RESULT isr_mbx_check( OS_ID mailbox); /*消息邮箱的ID标识*/ 函数描述: 用来检测消息邮箱剩余空间可以存储的消息个数。建议配合isr_mbx_send 一起使用。 第 1 个参数填写消息邮箱的 ID 标识,即函数 os_mbx_declare 第一个参数。 函数返回消息邮箱剩余空间可以存储的消息个数。 注意: 1. 使用此函数前一定要调用函数 os_mbx_init 进行初始化。 2. 此函数只能在中断服务程序中调用。 使用举例 #include rtl.h /* 声明一个支持10个消息的消息邮箱 */ os_mbx_declare(mailbox, 10); static void AppObjCreate(void) { /* 创建消息邮箱 */ os_mbx_init(mailbox, sizeof(mailbox)); } void EXTI0_IRQHandler(void) { if (isr_mbx_check(mailbox) != 0) { isr_mbx_send(mailbox, msg); } } 在中断服务程序中仅发一个消息 使用举例 在中断服务程序中发多个消息 #include rtl.h os_mbx_declare(mailbox, 10); /* 声明一个支持10个消息的消息邮箱 */ static void AppObjCreate(void) { os_mbx_init(mailbox, sizeof(mailbox)); /* 创建消息邮箱 */ } void EXTI0_IRQHandler(void) { int i, free; free = isr_mbx_check(mailbox1); for (i = 0; i 16; i++){ if (free 0) { free--; isr_mbx_send(mailbox1, msg); } } } 函数 isr_mbx_send void isr_mbx_send( OS_ID mailbox, /*消息邮箱的ID标识*/ void* message_ptr); /* 消息指针,即数据的地址*/ 函数描述: 用于向消息邮箱存放数据指针,或者说数据地址。如果消息邮箱已经满了,再次调用此函数会造成消息邮箱溢出。所以调用此函数前,建议调用函数 isr_mbx_check 进行检测,检测是否还有空间可用。 第 1 个参数填写消息邮箱的 ID 标识,即函数 os_mbx_declare 第一个参数。 第 2 个参数填写消息指针,即数据的地址。 注意以下问题: 使用此函数前一定要调用函数 os_mbx_init 进行初始化。 在中断服务程序中仅发一个消息举例 #include rtl.h os_mbx_declare(mailbox, 10); /* 声明一个支持10个消息的消息邮箱 */ static void AppObjCreate(void) { os_mbx_init(mailbox, sizeof(mailbox)); /* 创建消息邮箱 */ } void EXTI0_IRQHandler(void) { if (isr_mbx_check(mailbox) != 0) { isr_mbx_send(mailbox, msg); } } 在中断服务程序中发多个消息举例 #include
您可能关注的文档
- 第10课 蒙古族的兴起与元的建立.ppt
- 第10课 雨过天晴,我来画云、雨和太阳.ppt
- 第10课 美国独立战争岳麓版.pptx
- 第10课《谈中国诗》(十三中曹乐平).ppt
- 第10课 视导——蒙古族的兴起与元朝的建立.ppt
- 第10课第2站 寻找自信.ppt
- 第10课_梨园春秋课件.ppt
- 第10课-宋元时期的都市生活与文化.ppt
- 第10课《北京》课件.ppt
- 第10课梨园春秋1.ppt
- 2025年全国演出经纪人员资格认定考试试卷带答案(研优卷).docx
- 2025年全国演出经纪人员资格认定考试试卷完整版.docx
- 2025年全国演出经纪人员资格认定考试试题库及完整答案.docx
- 2025年全国演出经纪人员资格认定考试试卷完美版.docx
- 2025年全国演出经纪人员资格认定考试试卷含答案(实用).docx
- 2025年全国演出经纪人员资格认定考试试卷及答案(各地真题).docx
- 2025年下半年内江市部分事业单位公开考试招聘工作人员(240人)备考题库附答案.docx
- 2025年全国演出经纪人员资格认定考试试卷及答案1套.docx
- 2025年下半年四川成都市郫都区面向社会引进公共类事业单位人员2人备考题库最新.docx
- 2025年下半年内江市部分事业单位公开考试招聘工作人员(240人)备考题库附答案.docx
最近下载
- 塔吊工作安全培训内容课件.pptx VIP
- 2024-2025学年天津市部分区七年级(上)期末历史试卷(含答案).docx
- 天津大学物理化学教学课件ppt合集.pptx
- 土豆种植时间和方法.doc VIP
- SMAR公司DT301密度计说明书.pdf
- 2、高鸿业宏观经济学教案.doc VIP
- 高杆灯取电照明装置.pdf VIP
- Unit 2 Expressing yourself Part B let's learn 教案 三年级英语下册 人教PEP版.docx VIP
- 【通用】马年猜猜乐PPT(猜成语)打印版【课件】.pptx
- PDCA循环-提高手术间无菌物品定位放置规范率PPT优秀案例.pptx
原创力文档

文档评论(0)