计算机应用 | 古代文学 | 市场营销 | 生命科学 | 交通物流 | 财务管理 | 历史学 | 毕业 | 哲学 | 政治 | 财税 | 经济 | 金融 | 审计 | 法学 | 护理学 | 国际经济与贸易
计算机软件 | 新闻传播 | 电子商务 | 土木工程 | 临床医学 | 旅游管理 | 建筑学 | 文学 | 化学 | 数学 | 物理 | 地理 | 理工 | 生命 | 文化 | 企业管理 | 电子信息工程
计算机网络 | 语言文学 | 信息安全 | 工程力学 | 工商管理 | 经济管理 | 计算机 | 机电 | 材料 | 医学 | 药学 | 会计 | 硕士 | 法律 | MBA
现当代文学 | 英美文学 | 通讯工程 | 网络工程 | 行政管理 | 公共管理 | 自动化 | 艺术 | 音乐 | 舞蹈 | 美术 | 本科 | 教育 | 英语 |

μC/OS-II在凌阳单片机SPCE061A上的移植(2)

2015-02-04 01:08
导读:3.1 任务切换 凌阳SPACE061A单片机有R1~R5 五个通用寄存器,还有1个SR(CPU状态寄存器),再加上PC,总共有7个CPU内部寄存器在任务切换时需要保存。μCOS-II系

3.1 任务切换

  凌阳SPACE061A单片机有R1~R5 五个通用寄存器,还有1个SR(CPU状态寄存器),再加上PC,总共有7个CPU内部寄存器在任务切换时需要保存。μCOS-II系统调用OSCtxSw( )来实现任务的切换,下面给出其部分代码:

_OSCtxSw:

PUSHALL // 将所有寄存器压栈

OSIntCtxSw_in:

// 求出系统堆栈的长度 ,并将其存入R2

R1=SP

R2=OSStkStart

R1 =1

R2=R2-R1

R1=[_OSTCBCμγ]// R1≤OSTCBStkPtr, R1 为任

//务堆栈的头指针

R1=[R1] // 首先将系统堆栈长度保存在任

//务堆栈中

[R1]=R2

R3=OSStkStart // 得到堆栈的起始地址

// 保存系统堆栈到任务堆栈

save_stack:

R3-=1

R1 =1

R4=[R3]

[R1]=R4

R2-=1

上一篇:综合物流中心探要 下一篇:没有了