ImageVerifierCode 换一换
格式:PPT , 页数:112 ,大小:7.17MB ,
资源ID:13359474      下载积分:10 金币
快捷注册下载
登录下载
邮箱/手机:
温馨提示:
快捷下载时,用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)。 如填写123,账号就是123,密码也是123。
特别说明:
请自助下载,系统不会自动发送文件的哦; 如果您已付费,想二次下载,请登录后访问:我的下载记录
支付方式: 支付宝    微信支付   
验证码:   换一换

开通VIP
 

温馨提示:由于个人手机设置不同,如果发现不能下载,请复制以下地址【https://www.zixin.com.cn/docdown/13359474.html】到电脑端继续下载(重复下载【60天内】不扣币)。

已注册用户请登录:
账号:
密码:
验证码:   换一换
  忘记密码?
三方登录: 微信登录   QQ登录  

开通VIP折扣优惠下载文档

            查看会员权益                  [ 下载后找不到文档?]

填表反馈(24小时):  下载求助     关注领币    退款申请

开具发票请登录PC端进行申请

   平台协调中心        【在线客服】        免费申请共赢上传

权利声明

1、咨信平台为文档C2C交易模式,即用户上传的文档直接被用户下载,收益归上传人(含作者)所有;本站仅是提供信息存储空间和展示预览,仅对用户上传内容的表现方式做保护处理,对上载内容不做任何修改或编辑。所展示的作品文档包括内容和图片全部来源于网络用户和作者上传投稿,我们不确定上传用户享有完全著作权,根据《信息网络传播权保护条例》,如果侵犯了您的版权、权益或隐私,请联系我们,核实后会尽快下架及时删除,并可随时和客服了解处理情况,尊重保护知识产权我们共同努力。
2、文档的总页数、文档格式和文档大小以系统显示为准(内容中显示的页数不一定正确),网站客服只以系统显示的页数、文件格式、文档大小作为仲裁依据,个别因单元格分列造成显示页码不一将协商解决,平台无法对文档的真实性、完整性、权威性、准确性、专业性及其观点立场做任何保证或承诺,下载前须认真查看,确认无误后再购买,务必慎重购买;若有违法违纪将进行移交司法处理,若涉侵权平台将进行基本处罚并下架。
3、本站所有内容均由用户上传,付费前请自行鉴别,如您付费,意味着您已接受本站规则且自行承担风险,本站不进行额外附加服务,虚拟产品一经售出概不退款(未进行购买下载可退充值款),文档一经付费(服务费)、不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
4、如你看到网页展示的文档有www.zixin.com.cn水印,是因预览和防盗链等技术需要对页面进行转换压缩成图而已,我们并不对上传的文档进行任何编辑或修改,文档下载后都不会有水印标识(原文档上传前个别存留的除外),下载后原文更清晰;试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓;PPT和DOC文档可被视为“模板”,允许上传人保留章节、目录结构的情况下删减部份的内容;PDF文档不管是原文档转换或图片扫描而得,本站不作要求视为允许,下载前可先查看【教您几个在下载文档中可以更好的避免被坑】。
5、本文档所展示的图片、画像、字体、音乐的版权可能需版权方额外授权,请谨慎使用;网站提供的党政主题相关内容(国旗、国徽、党徽--等)目的在于配合国家政策宣传,仅限个人学习分享使用,禁止用于任何广告和商用目的。
6、文档遇到问题,请及时联系平台进行协调解决,联系【微信客服】、【QQ客服】,若有其他问题请点击或扫码反馈【服务填表】;文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“【版权申诉】”,意见反馈和侵权处理邮箱:1219186828@qq.com;也可以拔打客服电话:0574-28810668;投诉电话:18658249818。

注意事项

本文(第三章-uCOS-II程序设计示例.ppt)为本站上传会员【仙人****88】主动上传,咨信网仅是提供信息存储空间和展示预览,仅对用户上传内容的表现方式做保护处理,对上载内容不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知咨信网(发送邮件至1219186828@qq.com、拔打电话4009-655-100或【 微信客服】、【 QQ客服】),核实后会尽快下架及时删除,并可随时和客服了解处理情况,尊重保护知识产权我们共同努力。
温馨提示:如果因为网速或其他原因下载失败请重新下载,重复下载【60天内】不扣币。 服务填表

第三章-uCOS-II程序设计示例.ppt

1、单击此处编辑母版标题样式,单击此处编辑母版文本样式,第二级,第三级,第四级,第五级,*,C/OS-II,程序设计实例,基于,SmartARM2200,平台,2,1,工程模板介绍,万年历,数据采集系统,UART,中间件,I,2,C,中间件,3,4,5,uC,/OS-II,目 录,工程模板简介,1,2,示例实现,工程模板应用,|,C/OS-II,程序设计,目录,工程模板应用,|,C/OS-II,程序设计,摸板结构,头文件组,内核文件组,用户文件组,ARM,文件组,主函数,模板结构,头文件组,:,主要是包含头文件和配置信息,1,ARM,文件组,:,主要是包含操作系统和开发板硬件相关的配置信息,2,3

