ucos ii在lpc2200单片机移植说明_第1页
ucos ii在lpc2200单片机移植说明_第2页
ucos ii在lpc2200单片机移植说明_第3页
ucos ii在lpc2200单片机移植说明_第4页
ucos ii在lpc2200单片机移植说明_第5页
已阅读5页,还剩8页未读 继续免费阅读

付费下载

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

关中 开中 向量中断函数的编 附 参考资 uC/OS 1图1ARMOS_STK*OSTaskStkInit(void(*task)(void*pd),voidOS_STK*ptos,INT16U{OS_STK

= =ptos;/*获取堆栈指 *stk=(OS_STK) /*pc*--stk=(OS_STK) /*lr============ /*r0,第一个参数使用R0传 *--stk=(USER_USING_MODE|0x00);/*spsr,允许IRQ,FIQ中 return}int32os_enter_flag=中断,后面的代码处理可能有些罗唆,先跑起来再说,后面再优化。void{if(_OS_ENTER_CRITICAL()>{os_enter_flag=}{os_enter_flag=}} SP!,{R1, R0, R1, R1,#0BNE R0,R0,#(NoInt) CPSR_c,R0 R0, SP!,{R1,PCvoid{if(0=={}} SP!,{R0,LR} R0,CPSR R0,R0,#(NoInt) CPSR_c,R0 SP!,{R0,PC}1=0=#define void{=OSTCBHighRdy->OSTCBStkPtr;OSRunnig=TRUE;} CPSR_c,#(NoInt| R5, R5, ; R6,=OSTCBHighRdy R6, ;获取新任务堆栈指针OSTCBHighRdy->OSTCBStkPtr,存放在R4中 R4,[R6] SPR4 ;16寄存器CPSRR0- LR,[SP,#- CPSR_c,#(NoInt| SP,LDMFDSP!, SPSR_cxsf,LDMFDSP!,{R0-R12,LR,PCswi(0x00)voidOS_TASK_SW(void);swi(0x01)void_OSStartHighRdy(void); SP STMFDSP!,{R0-R3,R12, R1,SP ;R1指向参数位置,因为SWI软中断允许 R3, R3 中断前是否是ThumbLDRNEHR0[LR,#- ER0,R0,R0,[LR,#-否取得arm状态SWIR0,R0,R0,;r0=SWI号,R1指向参数位LDRLOPC,;SWI0x01为第一次任务切换LDREQPC,= LDMFDSP!,{R0-R3,R12,voidOSIntExit{if((--OSIntNesting|OSLockNesting)=={/*RescheduleonlyifallISRscompleted¬locked*/ =OSUnMapTbl[OSRdyGrp];OSPrioHighRdy=(INT8U)((OSIntExitY<<3)+if(OSPrioHighRdy!=OSPrioCur){/*Nocontextswitchifcurrenttaskishighestready*/OSTCBHighRdy=OSTCBPrioTbl[OSPrioHighRdy];/*Keeptrackofthenumberofcontextswitches /*Performinterruptlevelcontext }}

?…?目前堆栈指针的地址为SP’,这个时候如果立即进行任务切换,须知道上次堆栈SP的位置,由于OSIntExit()用C语言编写,无法知道编译器的编译结果,那么也就为了简单处理, R2[SP R12,[SP,#16] R0,CPSR CPSR_c,#(NoInt|SYS32Mode) R1 STMFDSP!{R1- STMFDSP!{R4- CPSR_c,LDMFDSP!{R4- CPSR_c,#(NoInt|SYS32Mode)STMFDSP!{R4- R1 R2,;STMFDSP!,{R2,R3} STMFDSP!,{R3};保存CPSR R1, R1, SP, R4,=OSPrioCur R6,[R5] R6, R6,[R6] R4, R6,

;OSTCBCur<=;获取新任务堆栈指针OSTCBHighRdy->OSTCBStkPtr,存放在R4中 R4,[R6] LR,[SP,#- CPSR_c,#(NoInt| SP,LDMFDSP!,{R4,R5} R4,[R3] SPSR_cxsf,LDMFDSP!,{R0-R12,LR,PC向量中断函数的编$IRQ_LabelHANDLER;; LR,LR,#4 ;计算返回地址STMFDSP!,{R0-R3,R12,LR} R3,SPSR ;保存状态STMFDSP!, R2,=OSIntNesting R1,[R2] R1,R1, R1,MSRCPSR_c,#(0x1f);processitasnarmUserGuidSTMFDSP!,{R0-R3,LR};processitasnarmUserGuid LDMFDSP!,{R0-R3,LR};processitasnarmUserGuidMSRCPSR_c,#(0x92);processitasnarmUserGuid CPSR_c,#(NoInt|R0,R0, R1, R1, R0,R1LDMFDS

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

最新文档

评论

0/150

提交评论