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

加入VIP,免费下载
 

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

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

下载须知

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

版权提示 | 免责声明

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

s3c2440的UART用法Word格式文档下载.docx

1、另一个很重要的地方就是设置波特率。s3c2440波特率的时钟源有三个:PCLK、FCLK/n和UEXTCLK。时钟源的选择是由UCONn的第10位和第11位来完成的。波特率的具体计算公式为:时钟源频率(波特率16)1这个计算结果很可能是小数,把该小数取最接近的整数,放入寄存器UBRDIVn中就完成了波特率的设置。如我们选择波特率的时钟源为PCLK,它为50MHz,我们设置的波特率为115.2kHz,通过上式计算的结果为26.13,取整后得到26,那么我们把26放入UBRDIVn中即可。由于我们没有使用FIFO和MODEM,所以可以不用设置FIFO控制寄存器UFCONn和MODEM控制寄存器UM

2、CONn。通过以上寄存器的设置,UART就可以正常传输数据。接收到的数据是放到接收缓存器URXHn中,要发送数据时,是把数据放入发送缓存器UTXHn中。由于UART是通过字节方式传输数据的,因此要区分是大端模式还是小端模式,也就是说这两个寄存器在这两种模式下,所在的地址是不同。为了了解当前数据传输的各种状态,还需要一些状态寄存器。传输状态寄存器UTRSTATn非常有用,它的第0位可以用来判断接受缓存器内是否有可接收的数据,第1位和第2位可以用来判断发送缓存器中是否为空,为空时可以发送数据。由于在这里我们不进行传输数据时错误的判断,因此错误状态寄存器UERSTATn不需要,FIFO状态寄存器UF

3、STATn和MODEM状态寄存器UMSTATn在这里也不需要。 我们给出UART通信的两种方法:查询和中断。为了验证程序,使用任一款的串行通信软件来实现PC和s3c2440之间的通信即可。 首先给出的是查询程序。它是在主程序的循环体内不断查询UART端口,当有数据来时,就接收数据,并再通过UART发送该数据。然后根据所接收数据的不同,分别执行不同的内容,如点亮、熄灭LED,蜂鸣器响、或不响。在这里,我们每次只完成一个字节的传输。#define rGPBCON (*(volatile unsigned *)0x56000010) /Port B control#define rGPBDAT (*

4、(volatile unsigned *)0x56000014) /Port B data#define rGPBUP (*(volatile unsigned *)0x56000018) /Pull-up control B#define rGPHCON (*(volatile unsigned *)0x56000070) /Port H control#define rGPHUP (*(volatile unsigned *)0x56000078) /Pull-up control H#define rULCON0 (*(volatile unsigned *)0x50000000) /U

5、ART 0 Line control#define rUCON0 (*(volatile unsigned *)0x50000004) /UART 0 Control#define rUFCON0 (*(volatile unsigned *)0x50000008) /UART 0 FIFO control#define rUMCON0 (*(volatile unsigned *)0x5000000c) /UART 0 Modem control#define rUTRSTAT0 (*(volatile unsigned *)0x50000010) /UART 0 Tx/Rx status#

6、define rUERSTAT0 (*(volatile unsigned *)0x50000014) /UART 0 Rx error status#define rUFSTAT0 (*(volatile unsigned *)0x50000018) /UART 0 FIFO status#define rUMSTAT0 (*(volatile unsigned *)0x5000001c) /UART 0 Modem status#define rUBRDIV0 (*(volatile unsigned *)0x50000028) /UART 0 Baud rate divisor/litt

7、le endian#define rUTXH0 (*(volatile unsigned char *)0x50000020) /UART 0 Transmission Hold#define rURXH0 (*(volatile unsigned char *)0x50000024) /UART 0 Receive buffervoid Main(void)char ch;rGPBCON = 0x015551;rGPBUP = 0x7ff;rGPBDAT = 0x1e0;rGPHCON = 0x00faaa; /使用UART0功能rGPHUP = 0x7ff;rULCON0 = 0x3; /

8、设置UART0无奇偶校验,一位停止位,8位数据rUCON0 = 0x245; /PCLK为时钟源,接收和发送数据为查询或中断方式rUFCON0 = 0; /rUMCON0 = 0;rUBRDIV0 = 26; /设置波特率,PCLK为50MHz,波特率为115.2kHzwhile(!(rUTRSTAT0 & 0x2); /等待并判断发送缓存是否为空rUTXH0 = 0xaa; /是空,则发送0xAA字节while(1) while(! 0x1); /等待并判断接收缓存是否准备好ch = rURXH0; /接收一个字节数据 rUTXH0 = ch; /发送一个字节数据switch(ch) /根据

9、所接收数据的不同,执行不同的程序 case 0x11: /灭LED rGPBDAT |= 0x1e0; break; case 0x22: /亮LED rGPBDAT &= 0x1f; case 0x33: /蜂鸣器不响= 0x1e0; case 0x44: /蜂鸣器响 rGPBDAT |= 0x1; default: /LED灭,蜂鸣器不响 rGPBDAT = 0x1e0; 下面是UART中断程序,它要比查询复杂一些,因为涉及到了中断处理,并且UART发送数据和接收数据是一个中断源。主程序循环体内不执行任何程序,都在UART中断程序内执行。当接收到0x55字节数据时,亮两个LED,当接收到其

10、他数据时,发送该字节,并在发送部分执行亮4个LED程序。#define _ISR_STARTADDRESS 0x33ffff00#define pISR_UART0 (*(unsigned *)(_ISR_STARTADDRESS+0x90)#define U32 unsigned int#define rGPBUP (*(volatile unsigned *)0x56000018) /Pull-up control B/#define rGPHDAT (*(volatile unsigned *)0x56000074) /Port H data#define rSRCPND (*(volatile unsigned *)0x4a000000) /Interrupt request status#define rINTMSK (*(volatile unsigned

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

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