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

串口传输中查询与中断的优劣: 整体上讲查询方式会使程序运行一直处于等待状态,而中断方式可以保证程序的正常运行,很好的实现多任务方式。下面就具体项目中上位机和ARM板的通信方面详细说明一下: 上位机发送命令方面: 在上位机与ARM板的通信中,上位机给ARM板发送数据必须使用中断方式,这样才不会使系统处于一直等待状态,影响其它任务的正常运行,保证了整个控制系统的实时性和快速响应。 ARM板上传数据方面: 由于ARM采集到的信息是通过CAN中断进行的,像上位机发送信息也一块在CAN中断处理中完成了,并且上位机可以一直处于等待状态,对于ARM向上位机回发信息采用中断目前来讲意义不大。 串口中断(发送和接收)的产生机制: AT91对于串口中断有专门的寄存器控制,实现简单的串口中断可以通过一下设置实现: 首先是串口初始化,以保证串口可以正常通信。 然后是写AIC相应寄存器注册相应串口中断。 然后是写中断服务子函数。 最后是使能AIC控制器中相应的串口中断和串口中断控制器中相应的接收发送中断。 需要指出的是在7X256芯片中设置了PDC模块(外设数据控制器),使用PDC避免了处理器干涉并减去了处理器中断处理开销。这显著减少了数据传输所需时钟周期数并提高了微控制器性能,使其更加高效。介于此我们的串口中应用到了这一外设,所以在相应的串口驱动中需要添加PDC接收发送使能语句。 串口出错检验: 根据串口传输协议,项目中主要是设置开始位、停止位和无奇偶校验位用于保证串口传输的正确性。 串口相关控制寄存器: 控制寄存器 US_CR 模式寄存器US_MR 中断使能寄存器US_IER 中断禁用寄存器US_IDR 中断屏蔽寄存器US_IMR 通道状态寄存器US_CSR 接收器保持寄存器US_RHR 发送器保持寄存器US_THR 波特率发生器寄存器US_BRGR 接收器超时寄存器US_RTOR 发送器时间保障寄存器US_TTGR FI DI比率寄存器US_FIDI 错误数目寄存器US_NER IrDA滤波寄存器US_IF 串口初始化代码: int CMain (void) { AT91F_US0_CfgPMC(); //使能串口时钟 AT91F_US0_CfgPIO(); //设置引脚连接模块将对应IO连接到UART0 AT91C_BASE_US0-US_CR = 0X50; //使能接收发送器 AT91C_BASE_US0-US_MR=AT91C_US_USMODE_NORMAL |AT91C_US_NBSTOP_1_BIT |AT91C_US_PAR_NONE |AT91C_US_CHRL_8_BITS |AT91C_US_CLKS_FDIV1 |AT91C_US_OVER ; //设置串口模式:普通模式 1位停止位 无奇偶校验 传输数据长度为8位 时钟分频输入 重采样模式 AT91C_BASE_US0-US_BRGR =39; //设置串口波特率 根据计算公式实际波特率为19200 AT91F_PDC_EnableTx (AT91C_BASE_PDC_US0); // PDC发送传输使能 AT91F_PDC_EnableRx (AT91C_BASE_PDC_US0); // PDC接受传输使能 } 简单中断接收方式代码: int rBuf[3]; int CMain (void) { AT91F_AIC_DisableIt(AT91C_BASE_AIC,0xffffffff); //禁止所有中断 //------------注册串口接收中断-------------- AT91F_US0_CfgPMC(); //使能串口时钟 AT91F_US0_CfgPIO(); //设置引脚连接模块将对应IO连接到UART0 AT91C_BASE_US0-US_CR = 0X50; //使能接收发送器 AT91C_BASE_US0-US_MR=AT91C_US_USMODE_NORMAL |AT91C_US_NBSTOP_1_BIT |AT91C_US_PAR_NONE |AT91C_US_CHRL_8_BITS |AT91C_US_CLKS_FDIV1 |AT91C_US_OVER ; //设置串口模式:普通模式 1位停止位 无奇偶校验 传输数据长度为8位 时钟分频输入 重采样模式 AT91C_BASE_US0-US_BRGR =39; //设置串口波特率 根据计算公式实际波特率为19200 AT91F_AIC_ConfigureIt(AT91C_BASE_AIC,AT91C_ID_US0,AT91C_AIC_PRIOR_HIGHEST,AT91C_AIC_SRCTYPE_INT_HIGH_LE

您可能关注的文档

文档评论(0)

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

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

1亿VIP精品文档

相关文档