单片机的可编程逻辑控制设计.docVIP

  1. 1、有哪些信誉好的足球投注网站(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
  2. 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  3. 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
  4. 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
  5. 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们
  6. 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
  7. 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
单片机的可编程逻辑控制设计

1、 需求分析 2 1.1项目概述 2 1.2本设计的需求与意义 3 1.3本设计的前景和特色 4 2本实训的概要设计 5 2.1硬件电路 5 2.2软件的使用与程序的编写 7 2.2.1上位机对梯形图的录入 7 2.2.2通信模块程序的编写 8 2.2.3下位机梯形图解释器程序的编写 12 2.2.4整体系统框架的搭建,以及LCD显示与按键程序的编写 16 3、详细设计 17 3.1程序完成对uC/OS-II操作系统的移植 18 3.2.1OS_CPU.H的编写 19 3.2.2OS_CPU_C.C的编写 19 3.2.3OS_CPU_A.ASM 20 3.2在系统中创建各模块并在主函数中添加各摸块任务。 21 3.3在系统中编写key.c和display.c文件程序 22 4、调试过程 28 5、实训总结及感想 30 5.1本次实训体会: 30 5.2 实训总结 31 2°、LCD显示与按键程序的编写 为了将单片机的运行状态表示出来,在系统中添加了key.c和display.c文件,通过调试板上的液晶屏及添加相应的驱动程序,当GPIOF的按键被按下时,在屏上对应的显示出相应的状态,分为三种:运行态,停止态和故障态。使设备的运行态一目了然,同时也完善了工程项目的品质。 3、详细设计 作者在实训中承担完成系统框架的搭建,并移植uC/OS-II操作系统,以及完成对按键和显示两个模块程序的编写。 μC/OS实时嵌入式操作系统的结构 应用层各任务调用关系及参数传递 3.1程序完成对uC/OS-II操作系统的移植 uC/OS-II的代码大概分为3类,这3类分别为与处理器相关代码、uC/OS-II的配置代码和与处理器无关的代码。根据不同的处理器,我们需要修改的代码文件为OS_CPU.H 、OS_CPU_A.ASM 和OS_CPU_C.C,而在应用程序中使用uC/OS-II时,需要用户提供的是应用软件和uC/OS-II的配置部分。 3.2.1OS_CPU.H的编写 OS_CPU.H包括了用# define 语句定义的、与处理器相关的常数、宏以及类型,栈增长方向定义,关中断和开中断定义,系统软中断的定义等等。。系统内核与移植过程是无关的,用户只需要在应用系统开发过程中,通过配置OCS_CFG.H文件来对内核进行裁剪,只使用应用系统需要的功能,使系统最小最优化。 例如STM32的堆栈是从上往下递减的,所以要将常数变量OS_STK_GROWTH定义为1,即 #define OS_STK_GROWTH 1 3.2.2OS_CPU_C.C的编写 UC/OS中共定义了6个函数在该文件中.但是最重要的是OSTaskStkInit().其他都是对系统内核的扩展时用的. OSTaskStkInit()是在用户建立任务时系统内部自己调用的,对用户任务的堆栈进行初始化.使建立好的进入就绪态任务的堆栈与系统发生中断并且将环境变量保存完毕时的栈结构一致.这样就可以用中断返回指令使就绪的任务运行起来. uC/OS-II的移植范例要求用户编写10个简单的C函数: OSTaskStkInit(); OSTaskCreateHook(); OSTaskDelHook(); OSTaskSwHook(); OSTaskIdleHook(); OSTaskStatHook(); OSTaskTickHook(); OSInitHookBegin(); OSInitHookEnd(); OSTCBInitHook(); 3.2.3OS_CPU_A.ASM 这部分需要对处理器的寄存器进行操作。包括四个子函数:OSStartHighRdy(),OSCtxSw(),OSIntCtxSw(),OSTickISR().OSStartHighRdy()由多任务系统启动函数OSStart()中调用.完成的功能是:设置系统运行标志位OSRunning?=?TRUE;将就绪表中最高优先级任务的栈指针Load到SP中,并强制中断返回.使就绪的最高优先级任务调整至运行态一样,使得整个系统得以运转. OSCtxSw()在任务级任务切换函数中调用的.任务级切换是通过SWI或者TRAP人为制造的中断来实现的.ISR的向量地址必须指向OSCtxSw().这一中断完成的功能:保存任务的环境变量(主要是寄存器的值,通过入栈来实现),将当前SP存入任务TCB中,载入就绪最高优先级任务的SP,恢复就绪最高优先级任务的环境变量,中断返回.这样就完成了任务级的切换. OSIntCtxSw()在退出中断服务函数OSIntExit()中调用,实现中断级任务切换.由于是在中断里调用,所以处理器的寄存器入栈工作已经做完,就不用作这部分工作了.具体完成的任务:调整栈指针(因为调用函数会使任务栈结构与

文档评论(0)

panguoxiang + 关注
实名认证
文档贡献者

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

1亿VIP精品文档

相关文档