下载此文档

UCOS+III+STM32上下文切换过程.doc


文档分类:IT计算机 | 页数:约5页 举报非法文档有奖
1/5
下载提示
  • 1.该资料是网友上传的,本站提供全文预览,预览什么样,下载就什么样。
  • 2.下载该文档所得收入归上传者、原创者。
  • 3.下载的文档,不会出现我们的网址水印。
1/5 下载此文档
文档列表 文档介绍
UCOSIIISTM32上下文切换过程UCOSIIIstm32上下文切换详细过程UCOSIII中上下文切换是通过调用OSCtxSw()函数实现,OSCtxSw()用汇编语言编写:OSCtxSwLDRR0,=NVIC_INT_CTRL获取中断控制寄存器地址LDRR1,=NVIC_PENDSVSET获取PendSV中断向量STRR1,[R0]触发PendSV中断BXLR函数返回OSCtxSW实际上只是触发了PendSV中断还是没有看到任务究竟是如何调度,接下来程序会执行PendSV中断函数,看看中断函数里边做了哪些工作实现了任务调度的。OS_CPU_PendSVHandlerCPSIDI;PreventinterruptionduringcontextswitchMRSR0,PSP;PSPisprocessstackpointerCBZR0,OS_CPU_PendSVHandler_nosave;SkipregistersavethefirsttimeTSTLR,#0x10ITEQVSTMDBEQR0!,{S16-S31}MOVR3,LRSTMDBR0!,{R3-R11}LDRR1,=OSTCBCurPtr;OSTCBCurPtr->OSTCBStkPtr=SP;LDRR1,[R1]STRR0,[R1];R0isSPofprocessbeingswitchedout;Atthispoint,entirecontextofprocesshasbeensavedOS_CPU_PendSVHandler_nosavePUSH{R14};SaveLRexc_returnvalueLDRR0,=OSTaskSwHook;OSTaskSwHook();BLXR0POP{R14}LDRR0,=OSPrioCur;OSPrioCur=OSPrioHighRdy;LDRR1,=OSPrioHighRdyLDRBR2,[R1]STRBR2,[R0]LDRR0,=OSTCBCurPtr;OSTCBCurPtr=OSTCBHighRdyPtr;LDRR1,=OSTCBHighRdyPtrLDRR2,[R1]STRR2,[R0]LDRR0,[R2];R0isnewprocessSPShenLongbaolookintheeyes,,pickedupabrickreservoirincottonvest,walkedintoasmallalleycorner,,leave;SP=OSTCBHighRdyPtr->StkPtr;LDMIAR0!,{R3-R11}MOVLR,R3TSTLR,#0x10ITEQVLDMIAEQR0!,{S16-S31}MSRPSP,R0;LoadPSPwithnewprocessSPCPSIEIBXLR;Exceptionreturnwillre

UCOS+III+STM32上下文切换过程 来自淘豆网www.taodocs.com转载请标明出处.

非法内容举报中心
文档信息
  • 页数5
  • 收藏数0 收藏
  • 顶次数0
  • 上传人iris028
  • 文件大小20 KB
  • 时间2019-12-06