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

加入VIP,免费下载
 

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

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

下载须知

1: 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。
2: 试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。
3: 文件的所有权益归上传用户所有。
4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
5. 本站仅提供交流平台,并不能对任何下载内容负责。
6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

版权提示 | 免责声明

本文(arm串口实验Word格式文档下载.docx)为本站会员(b****4)主动上传,冰豆网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知冰豆网(发送邮件至service@bdocx.com或直接QQ联系客服),我们立即给予删除!

arm串口实验Word格式文档下载.docx

1、在本实验中,串口电路如下图所示, 开发板上提供两个串口DB9。其中UART0为主串口,可与PC或MODOM进行串行通迅串行通信接口电路组成可编程的串行接口芯片波特率发生器EIA与TTL电平转换器地址译码电路通信协议:异步协议同步协议开始前,线路处于空闲状态,送出连续“1”。传送开始时首先发一个“0”作为起始位,然后出现在通信线上的是字符的二进制编码数据。每个字符的数据位长可以约定为5位、6位、7位或8位,一般采用ASCII编码。后面是奇偶校验位,根据约定,用奇偶校验位将所传字符中为“1”的位数凑成奇数个或偶数个。也可以约定不要奇偶校验,这样就取消奇偶校验位。最后是表示停止位的“1”信号,这个停

2、止位可以约定持续1 位、1.5 位或2 位的时间宽度。至此一个字符传送完毕,线路又进入空闲,持续为“1”。经过一段随机的时间后,下一个字符开始传送才又发出起始位。每一个数据位的宽度等于传送波特率的倒数。微机异步串行通信中,常用的波特率为110,150,300,600,1200,2400,4800,9600 等。四、实验步骤1.准备实验环境。使用简易JTAG仿真器连接目标板,使用UP2410实验板附带的串口线连接实验板上的UART0和PC机的串口。2.在PC机上运行windows自带的串口通信程序超级终端程序,或者其它串口通信程序(如:串口精灵等。超级终端配置如下图所示)。3.使用EmbestI

3、DE通过Embest仿真器连接实验板,打开实验例程目录下例程,下载并运行它。4.在PC上观察超级终端程序主窗口;5.通过PC机键盘输入字符,可以看到相应的字符显示在超级终端主窗口,输入回车,所有字符一次性回显出来。6. 修改程序,要求键盘输入为“0”-“9”时,实验箱通过串口返回“9”-“0”,当输入为“A”-“Z”时,实验箱通过串口返回“a”-“z”,反之亦然。7. 重新编程采用中断方式实现串口驱动。8. 尝试将实验一和实验四结合起来,实现通过键盘输入实现对电机转速、转向的控制,可以通过按键来控制电机的关停和加速及减速。五、程序说明typedef struct /uart用一个结构体定义,因

4、为三个uart口设置差不多 serial_init_func_t init; serial_read_func_t read; serial_write_func_t write; serial_poll_func_t poll;/查询 serial_flush_input_func_t flush_input;/流输入 serial_flush_output_func_t flush_output;/流输出 int nIsr; /中断号 serial_driver_t;int Uart_Init(int whichUart, int baud)/初始化串口,选择第几个串口 if(whichU

5、art=NumberOfUartDrv) return FALSE; return serial_drvwhichUart-init(baud);/返回给结构体中,对应的串口int Uart_SendByte(int whichUart,int data)write(data);/发数据,一个字节void Uart_SendString(int whichUart, char *pt) /发数据流 while(*pt)/将pt指向的数据流发送出来 if(*pt=n) Uart_SendByte(whichUart,r); Uart_SendByte(whichUart,*pt+); void

6、Uart_Printf(int whichUart, char *fmt,.) /在屏幕上打印 va_list ap; static char string256; va_start(ap,fmt); vsprintf(string,fmt,ap); Uart_SendString(whichUart, string); va_end(ap); char Uart_Getchn(char* Revdata, int Uartnum, int timeout)/接受字符 if(Uartnum=0) while(!(rUTRSTAT0 & 0x1); /Receive data read *Rev

7、data=RdURXH0();/把接受的字符 给 定义的指针字符串 return TRUE; else if(Uartnum=1)(rUTRSTAT1 &/Receive data read *Revdata=RdURXH1(); else while(!(rUTRSTAT2 & *Revdata=RdURXH2(); /*void init_MotorPort() rGPBCON=rGPBCON&0x3ffff0|0xa; /Dead Zone=24, PreScalero1=2; rTCFG0=(0 if(data 0 /输入 0-9 输出 9-0 if(data 5) data=-(da

8、ta- else if(data = a dataz data=data-32;AZ data=data+32;重新编程采用中断方式实现串口驱动。void myUart_Init() int i; rGPHCON &= (0xff);/use GPH port as uart0 rGPHCON |= (2)|(22)|(24)|(26); rGPHUP = (0x0f);/the pull up function is disabled rULCON0 |= (30); /normal,no parity,one stop bit,8 bit rUCON0 =0x05;/|=(110)|(16

9、)|(12)|(10;i-);void myUart_int_init() pISR_UART0=(unsigned int)uart0_receive;/串口收中断函数 rINTMOD &=(128);/所用中断都是IRQ rINTMSK &= (1/bit28 is uart0/开按键和串口的中断 rINTSUBMSK&= (11)|(10);/bit0 is rx_int 开串口收的中断_irq void uart0_receive() /*unsigned char rec2;/定义一个接受区, rec1=0/后一个存结束符,便于发送。 rec0=rURXH0;/放在第一个 uart0

10、_print(rec);/发送回去 /注意要先清楚子中断源,不然会产生两次中断, /关于原因,请参考我写的关于中断的文章,明天写,稍等啊 ClearSubPending(BIT_SUB_RXD0); ClearPending(BIT_UART0);/清除中断标志SRCPND uart0_print(alp);*/ /uart0_print(buf_send); rINTMSK |= (1= 6500) clock=6500;now the motor is turning: clockwisethe standard of the speed is %d !,clock/500); SetPW

11、M(clock);/赋值给 电机,电机根据输入值调整转速 else if(control = - clock-=500; if(clock =0) turnfl=1; else turnfl=0; clock=(-clock); if(turnfl = 1) else 2 按下2的时候 停止 clock=0;now the motor is stop! SetPWM(0); /将0值赋值给电机七、思考题1232串行通讯的数据格式是什么?异步串行通信中的字符传送格式2串行通讯最少需要几根线,分别如何连接? 两根, Rxd-txd txd-rxd3ARM的串行口有几个,相应的寄存器是什么?3个线路

12、控制寄存器ULCONn ,控制寄存器UCONn ,FIFO控制寄存器UFCONn 控制寄存器UMCONn , 状态寄存器UTRSTAT ,错误状态寄存器UERSTAT FIFO状态寄存器UFSTAT ,发送寄存器UTXH和接收寄存器URXH,发送寄存器UTXH接收寄存器URXH,波特率因子寄存器UBRDIV4. 例程中的波特率为多少,如何确定的? 115200 使用PCLK,在50 MHz的情况下,当波特率取115 200 bps时,16)1 = 265. 怎样在本例程的基础上增加错误检测功能?错误状态寄存器UERSTAT 6.在充分理解程序代码的基础上根据以上的流程图对例程程序进行详细的注释。见五,六

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1