单片机应用系统设计实例jgiysjic.ppt

  1. 1、本文档共142页,可阅读全部内容。
  2. 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
9.3.3.1 主要应用程序模块的设计 { if(Uartnum==0) //判断是否使用串口0 { while(!(rUTRSTAT00x2)); //等待状态空闲时 Delay(10); //延时 WrUTXH0(data); //向端口0发送数据 } else //判断是否使用串口1 {while(!(rUTRSTAT10x2)); //等待状态空闲时 Delay(10); //延时 WrUTXH1(data); //向端口1发送数据 } } //定义两个读端口地址 #define RdURXH0 (*(volatile unsigned char*)0x1d00024) #define RdURXH1 (*(volatile unsigned char*)0x1d04024) 9.3.3.1 主要应用程序模块的设计 //从两个读端口读取数据 char Uart_Getch(char* Revdata, int Uartnum,int timeout) { int i=0; if(Uartnum==0){ {while(!(rUTRSTAT00x1)); //端口0接收数据已准备好 OSTimeDly(1); if(timeout==0) continue; if(++=timeout) //如果等待时间超时则返回错误 return FALSE; } *Revdata=RdURXH0(); //将读端口0数据赋给变量 return TRUE; } else 9.3.3.1 主要应用程序模块的设计 {while(!(rUTRSTAT10x1)); //端口1接受数据准备好 OSTimeDly(1); if(timeout==0) continue; if(++i=timeout) //如果等待时间超时则返回错误 return FALSE; } *Revdata=RdURXH1(); //将端口1数据赋给变量 return TRUE; } } 9.3.3.1 主要应用程序模块的设计 4. 与PC机通信模块 与PC机通信模块主要负责通过USB总线实现与PC机的通信任务。 本系统采用嵌入式USB主机的模式间接地与PC机实现通信功能。控制器利用USB接口,通过U盘读取PC机处理好的数据文件,由于USB数据传输速度很快,所以必须将该数据存储在控制器缓冲区中,以供插补任务读取使用。 数据存取处理程序就是为实现上述数据缓存而设计的,它包含数据存储和数据读取两个子程序。数据存储子程序是将LPC2212从PC机接收的数据送入专门的数据缓存区;数据读取子程序则是在插补程序执行之前,从缓存区读取数据以供插补运算用。缓存区采用的是先进先出(FIFO)的数据队列存取方式,用于平衡速率不同的两个部件,使快速部件无需等待慢速部件。 9.3.3.1 主要应用程序模块的设计 数据队列使用了一个结构体存储队列信息,其数据结构如下: typedef def{ QUEUE_DATA_TYPE *Out; //指向数据输出位置 QUEUE_DATA_TYPE *In; //指向数据输入位置 QUEUE_DATA_TYPE *End; //指向Buf的结束位置 INT32U Ndata; //队列中数据个数 INT32U MaxData;

文档评论(0)

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

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

1亿VIP精品文档

相关文档