2、内核文件组,:,主要是包含,UC/OS,操作系统源文件,5,用户文件组,:,主要包含用户需要配置的,.H,文件和除主函数外的,.C,文件,4,主函数,:,即用户编写的,MAIN.C,函数,工程模板应用,|,C/OS-II,程序设计,头文件组,文件名,功能,Config.h,总头文件,摸板要求,INCLUDES.H,总头文件,UC/OS,要求,os_cpu.h,操作系统移植头文件,Target.h,目标头文件,LPC22XX.h,定义处理器相关寄存器,VIC_Control.h,中断向量控制机制头文件,头文件主要包含一些宏定义和文件包含操作这些文件一般是为了提高摸板的通用性和方便系统移植而定义

3、的用户在使用时可以根据自己的系统硬件配置和喜好进行修改在工程摸板中主要包含六个头文件,具体描述如下表所示:,工程模板应用,|,C,/OS-II,程序设计,ARM,文件组,ARM,文件组主要包含配置文件和,iniARM2200,加载和配置文件主要包含六个文件,具体描述如下表所示:,文件名,功能,Os_cpu_a.h,UC/OS,移植硬件配置文件,Os_cpu_c.h,UC/OS,移植软件配置文件,Inchip.scf,分散加载文件,Startup.s,LPC2200,启动代码,VIC_Control.s,中断向量控制机制文件,Target.c,LPC2200,目标板的硬件配置文件,工程模板应用,

4、C,/OS-II,程序设计,用户文件组,用户文件组主要包含,main.h,main.c,和,os_cfg.h,三个文件前两个文件有用户自己编写,os_cfg.h,文件主要是实现操作系统的配置,用户可以根据实际需要进行裁剪具体描述如下表所示:,参数名,功能描述,OS_MAX_EVENTS,最大事件控制块个数,OS_MAX_MEM_PART,系统中内存块最大数目,OS_MAX_QS,消息队列中最大队列块的数目,OS_MAX_TASKS,用户程序中可以使用的最多任务数目,OS_LOWEST_PRIO,系统中要使用的最低任务的优先级,OS_TICKS_PER_SEC,调用时间延时函数的频率,工程模

5、板应用,|,C,/OS-II,程序设计,摸板使用步骤,拷贝工程摸板,使用摸板建立新工程分为四个步骤主要操作如下:,用户将光盘中的“,ARM EXECUTABLE IMAGE FOR UCOS LPC2200“,文件拷贝到,”,.ARMADSV1.2STATIONERY,工程模板应用,|,C,/OS-II,程序设计,摸板使用步骤,将光盘摸板文件放进,Stationary,目录:,打开,ADS,选择,”,新建,”,操作,拷贝工程摸板,在,ADS1.2,的集成开发环境中选择,”,新建,”,操作,用户将光盘中的“,ARM EXECUTABLE IMAGE FOR UCOS LPC2200“,文件拷贝到

6、ARMADSV1.2STATIONERY,工程模板应用,|,C,/OS-II,程序设计,摸板使用步骤,使用摸板建立新工程分为四个步骤主要操作如下:,工程模板应用,|,C,/OS-II,程序设计,摸板使用步骤,在,ADS,集成环境中选择,”,新建,”,操作,:,打开,ADS,选择,”,新建,”,操作,拷贝工程摸板,选择工程摸板建立新工程,在,ADS1.2,的集成开发环境中选择,”,新建,”,操作,用户将光盘中的“,ARM EXECUTABLE IMAGE FOR UCOS LPC2200“,文件拷贝到,”,.ARMADSV1.2STATIONERY,选择工程摸板建立新工程,工程模板应用,

7、C,/OS-II,程序设计,摸板使用步骤,使用摸板建立新工程分为四个步骤主要操作如下:,工程模板应用,|,C,/OS-II,程序设计,摸板使用步骤,选择工程摸板建立新工程,:,按照摸板生成新工程,打开,ADS,选择,”,新建,”,操作,拷贝工程摸板,选择工程摸板建立新工程,在,ADS1.2,的集成开发环境中选择,”,新建,”,操作,用户将光盘中的“,ARM EXECUTABLE IMAGE FOR UCOS LPC2200“,文件拷贝到,”,.ARMADSV1.2STATIONERY,选择工程摸板建立新工程,按照摸板生成一个新工程,工程模板应用,|,C,/OS-II,程序设计,摸板使用步骤

8、使用摸板建立新工程分为四个步骤主要操作如下:,工程模板应用,|,C,/OS-II,程序设计,摸板使用步骤,按照摸板生成新工程,:,工程模板简介,1,2,示例实现,工程模板应用,|,C,/OS-II,程序设计,目录,工程模板应用,|,C,/OS-II,程序设计,硬件连接,摸板应用示例是蜂鸣器控制,硬件连接如下图所示,:,蜂鸣器控制电路,跳线连接,工程模板应用,|,C,/OS-II,程序设计,任务创建,在应用示例中,先按上面的流程建立工程,TEST1.MCP.,再在工程的主函数,MAIN,中建立任务,TASK0,TASK0,任务是初始化硬件,.,接着创立,TASK1,TASK2,TASK3.TA

