基于RTOS_μCOS-II和GSM的野外水位监测系统_毕业设计(论文).doc

基于RTOS_μCOS-II和GSM的野外水位监测系统_毕业设计(论文).doc

  1. 1、本文档共47页,可阅读全部内容。
  2. 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
华东交通大学 电子测量大作业 题 目 基于RTOS μCOS-II和GSM的野外水位监测系统 课 程 名 称 电子测量技术 院 部 名 称 信息工程学院 专 业 通信工程 目录 TOC \o 1-3 \h \u 等c51关键字的重定义 OS_CFG.H: OS_TICKS_PER_SEC、 OS_FLAGS注意可能需要修改。 与处理器相关的文件: OS_CPU.H: 数据类型、关中断方法、任务堆栈方向、任务切换的宏定义都需要修改。 OS_CPU_A.ASM: OSTickISR()、OSStartHighRdy()、OSCtxSw()、OSIntCtxSw()这几个函数的编写,是整个移植的关键。 OS_CPU_C.C:OSTaskStkInit()函数的编写。 C51的堆栈结构; 这是整个移植过程中的重中之重,所以特别详细介绍。 系统堆栈; c51中,系统堆栈的栈底地址是?STACK,栈顶指针就是SP拉,栈的生长方向是向上的,栈空间分配在51的内部RAM(idata)中。?STACK分配在所有内部RAM数据段的最后面,所以系统堆栈的范围是从?STACK到内部RAM的最高位(0x80或者0xFF)。 数据堆栈; c51中,由于我们使用OS,采用的LARGE编译模式,所以数据堆栈的指针是?C_XBP, 栈的生长方向是向下的,栈空间分配在51的外部RAM(xdata)中。 C51中断中堆栈的保护; 研究中断中堆栈的保护的意义在于,因为uCOS中的任务切换,本身就是模拟一次中断的发 生:保护Task1的CPU寄存器,SP切换到Task2的堆栈,弹出Task2的CPU寄存器。用C51写中断函数的时候,编译器会自动保护CPU的寄存器,所以中断返回时任务调度OSIntCtxSw(),就不用重新保护寄存器。 C51中断中调用函数可以分为四种情况(中断函数本身不设为reentrant): 没有函数调用; 调用非reentrant函数,函数中没有嵌套调用其他函数; 调用非reentrant函数,函数中嵌套调用其他函数; 调用reentrant函数。 t0_isr: PUSH ACC PUSH B PUSH DPH PUSH DPL PUSH PSW MOV PSW,#00H PUSH AR0 PUSH AR1 PUSH AR2 PUSH AR3 PUSH AR4 PUSH AR5 PUSH AR6 PUSH AR7 用户代码 POP AR7 POP AR6 POP AR5 POP AR4 POP AR3 POP AR2 POP AR1 POP AR0 POP PSW POP DPL POP DPH POP B POP ACC RETI 因为uCOS中所有的函数都必须是重入函数,因此我们只需要研究第四种情况下的堆栈保护。 uCOS C51任务切换时的堆栈操作 每个任务都有一个独立的数据堆栈,系统堆栈是公用空间。 保护Task1的CPU寄存器: 首先将CPU寄存器按上例压进Task1系统堆栈,再将整个Task1系统 堆栈压进Task1数据堆栈 SP切换:?C_XBP = Task2 的数据堆栈栈顶地址。 弹出Task2的CPU寄存器:从Task2的数据堆栈重新恢复整个系统堆栈,然后再从Task2系统堆栈中恢复CPU寄存器值。 实现的方法有很多种,只要遵循uCOS任务切换的原理就可以了。 3 程序设计 程序的具体设计代码由于篇幅有限,在此就不再多赘诉。 总结与展望 通过本次电子测量大作业,我不仅更加熟悉了基于单片机的系统的设计,而且还学会了GSM网络通信模块MAX55的使用。本次大作业,也是我第一次把μCOS II操作系统应用到自己的项目中去。在本次系统的设计的过程中,遇到了很多的问题。比如,由于是第一次接触MAX55芯片,所以对它的指令都不了解,在设计的过程中废了很大的劲查找资料、收集资料、整理资料,最后终于能熟练操作这块芯片的一些常用指令了。由于μCOS II操作系统也是第一次移植,所以在移植的过程中,也遇到了很多问题,像与硬件平台相关的代码的修改、可重入函数的构建等等……不过,最终在老师和同学的帮助下,都一一解决了。 经过这次电子测量的大作业后,我对基于单片机的系统设计产生了浓厚的兴趣,同时,对μCOS II操作系统的理解更加深刻。 谢辞 经过一个多星期的查资料、收集资料、写程序、写大作业报告,今天终于可以顺利完成了本次电子测量大作业了。 本次大作业得以完成,要感谢的人实在太多了。首先要感谢的是黄德昌老师,黄老师渊博的知识,严谨的治学态度,精益求精的工作作风,诲人不倦的高尚师

文档评论(0)

weidameili + 关注
实名认证
内容提供者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档