- 1、本文档共57页,可阅读全部内容。
- 2、有哪些信誉好的足球投注网站(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
PAGE \* MERGEFORMAT 57
A 先粗看了一些东西
如果某一个任务的event被置位了,就处理它。
即 taskEvents[idx]!=0
而这个事件是由中断程序之类的设置的或者由某一任务设置的?
只有有events事件发生的任务才去处理。没有事件发生的任务将跳过。
系统信息,可能会发给本任务,这个用函数:
Osal_msg_receve(simpleosal_taskID)就可以得知。
猜想:当系统事件发生时,它会将一个全局变量中的事件数组的某一个与0x8000或运算,到底是哪一个就是我们的任务排列的序号来决定的,例如我们在本例子中有11个任务(后来我自已又加了一个)如果第2个任务要发系统信息运去,就将这个数组置为1。
程序中的这样处理的:
tasksEvents[task_id] |= event_flag; // Stuff the event bit(s)见osal.c中。
这个信息处理函数(带任务ID参数)它就是读这个全局变量,看这个是发给谁的。
所以它先看有没有系统事件是发给本任务的,
uint8 *osal_msg_receive( uint8 task_id )
{
osal_msg_hdr_t *listHdr; ///队列指针,用于有哪些信誉好的足球投注网站的
osal_msg_hdr_t *prevHdr = NULL; ///前一个
osal_msg_hdr_t *foundHdr = NULL; ///发现的指针处
halIntState_t intState; ///这个不知是干什么用的
// Hold off interrupts
HAL_ENTER_CRITICAL_SECTION(intState); ////进入
// Point to the top of the queue
listHdr = osal_qHead; ////指向队列的前部
// Look through the queue for a message that belongs to the asking task
while ( listHdr != NULL ) ////只要队列不空,就一直往下走
{
if ( (listHdr - 1)-dest_id == task_id ) ///事件队列中的目标ID是指向本地ID否?
{
if ( foundHdr == NULL ) ///第一次发现消息是给自已的
{
// Save the first one
foundHdr = listHdr; ////发现一个消息是给自已的
}
else
{
// Second msg found, stop looking 又发现一个 直接退出了
break;
}
}
if ( foundHdr == NULL )
{
prevHdr = listHdr; ///当前这个就是第一个
}
listHdr = OSAL_MSG_NEXT( listHdr ); ///指向下一个
}
// Is there more than one?
if ( listHdr != NULL )
{
// Yes, Signal the task that a message is waiting
osal_set_event( task_id, SYS_EVENT_MSG );
}
else
{
// No more 如果没有消息就告诉任务,现在没有系统消息
osal_clear_event( task_id, SYS_EVENT_MSG );
}
// Did we find a message?
if ( foundHdr != NULL ) ////将这个消息从中间抽出来让它消失掉,这时就要知道前一个
{
// Take out of the link list
osal_msg_extract( osal_qHead, foundHdr, prevHdr );
}
// Release interrupts
HAL_EXIT_CRITICAL_S
您可能关注的文档
- 检验批划分及检验试验方案教材.doc
- 检验批质量验收规范电子表格教材.doc
- 名师教学风格的发生与发展(甘肃20141221)技术总结.ppt
- 检验三基训练教材.doc
- HPSO求解TSP问题答题.doc
- 名烟名酒店渠道操作模式技术总结.ppt
- Hp-ux安全配置规范答题.doc
- NE死的电气知识答题.doc
- 检验师相关专业知识模拟(二)教材.doc
- NH3-H说明书newGT3112答题.doc
- 《GB/T 32151.42-2024温室气体排放核算与报告要求 第42部分:铜冶炼企业》.pdf
- GB/T 32151.42-2024温室气体排放核算与报告要求 第42部分:铜冶炼企业.pdf
- GB/T 38048.6-2024表面清洁器具 第6部分:家用和类似用途湿式硬地面清洁器具 性能测试方法.pdf
- 中国国家标准 GB/T 38048.6-2024表面清洁器具 第6部分:家用和类似用途湿式硬地面清洁器具 性能测试方法.pdf
- 《GB/T 38048.6-2024表面清洁器具 第6部分:家用和类似用途湿式硬地面清洁器具 性能测试方法》.pdf
- 《GB/T 18238.2-2024网络安全技术 杂凑函数 第2部分:采用分组密码的杂凑函数》.pdf
- GB/T 18238.2-2024网络安全技术 杂凑函数 第2部分:采用分组密码的杂凑函数.pdf
- 《GB/T 17215.686-2024电测量数据交换 DLMS/COSEM组件 第86部分:社区网络高速PLCISO/IEC 12139-1配置》.pdf
- GB/T 13542.4-2024电气绝缘用薄膜 第4部分:聚酯薄膜.pdf
- 《GB/T 13542.4-2024电气绝缘用薄膜 第4部分:聚酯薄膜》.pdf
文档评论(0)