9、SK1,TASK2,只是将任务挂起延时,.TASK3,任务实现蜂鸣器控制,.,任务之间联系如下图所示,:,工程模板应用,|,C,/OS-II,程序设计,任务创建,MAIN,函数,TASK0,TASK3,TASK1,TASK2,工程模板应用,|,C,/OS-II,程序设计,任务流程,示例中主函数和个任务的控制流程如下:,工程模板应用,|,C,/OS-II,程序设计,ISR,任务示例,中断示例中先按上面流程创建新工程,Timer1_int.mcp,再在主函数中创建任务,TASK0,和,TASKBEEP,TASK0,完成硬件初始化,.TASKBEEP,完成蜂鸣器信号量等待和操作,.,程序流程如下,:

10、下面以示例来说明如何现实,ISR,与任务间同步。假设定时器,1,中断服务程序发送信号量,任务完成了信号量的创建并在接收到信号量后让蜂鸣器响一声。处理流程如下。,工程模板应用,|,C,/OS-II,程序设计,ISR,任务示例,void Timer1_Exception(void),T1IR=0 x01;,VICVectAddr,=0;,OSSemPost,(,sem,);,更新中断优先级,清除中断标志,发送信号量,中断服务程序,ISR,示例代码如下。,工程模板应用,|,C,/OS-II,程序设计,ISR,任务示例,void,TaskBeep,(void *,pdata,),sem,=OSSem

