发送中止信号.PPT

  1. 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
  2. 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  3. 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
发送中止信号

* 4)字符接收程序Uart_GetByte()。 #define RdUTXH0()(*(volatile unsigned char * )Ox1d00024) #define RdUTXH1()(*(volatile unsigned char * )Ox1d04024) ?char Uart_GetByte(void) { if (UartNum==0) {//串口0 while(! (rUTRSTATO 0x1)); //等待,接收缓冲区接收数据 return RdUTXH0(); //返回接收的数据 } else {//串口1 while(! (rUTRSTAT1 0x1)); //等待,接收缓冲区接收数据 return RdUTXH1(); //返回接收的数据 } } 函数调用: char x = Uart_GetByte(); * * URT操作——数据接收 数据接收的帧格式是可编程的,由线寄存器ULCONn设置。 接收器可以检测: 1、溢出错误 旧数据未读取情况下,被新数据覆盖 2、奇偶校验错误 奇偶校验位出错 3、帧错误 没有有效的停止位 4、中止条件 接收“0”状态的时间长于一帧的时间 每种情况下都会将uart错误寄存器的一个错误标志置位。 * * UART错误状态寄存器 UERSTATn 位 描述 初始值 间隔中断 [3] 如果接收到某个中止信号,该位置1; 0:未接收到中止信号 1:接收到中止信号 0 数据帧错误 [2] 如果在接收操作中发生了帧错误,该位将自动置1 0:接收中没有发生帧错误 1:帧错误 0 奇偶错误 [1] 如果在接收操作中发生了奇偶校验错误,该位将自动置1 1:奇偶校验错误 0:接收中没有发生奇偶校验错误 0 Overrun错误 [0] 如果在接收操作中发生了溢出错误,该位将自动置1 0:接收中没有发生溢出错误 1 :溢出错误 0 * Arm定义了接收函数,用于从接收保持器接收数据。 #define RdUTXH0()(*(volatile unsigned char * )Ox1d00020)//接收保持器0的地址 #define RdUTXH1()(*(volatile unsigned char * )Ox1d04020) //接收保持器1的地址 char buf=?RdUTXH1(); //接收数据 URT操作——数据接收 * UART操作—自动流控制(AFC) AFC auto flow control AFC用于UART和UART之间通信: * 发送时当nCTS信号有效时,发送器传输数据到FIFO中。 在接收数据时,当FIFO有多于两个字节的空间时,nRTS自动被激活,FIFO剩余空间在一个字节以下时将nRTS置为无效,说明“不能再接收”。 * URT操作——非自动流控制 接收操作 ①选择接收模式(中断或BDMA模式)(UCONn)。 rUCON0=0x 0a; 0000001010b ②检查UFSTATn 寄存器中接收FIFO计数器的值。如果值小于15,用户必须设置UMCONn[0] 的值为1(激活nRTS); 如果它等于或大于15,用户必须设置该位值为0(不激活nRTS)。 if (rUFSTA0 0xF15) then rUMCON0= rUMCON0 | 1;激活nRTS else rUMCON0= rUMCON0 0xfe ;不激活 ③重复第②步 if (rUTRSTAT0 0x01==0x01) char ch=RdUTXH0(); 接收数据 FIFO禁止,检测UTRSTAT,FIFO使能,检测UFSTAT。 * * URT操作——非自动流控制 发送操作 ①选择发送模式(中断或BDMA模式) rUCON0=0x0a; 0000001010b ②检查UMSTATn[0]的值,如果为1(nCTS被激活),用户就可以写数据到输出缓冲区或输出FIFO寄存器中 if(rUMSTA0 1 ==1) ; nCTS为0,可以发送 if (rUTRSTAT0 0x02==0x02); FIFO禁止,发送缓冲区空;若FIFO使能检测UFSTAT

文档评论(0)

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

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

1亿VIP精品文档

相关文档