- 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
ucosii中的中断
UC/OS-II中断相关的问题要弄清楚以下函数的意义:OSTimeTick()在OS_CORE.C中,为时钟管理函数。OSTickISR( )在OS_CPU_A.S中以汇编的形式编写。任何计算机系统都应该有一系统时钟,UCOS系统的系统时钟是通过硬件定时器产生中断来实现的,这个中断会产生一个时钟中断服务程序,时钟中断服务程序也叫做节拍服务。各个任务运行都需要一个周期性的信号指示,即每一个任务允许运行的时间片是多少,必须规定好。这个时间片就是系统时钟节拍UCOS系统响应中断的过程:系统正在运行任务,此时有中断发生,且系统收到了中断请求(系统如何收到中断请求,中断以何种方式告知操作系统?)。如果处理器处于中断允许状态,系统就中止当前任务的运行,而按照中断向量去执行相应的中断服务程序;中断服务自程序结束前,会进行一次任务调度。这样中断结束后,系统将会根据情况返回到被中止的任务继续运行,或者转到另外一个具有更高优先级的就绪任务上运行。全局变量OSIntNesting有两个用途:第一是用来记录中断嵌套的层数,中断嵌套也就是说当第一个中断发生而没有结束的时候,又发生了第二个更重要的中断,依次类推,此时OSIntNesting就用来表示嵌套的层数,也就是有多少个中断在发生或者等待处理,也就是说每当有中断发生时,就将OSIntNesting加1,有中断结束的时候,就将OSIntNesting减1;第二是作为调度器是否可进行调度的标志,以保证调度器不会在中断服务程序中进行任务调度,也就是当OSIntNesting大于0的时候,将调度器加锁,OSIntNesting等于0的时候,调度器解锁。(这样理解调度器的加锁和解锁,是否正确?中断服务自程序结束前,会进行一次任务调度。这个时候调度器不是锁上的吗?如何调度呢?)UCOS用两个函数OSIntEnter (void)和OSIntExit (void)来处理变量SIntNesting。void OSIntEnter (void){if (OSRunning == TRUE) {if (OSIntNesting 255u) {OSIntNesting++; /* Increment ISR nesting level */}}} ;这个函数的作用就是把SIntNesting加一,来记录嵌套层数,并为调度器加锁。它经常运行在中断服务程序保护用户被中断任务的端点数据之后,运行用户中断服务代码之前,通常叫做进入中断服务函数。消息量函数分析OS_EVENT *OSSemCreate (INT16U cnt)消息量函数分析OS_EVENT *OSSemCreate (INT16U cnt) OS_EVENT *OSSemCreate (INT16U cnt) ;该函数返回的数据类型为指针,指针指向的数据类型为OS_EVENT(事件的数据类型为结构体)。也就是函数返回一个地址,地址里存的是新创建的结构体类型所占据的内存的首地址。 OS_EVENT *pevent;pevent = OSEventFreeList; if (OSEventFreeList != (OS_EVENT *)0) { /* See if pool of free ECB pool was empty */OSEventFreeList = (OS_EVENT *)OSEventFreeList-OSEventPtr;} ;首先创建一个指向OS_EVENT结构体类型的指针pevent;系统初始化时会创建一个空事件控制块链表,而创建的空事件控制块的数目由常数OSEventMax来决定。OSEventFreeList就指向这个空事件控制块链表的第一个,所以上面的程序里把OSEventFreeList赋给了pevent,也就是让pevent指向第一个空事件控制块,然后又让OSEventFreeList指向了空事件控制链表中的第二个。也就是从空事件链表中摘出了第一个给事件使用。if (pevent != (OS_EVENT *)0) { /* Get an event control block */pevent-OSEventType = OS_EVENT_TYPE_SEM;pevent-OSEventCnt = cnt; /* Set semaphore value */pevent-OSEventPtr = (void *)0; /* Unlink from ECB free list */#if OS_EVENT_NAME_SIZE 1pevent-OSEventName[0] = ?; /* Unknown name */pevent-OSEventName[1] = OS_ASCII_NUL;#endif;以上就是对新创建的空任务控制
您可能关注的文档
最近下载
- 20241123家居制造业集团战略规划和运营管控规划方案.pptx VIP
- 2025广东广州市越秀区大东街道办事处经济发展办招聘辅助人员(统计员岗)1人笔试备考题库及答案解析.docx VIP
- 2025广东广州市越秀区大东街道办事处经济发展办招聘辅助人员(统计员岗)1人笔试模拟试题及答案解析.docx VIP
- 警犬技术岗位面试问题.docx VIP
- 2025广东广州市越秀区大东街道办事处经济发展办招聘辅助人员(统计员岗)1人考试备考题库及答案解析.docx VIP
- 2025广东广州市越秀区大东街道办事处经济发展办招聘辅助人员(统计员岗)1人考试练习题库及答案解析.docx VIP
- 绿色建筑及节能材料技术.ppt VIP
- 2025广东广州市越秀区大东街道办事处经济发展办招聘辅助人员(统计员岗)1人考试备考试题及答案解析.docx VIP
- 版小学二年级道德与法治上册第11课《大家排好队》名师课堂实录(第一.pdf VIP
- 2025广东广州市越秀区大东街道办事处经济发展办招聘辅助人员(统计员岗)1人考试练习试题及答案解析.docx VIP
文档评论(0)