11、Create(0);,OS_ENTER_CRITICAL();,/*,初始化,VIC(,省略,)*/,/*,初始化定时器,1(,省略,)*/,/*,目标板初始化,TargeInit,()(,省略,)*/,OS_EXIT_CRITICAL();,while(1),OSSemPend(sem,0,IO0CLR=BEEP;,OSTimeDly(60);,IO0SET=BEEP;,OSTimeDly(60);,创建信号量,初始化工作,蜂鸣器响,延时,60,个节拍,蜂鸣器,灭,延时,60,个节拍,进入临界段,退出临界段,等待信号量,读者补出相应的代码,蜂鸣器报警任务示例代码如下。,工程模板应用,|,C,

12、/OS-II,程序设计,ISR,任务示例,2,1,工程模板介绍,万年历,数据采集系统,UART,中间件,I,2,C,中间件,3,4,5,uC,/OS-II,目 录,ISR,和任务之间的同步和通信,2,任务间的同步与通信,1,数据采集系统,|,C/OS-II,程序设计,目录,一、任务的同步,在实时操作系统中,任务和任务之间往往需要,协调,运行,这种,协调,关系,在日常生活里也是屡见不鲜的。为了说明这种协调关系,请看下面的演示:,司机,售票员,启动车辆,关 车 门,行 驶,售 票,1,、什么是任务的同步?,停 车,开 车 门,、,启动车辆,踩油门就可以了;但实际上,你必须等车门关上了才可以启动车辆

13、行驶和售票的行动互不干涉、彼此独立,此时不存在协调关系。,、,开车门只要按下开关就可以了;但实际上,你得等司机停车才能开车门,否则就出事故了。,由该演示可知,任务的同步,就是任务的协调运行,你一步、我一步地紧密协作:,任务的同步和通信,|,数据采集系统,任务的同步,一、任务的同步,在实时操作系统中,任务和任务之间往往需要,协调,运行,这种,协调,关系,在日常生活里也是屡见不鲜的。为了说明这种协调关系,请看下面的演示:,任务,A,任务,B,1,、什么是任务的同步?,、任务,B,运行一段时间后,发送信息让,任务,A,启动,,与此同时,,任务,B,挂起,。,、,任务,A,获得允许运行的信息后

14、立即启动;完成操作后,发送信息告知任务,B,,任务,B,可以启动并执行接下来的操作。,在理解了“任务同步”的概念后,再来看看,C/OS-II,实时操作系统所提供的用于实现“任务同步”的通信手段。,任务的同步和通信,|,数据采集系统,任务的同步,C/OS-II,实时操作系统提供了以下通信手段,使某一任务得以向另一任务发送同步信息,从而实现任务同步:,2,、任务同步的通信手段,计数信号量;,事件标志组;,消息邮箱;,消息队列,。,灵活运用这些通信手段,可满足不同的任务同步需求,请看表,1,:,任务的同步和通信,|,数据采集系统,任务的同步,2,、任务同步的通信手段,任务同步的通信手段,应用场合,

15、计数信号量,两个任务的同步,事件标志组,多个任务和一个任务间的同步,消息邮箱,两个任务不但要同步;彼此间还要传输一份数据,消息队列,两个任务间不但要同步;彼此间还要传输大量数据,表,1,不同同步手段的应用场合,由上表可知,任务和任务之间不仅可以发送用于协调步伐的“同步”信息,也可以发送有效的数据,实现真正意义的通信。,任务的同步和通信,|,数据采集系统,任务的同步,在嵌入式系统的运行过程中,任务与任务之间必然伴随着数据通信,这种通信可以采用多种方法来实现,:,二、任务的通信,全局变量;,内存数据块;,消息邮箱;,消息队列,。,灵活运用这些不同的方法,可满足不同的数据通信要求,请看表,2,:,任

16、务的同步和通信,|,数据采集系统,任务的通信,任务同步的通信手段,应用场合,全局变量,无行为同步要求时的少量数据通信。但需注意资源同步,内存数据块,无行为同步要求时的大量数据通信。但需注意资源同步,消息邮箱,有行为同步要求时的少量数据通信,消息队列,有行为同步要求时的大量数据通信,表,2,不同通信手段的应用场合,二、任务的通信,介绍完行为同步和通信的基本知识后,接下来再给出实例,以加深理解。,任务的同步和通信,|,数据采集系统,任务的通信,三、操作示例,1,、示例简介,利用,LPC2000,系列,ARM,相关开发板上已有的资源,可以构筑一个小型的数据采集系统,如下所示:,LPC2000,系列,

17、ARM,相关开发板,串口线,上位机,示例的内容是:,按下开发板上的按键、令,ARM,芯片启动,A/D,采样;采样结束后,再将采样结果通过串口线发送到上位机显示。,任务的同步和通信,|,数据采集系统,操作示例,2,、示例里的任务,在本示例内,划分出了,3,个用户任务,相关信息如表,3,所示。,任务的名称,任务的优先级,按键任务,高,采样任务,中,显示任务,低,表,3,任务信息,接下来,将以动画的形式演示该数据采集系统的运转流程,并在每一个运行阶段加以讲解。,任务的同步和通信,|,数据采集系统,操作示例,2,、示例演示,(1),初始阶段,三个任务的状态:,按键任务,在不停扫描按键,查询是否有键按下

18、采样任务,完成一部分工作后挂起,等待按键任务发出启动信号;,显示任务,挂起,等待采样任务发出启动信号和显示数据。,按键任务,采样任务,显示任务,挂起,挂起,不断扫描,任务的同步和通信,|,数据采集系统,操作示例,2,、示例演示,(2),启动采样,按键任务扫描到有按键按下,发出信号量。,按键任务,采样任务,显示任务,挂起,挂起,扫描到按键,采样任务得到了信号量从而就绪,然后在接下来的任务调度中进入运行状态,开始采样。,开始采样,显示任务仍在等待采样任务发送启动信号和采样结果。,任务的同步和通信,|,数据采集系统,操作示例,2,、示例演示,(3),发送采样结果,按键任务继续扫描按键。,(,此时

19、若扫描到按键,将在下一轮处理,),。,采样任务,显示任务,采样完毕,可以发送采样结果了,于是发送消息到消息邮箱。,显示任务获得了消息进入就绪状态,然后在任务调度下获得运行机会,将收到的采样结果发送到上位机。,按键任务,不断扫描,采样结束,启动显示,开始采样,将采样结果,发送至上位机,任务的同步和通信,|,数据采集系统,操作示例,2,、示例演示,(1),初始阶段,回到了初始阶段,。进行下一轮的数据采集、发送工作。,按键任务,采样任务,显示任务,挂起,挂起,不断扫描,任务的同步和通信,|,数据采集系统,操作示例,ISR,和任务之间的同步和通信,2,任务间的同步与通信,1,任务的同步和通信,|,数据

20、采集系统,目录,ISR,主要被用于响应异步事件,在,ISR,里可触发其它任务的运行,实现,ISR,和任务的同步。,ISR,和任务间的同步关系比较简单,它们之间的关系是,单向,的。任务间的同步就不同了,,可是单向亦可是双向,的。,一,、,ISR,和任务的同步,ISR,关联任务,同步信号发送,任务,同步信号发送,任务,同步信号发送,、可以看出,,ISR,始终是控制者,关联任务只能被控制;,、可以看出,任务之间的同步里,某一任务可以是被控制者也可以是控制者。,任务的同步和通信,|,数据采集系统,ISR,和任务的同步,ISR,和任务间的通信手段包括,信号型,和,数据型,,两种手段的应用场合是不同的,请

21、看表,4,。,二,、,ISR,和任务的通信,通信方式,特 点,信号型,ISR,发送信号量,指示事件已发生,触发关联任务的启动,具体工作由关联任务完成,数据型,ISR,内部还要进行信息采集,然后通过消息邮箱或消息队列,将数据信息发送给关联任务,并启动关联任务来处理后续数据,表,4,信号型通信和数据型通信的对比,为了进一步说明,接下来请看下面的实例演示。,任务的同步和通信,|,数据采集系统,ISR,和任务的通信,三,、实例演示,1,、示例简介,示例的内容是:,示例进行时,蜂鸣器一直在间歇鸣叫,;,用户,按下板上的按键、触发外部中断;外部中断再触发,“,读取,ADC,然后将采样结果发送至上位机,”,

22、的操作。,串口线,上位机,利用,LPC2000,系列,ARM,相关开发板上已有的资源,可以构筑一个小型的数据采集系统,如下所示:,LPC2000,系列,ARM,相关开发板,任务的同步和通信,|,数据采集系统,ISR,和任务的通信,2,、示例里的任务,在本示例内,划分出了,2,个用户任务,相关信息如表,5,所示。,任务的名称,任务的优先级,蜂鸣任务,中,采样和显示任务,高,表,5,任务信息,接下来,将以动画的形式演示该实例的运转流程,并在每一个运行阶段加以讲解。,任务的同步和通信,|,数据采集系统,操作示例,3,、示例演示,这是外部中断未发生时,用户任务执行的情况:,采样和显示,任务,初始化硬件

23、等待信号量,蜂鸣器,任务,、系统初始化,系统初始化时,先运行“采样和显示”任务。,、等待信号量有效,由于此时信号量无效,采样和发送任务挂起,,CPU,控制权交给其它就绪任务。,、蜂鸣器任务启动,此时优先级最高的就绪任务是蜂鸣器任务,于是蜂鸣器任务启动。,蜂鸣器间歇鸣叫,任务的同步和通信,|,数据采集系统,操作示例,3,、示例演示,这是外部中断发生时,用户任务执行的情况:,采样和显示,任务,初始化硬件,等待信号量,蜂鸣器,任务,、发生外部中断,外部中断发生。蜂鸣器任务被中断。,、,ISR,发送信号量,“采样和显示任务”获得了信号量,立即进入就绪状态,由于该任务优先级最高,于是立即运行。,、回复

24、到初始状态,发送完采样结果后,继续等待下一个外部中断,蜂鸣器任务又开始运行。,蜂鸣器间歇鸣叫,发生外部中断,发送采样结果,任务的同步和通信,|,数据采集系统,操作示例,3,、示例演示,这是外部中断发生时,用户任务执行的情况:,采样和显示,任务,初始化硬件,等待信号量,蜂鸣器,任务,、发生外部中断,外部中断发生。蜂鸣器任务被中断。,、,ISR,发送信号量,“采样和显示任务”获得了信号量,立即进入就绪状态,由于该任务优先级最高,于是立即运行。,、回复到初始状态,发送完采样结果后,继续等待下一个外部中断,蜂鸣器任务又开始运行。,蜂鸣器间歇鸣叫,发生外部中断,发送采样结果,任务的同步和通信,|,数据采

25、集系统,操作示例,2,1,工程模板介绍,万年历,数据采集系统,UART,中间件,I,2,C,中间件,3,4,5,uC,/OS-II,目 录,示例简介,1,2,示例的实现,万年历,|,C/OS-II,程序设计,目录,一、示例简介,在这里,通过一个万年历的设计,来说明,C/OS-II,下程序设计的方法:,利用,LPC2000,系列,ARM,相关的,开发板和,EasyARM,串口调试软件,(,自带一个万年历界面,),来实现一个具有以下功能的万年历:,实时显示:不断显示当前的年月日星期、时间信息;,时间设置:可设置万年历的时钟和年月日信息,(,星期信息自动调整,),,完成设置后,可更新显示。,、开始重

26、设年份;,、设置完后,恢复显示。,、,2007,年被重设为,3007,年,此时星期自动完成了调整;,EasyARM,串口调试软件自带的万年历界面,接下来,是一个动画演示。它直接表现了最终的万年历效果,这有助于让读者迅速理解示例须达成的任务。,万年历,|,C/OS-II,程序设计,示例简介,示例简介,1,2,示例的实现,万年历,|,C/OS-II,程序设计,目录,二、示例的实现,1,、功能划分,控 制,显示时间信息,产生时间信息,从功能来划分,可把示例分成,3,个模块,请看下图:,“控 制”,通过操作开发板上的按键,实现:,“实时显示”和“时间设置”功能的切换;,“时间设置”,。,万年历,|,C

27、/OS-II,程序设计,示例的实现,二、示例的实现,1,、功能划分,控 制,显示时间信息,产生时间信息,从功能来划分,可把示例分成,3,个模块,请看下图:,“产生时间信息”,操作开发板上,LPC2000,系列,ARM,芯片自带的,RTC,,即可产生时间信息,用于填充万年历。,万年历,|,C/OS-II,程序设计,示例的实现,二、示例的实现,1,、功能划分,控 制,显示时间信息,产生时间信息,从功能来划分,可把示例分成,3,个模块,请看下图:,“显示时间”,通过板上的,UART,,按照协议将信息发送至,EasyARM,串口调试软件,软件上的万年历即可显示出此时的时间信息。不断发送实时时间信息,则

28、万年历会不断显示。,万年历,|,C/OS-II,程序设计,示例的实现,二、示例的实现,2,、任务设计,根据上面划分出的功能模块实现需求,任务可以划分为:,设置任务;,键盘任务;,显示任务。,周期性地执行,。,完成目标板和,RTC,的初始化操作,之后创建“设置任务”和“显示任务”,随后周期性地查询键盘输入,当有键按下,则进行按键处理。,万年历,|,C/OS-II,程序设计,示例的实现,二、示例的实现,2,、任务设计,根据上面划分出的功能模块实现需求,任务可以划分为:,设置任务;,键盘任务;,显示任务。,周期性地执行。,完成目标板和,RTC,的初始化操作,之后创建“设置任务”和“显示任务”,随后周

29、期性地查询键盘输入,当有键按下,则进行按键处理。,接收到按键消息后才运行,。启动后,根据收到的按键信息设置时间,并闪烁显示待设置位,未收到消息则挂起。,万年历,|,C/OS-II,程序设计,示例的实现,二、示例的实现,2,、任务设计,根据上面划分出的功能模块实现需求,任务可以划分为:,设置任务;,键盘任务;,显示任务。,周期性地执行,。完成目标板和,RTC,的初始化操作,之后创建“设置任务”和“显示任务”,随后周期性地查询键盘输入,当有键按下,则进行按键处理。,接收到按键消息后才运行,。启动后,根据收到的按键信息设置时间,并闪烁显示待设置位,未收到消息则挂起。,每过,1,秒,由,RTC,秒中断

30、触发该任务的运行,。该任务启动后便将当前的,RTC,数据通过,UART,发送至上位机的万年历界面进行实时显示。,万年历,|,C/OS-II,程序设计,示例的实现,键盘任务,3,、任务运行演示,为了说明三个任务的状态转换过程,设计了两个动画演示。演示分为两部分。第一部分,是,按键未按下时,三大任务的状态转换过程,:,初始化目标板和,RTC,;,0%,100%,万年历,|,C/OS-II,程序设计,示例的实现,3,、任务运行演示,为了说明三个任务的状态转换过程,设计了两个动画演示。演示分为两部分。第一部分,,是按键未按下时,三大任务的状态转换过程:,键盘任务,初始化目标板和,RTC,;,创建设置任

31、务和显示任务;,键盘任务,设置任务,显示任务,万年历,|,C/OS-II,程序设计,示例的实现,3,、任务运行演示,为了说明三个任务的状态转换过程,设计了两个动画演示。演示分为两部分。第一部分,,是按键未按下时,三大任务的状态转换过程:,键盘任务,初始化目标板和,RTC,;,创建设置任务和显示任务;,键盘任务,设置任务,显示任务,查询是否有按键输入;,在查询按键输入期间,设置任务和显示任务都可以得到运行机会,完成部分工作,。,、初始化部分变量后,检查是否收到键盘消息。,、等待信号量,挂起。,万年历,|,C/OS-II,程序设计,示例的实现,3,、任务运行演示,为了说明三个任务的状态转换过程,设

32、计了两个动画演示。演示分为两部分。第一部分,,是按键未按下时,三大任务的状态转换过程:,键盘任务,初始化目标板和,RTC,;,创建设置任务和显示任务;,键盘任务,设置任务,显示任务,查询是否有按键输入;,、初始化部分变量后,检查是否收到键盘消息。,、等待信号量,挂起。,发生秒中断,在中断里发送信号量给显示任务,显示任务就绪,开始发送时间信息到上位机,更新万年历的显示。,、发送时间信息。,万年历,|,C/OS-II,程序设计,示例的实现,3,、任务运行演示,按键按下时,任务的转换过程,如下所示:,键盘任务,初始化目标板和,RTC,;,创建设置任务和显示任务;,键盘任务,设置任务,显示任务,查询是

33、否有按键输入;,、初始化部分变量后,检查是否收到键盘消息。,、等待信号量,挂起。,查到有按键输入,发送按键消息。,万年历,|,C/OS-II,程序设计,示例的实现,3,、任务运行演示,按键按下时,任务的转换过程如下,所示:,键盘任务,初始化目标板和,RTC,;,创建设置任务和显示任务;,键盘任务,设置任务,显示任务,查询是否有按键输入;,、初始化部分变量后,检查是否收到键盘消息。,、等待信号量,挂起。,查到有按键输入,发送按键消息。,、根据键盘消息进行处理。,令被设置位闪烁显示;同时,根据消息内的设置信息设定新的时间。之后,在秒中断发生时,更新的时间信息被发送到上位机。,发生秒中断,、发送时间

34、信息。,万年历,|,C/OS-II,程序设计,示例的实现,2,1,工程模板介绍,万年历,数据采集系统,UART,中间件,I,2,C,中间件,3,4,5,uC,/OS-II,目 录,2,简介,1,3,中间件机理,使用导论,UART,中间件,|,C/OS-II,程序设计,目录,一、,UART,中间件简介,嵌入式应用中,,UART,十分常见,大多数,CPU,都集成了,UART,。,LPC2000,系列,ARM UART,中间件是,UART,驱动软件包,用户可用它在,C/OS-II,下轻松、便利地完成,LPC2000,系列,ARM,上的,UART,操作而无须了解,UART,寄存器的细节。,关于,UAR

35、T,中间件带来的操作便利性,请看下面的一个演示,该演示展示了在“使用,UART,中间件”和“不使用,UART,中间件”这两种情况下,用户的开发流程,借此展示使用,UART,中间件编程带来的好处。,开始播放,请点击,UART,中间件,|,C/OS-II,程序设计,UART,中间件简介,开始,开始,翻阅用户手册,阅读,UART,的寄存器结构,确定本次操作,所需涉及的寄存器,阅读涉及寄存,器的位功能说明,写程序,试探程序,思路是否可靠、正确,反复调试、摸索,获得初始版本,完成操作,(,以后可能还会出问题,),结束,浏览,PPT,,迅速理,解概况和基本知识,阅读中间件的,API,说,明,了解,API,

36、的用法,用中间件,API,编程,直接调试程序,,无须考虑底层细节,结束,自己编写,UART,驱动,直接用中间件编程,UART,中间件,|,C/OS-II,程序设计,UART,中间件简介,小结:,由上面的演示可以看出,使用,UART,中间件,有助于大大加快开发速度,提高编程效率,同时令用户程序更稳定可靠、更容易调试,。,UART,中间件,|,C/OS-II,程序设计,UART,中间件简介,UART,中间件结构,:,按照,API,功能的不同,,UART,中间件的结构可显示如下:,队列操作,UART,读写,UART,配置,UART,中断入口,UART,中间件,功能类型,函数名称,函数功能,UART,

37、配置相关,uartInit,UART,初始化,uartSetMode,/,uartGetState,配置,UART,的参数,/,读取,UART,当前的配置信息,UART,中间件,|,C/OS-II,程序设计,UART,中间件简介,队列操作,UART,读写,UART,中断入口,UART,中间件结构:,按照,API,功能的不同,,UART,中间件的结构可显示如下:,UART,配置,UART,中间件,功能类型,函数名称,函数功能,UART,队列操作相关,uartFifoStatus,获取,UART,的队列状态,uartFifoFlush,清空,UART,的发送或接收队列,UART,中间件,|,C/O

38、S-II,程序设计,UART,中间件简介,队列操作,UART,读写,UART,中断入口,UART,中间件结构:,按照,API,功能的不同,,UART,中间件的结构可显示如下:,UART,配置,UART,中间件,功能类型,函数名称,函数功能,UART,读写操作相关,uartRead,从串口设备读数据,uartWrite,/,uartDirectWrite,向串口设备写数据,/,不经软件缓冲区而直接向串口设备写数据,UART,中间件,|,C/OS-II,程序设计,UART,中间件简介,队列操作,UART,读写,UART,中断入口,UART,中间件结构,:,按照,API,功能的不同,,UART,中间

39、件的结构可显示如下:,UART,设置,UART,中间件,功能类型,函数名称,函数功能,UART,中断入口函数,uart0Isr,/,uart1Isr,/,uart2Isr,/,uart3Isr,各个,UART,的中断入口,UART,中间件,|,C/OS-II,程序设计,UART,中间件简介,小结:,UART,中间件有四大功能模块,由一共,12,个,API,组成,。,详细的,API,信息,请用户阅读随机赠送的参考书及光盘。,UART,中间件,|,C/OS-II,程序设计,UART,中间件简介,2,简介,1,3,中间件机理,使用导论,UART,中间件,|,C/OS-II,程序设计,目录,二、使用导

40、论,在使用,UART,中间件进行编程前,有必要知道一些预备知识。本小节即对这些预备知识进行介绍:,装载,UART,中间件须知,UART,中间件的重要使用细节几则,UART,中间件的一般应用流程,UART,中间件的文件组成;,UART,中间件所需的其它软件包;,队列在,UART,中间件里的应用;,UART,中间件,API,的参数输入;,使用,UART,中间件配置,UART,中断;,UART,中间件的应用流程。,UART,中间件,|,C/OS-II,程序设计,使用导论,UART,中间件的文件组成,UART,中间件是由,2,个文件组成,请看下表:,驱动文件,说明,uart.c,该文件包含所有的,UA

41、RT API,源码,用户请不要修改此文件,uart.h,UART,驱动头文件,用户在此文件里完成对,软件,/,硬件缓冲区的配置,和,中断服务程序的撰写,在使用,UART,中间件时,须将这两个文件加入工程,请看下图:,UART,中间件,|,C/OS-II,程序设计,使用导论,UART,中间件所需的其它软件包,UART,中间件要发挥作用,还需要其它软件包的支持,即队列和字符串处理软件包,QueueString,,请看左下的图示:,为什么需要这个软件包呢?,UART,中间件用到了队列来收发数据,所以需要队列软件来支持;,UART,中间件的,API,参数设置是通过分析用户输入的字符串来实现的,所以需要

42、字符串处理软件。,UART,中间件,|,C/OS-II,程序设计,使用导论,UART,中间件,API,的参数输入,在使用,UART,中间件所包含的部分,API,时,用户需以字符串形式输入函数的入口参数,参数都包含在字符串里。请看下面的示例:,UART0,初始化,(,波特率,9600bps,、,8,位数据位、,1,位停止位、无校验,无硬件流,),char,cUartArg,=“,BaudRate,=9600,DataBits,=8,StopBits,=1 Parity=0,RtsControl,=0”;,/*,定义参数字符串 *,/,/*,将参数字符串填入,API */,uartInit,(UA

43、RT0,cUartArg,NULL);,、用户根据“,=”,号前的,关键字,,在“,=”,号后填写对应的,数值,;,char,cUartArg,=“,BaudRate,=9600,DataBits,=8,StopBits,=1,Parity,=0,RtsControl,=0”;,char,cUartArg,=“,BaudRate,=,9600,DataBits,=,8,StopBits,=,1,Parity,=,0,RtsControl,=,0,”;,UART,中间件,|,C/OS-II,程序设计,使用导论,UART,中间件,API,的参数输入,在使用,UART,中间件所包含的部分,API,时

44、用户需以字符串形式输入函数的入口参数,参数都包含在字符串里。请看下面的示例:,UART0,初始化,(,波特率,9600bps,、,8,位数据位、,1,位停止位、无校验,无硬件流,),char,cUartArg,=“,BaudRate,=9600,DataBits,=8,StopBits,=1 Parity=0,RtsControl,=0”;,/*,定义参数字符串 *,/,/*,将参数字符串填入,API */,uartInit,(UART0,cUartArg,NULL);,、用户根据“,=”,号前的,关键字,,在“,=”,号后填写对应的,数值,;,char,cUartArg,=“,BaudRa

45、te,=9600,DataBits,=8,StopBits,=1,Parity,=0,RtsControl,=0”;,、每一个,API,的对应,关键字,都不同,用户需要参考该函数的说明;此外,关键字是大小写敏感的。,、所以,小结一下。用户根据函数说明,,将填好参数的对应参数字符串送入函数,即可完成函数的参数配置了。这种配置方法大大提高了函数的兼容性和易用性。,uartInit,(UART0,cUartArg,NULL);,UART,中间件,|,C/OS-II,程序设计,使用导论,队列在,UART,中间件里的应用,UART,中间件可对硬件缓冲区和软件缓冲区进行操作。其中,软件缓冲区是通过中间件里

46、的队列软件包,抽取处理器自身的部分,RAM,资源进行管理而实现的。,通过队列软件包管理的软件缓冲区,可以大大提高,UART,通讯的可靠性。当,OS,有更重要的任务要处理,那么,UART,须收发的数据可暂时保存在软件缓冲区里,这样就不会造成数据丢失。请看演示:,其它事务,软件缓冲区,_,接收缓存,开始处理数据,在处理其它事务时,,UART,仍通过中断将接收的数据转移至缓冲区等待处理,UART,中间件,|,C/OS-II,程序设计,使用导论,使用,UART,中间件配置,UART,中断,用户可能会需要利用,UART,中断来完成自己的事务处理。为了满足该需求,,UART,中间件提供了让用户自行添加中断

47、处理代码的机制。用户只要在,uart.h,里找到相应的,uart,中断服务函数,在函数里添加自己的代码即可。,以设置,uart0,的中断服务函数为例,请看下图:,由于接收中断和发送中断都是使用同一个中断入口,所以用户添加自定义中断处理代码时要注意添加的位置。,UART,中间件,|,C/OS-II,程序设计,使用导论,UART,中间件的应用流程,现在已将应用,UART,中间件前的预备知识介绍完毕,这里再给出,UART,中间件的应用流程,给用户一个该软件包应用的整体印象。,开始,设置,UART,管脚,配置中断,用中间件,API,编程,用户程序,结束,使用,UART,前,须对管脚作设置,这部分的工作

48、并没有包括到中间件里;,由于,UART,中间件是使用中断来进行收发,所以用户需要初始化,UART,中断,这部分的工作并没有包括到中间件里;,在作好相关的初始化工作后,用户即可直接使用中间件里的,API“,组装”应用程序了。,UART,中间件,|,C/OS-II,程序设计,使用导论,2,简介,1,3,中间件机理,使用导论,UART,中间件,|,C/OS-II,程序设计,目录,三、使用机理,为令用户深入理解,UART,中间件的机制,此处对该中间件的几个重要机制作一阐述:,数据缓冲机制;,数据收发机制;,UART,中断和,UART,任务的通讯。,三个机制间的关系,可用下图揭示:,数据收发,数据缓冲,

49、UART,中断,数据收发是在,UART,中断里进行的,;,待收发的数据都先送到数据缓冲,区;这个过程也是在,UART,中断里完,成;,UART,中间件,|,C/OS-II,程序设计,使用机理,三、使用机理,为令用户深入理解,UART,中间件的机制,此处对该中间件的几个重要机制作一阐述:,数据缓冲机制;,数据收发机制;,UART,中断和,UART,任务的通讯。,三个机制间的关系,可用下图揭示:,UART,中 断,数据收发是在,UART,中断里进行的,;,待收发的数据都先送到数据缓冲,区;这个过程也是在,UART,中断里完,成;,UART,任 务,发送信号量,数据收发和数据缓冲处理都在中断,里进行

50、当这些工作处理完毕后,,UART,中断须发送信号量通知,UART,任,务,相关工作已完成。,UART,中间件,|,C/OS-II,程序设计,使用机理,接下来,分别对各机制作一些详细的介绍:,1,、数据缓冲机制,在,UART,中间件的使用中,存在着硬件缓冲区和软件缓冲区两个概念。硬件缓冲区是,UART,自身所配备的,FIFO,寄存器,,而软件缓冲区占用的是处理器的,内部,RAM,资源。,软件缓冲区的存在,构成了对硬件缓冲区的扩展,有助于,UART,通讯可靠性的进一步提高。,LPC2xxx,系列,ARM,UART,片内,RAM,FIFO,寄存器,硬件缓冲区,软件缓冲区,UART,中间件,|,C/

移动网页_全站_页脚广告1

关于我们      便捷服务       自信AI       AI导航        抽奖活动

©2010-2026 宁波自信网络信息技术有限公司  版权所有

客服电话:0574-28810668  投诉电话:18658249818

gongan.png浙公网安备33021202000488号   

icp.png浙ICP备2021020529号-1  |  浙B2-20240490  

关注我们 :微信公众号    抖音    微博    LOFTER 

客服