www.chjdz.com   最近传奇外传游戏推出新版本,新地图,新的怪物,新的 体验,不同的刺激,不同的感觉,让你身临不同的新世界,这个游戏经过一段低糜的时期后,现在终于再 次崛起,传奇外传玩家势必再次对这个游戏恢复信心,再次卷起传奇狂潮。
haosf.com shtml是什么 - 心灵净土 - 博客频道 - CSDN.NETUART0串口编程系列(一) - tiger-john - 博客频
文章作者: 文章来源: 更新时间:2012-02-23 01:10:27 

1>CPU通过串口接收数据时各个寄存器之间的关系

2>串口接受数据的流程:

Update-Time : 2011123日星期日

1> VPB总线提供CPUUART0之间得的通信连接

0:间隔中断状态未激活

一. 串口编程的硬件原理

l 设置串口波特率

U0LCR=0x03; //清除除数锁存位,并设置工作模式

00:表示5位字长

if(0!=set.parity)

}

/**********************************************************

² 帧错误与UART0RBRFIFO中读出的字符相关。当检测到一个帧错误时,新开网通传奇Rx将尝试与数据重新同步并假设错误的停止位实际是一个超前的起始位。但即使没有出现帧错误,它也不能假设下一个接收到的字节是正确的。

l U0DLLU0DLM都为8位寄存器。

**********************************************************/

2. 串口接收数据

* 入口参数:bps 串口波特率

void UART0_SendByte(uint8 data)

* 入口参数: data 要发送的数据

while((U0LSR&0X01)==0); //等待数据到达

² 当读取U0LSR寄存器并且UART0FIFO中不再有错误时,haosf.com,该位置零。

4> 串口发送数据程序

l 长度:8位寄存器

uint8 UART0_RcvByte(void)

² 当检测到UART0 THR空时,THRE置位。

U0DLM = bak>>8;

l UART0移位寄存器(U0RSR)通过引脚RxD0接收有效字符。

B. 串口初始化需要设置的寄存器

² U0TSRU0THR包含有效数据时,该位清零。

² U0THRU0TSR都为空时,该位置1

4. UART0ARM7 CPU之间的通信过程

位,无奇偶校验)

{

11:校验位强制为0

注:溢出错误条件在错误发生后立即设置。U0LSR读操作将清零第1。当UART0RSR已经有新的字符就绪,而UART0 RBRFIFO已满时,第一位置1.此时的UART0 RBRFIFO不会被覆盖,UART0 RSR中的字符将丢失。

* 能: 向串口发送字节数据,并等待发送完毕。

3> 相关寄存器配置

Tiger声明:本人鄙视直接复制本人文章而不加出处的个人或团体,但不排斥别人转载tiger-john的文章,只是请您注明出处并和本人联系或留言给我3Q

2> 串口初始化化程序

l UART0接收到一个有效字符后,通过读取U0RBR寄存器可以将FIFO中最早接收到的字节读出,当FIFO中不再包含有效数据时,该寄存器反映接收到的最后一个有效字节数据。接收的数据不足8位时,高位用0填充。

建立个文件index.shtml,代码如下:

* 间:2011117

² 当检测到中断条件时,接收器立即进入空闲状态直到RXD0变为全1状态。

B.方法二:

0:溢出错误状态未激活

注:

1U0THRU0TSR

1:始能访问除数锁存寄存器

}

uint8 UART0_Init(uint32 baud, UARTMODE set)

1U0RBR包含至少一个UART0 Rx错误。

{

(2) U0RBR(接收器缓冲寄存器)

6> 中断接口包含寄存器U0IERU0IIR。中断接口接收UART0发送模块和接收模块发出的单时钟宽度的使能信号。

串口编程(UART0)

return(1);

/* 设置串口模式 */

/**********************************************************

U0LCR = 0x80; // DLAB位置1

* 出口参数:

2. UART0引脚:
1>RxD0
引脚用于UART0接受数据,接受方式为串行输入。

l 各位寄存器的含义:

bak = set.parity<<4; // 设置奇偶校验

}

1. 串口程序都有那几部分组成

4> UART0的接收模块和发送模块的状态信息保存在U0LSR中。

/**********************************************************

error.htm 代码如下

* 功能:UART0初始化(通讯波特率1152008位数据位,1位停止

while(0 == (U0LSR & 0x40));

(2)U0LSR(线状态寄存器)

* 时间:2011117

if(2==set.stopb)

1> CPU通过串口发送数据时,各寄存器之间的关系

}

return(0);

* 出口参数: data 要接收的数据

if( (0==set.stopb)(set.stopb>2) )

1:表示U0THR

bak = 0x08;

3> UART0发送器模块接收CPU或主机写入的数据并将数据缓存到UART0 FIFOU0THR中,UART0发送模块中的移位寄存器(U0TSR)读取U0THRFIFO中的数据并将数据通过串行输出到引脚TxD0发送。

1:帧错误状态激活

0U0THR和或U0TSR包含有效数据。

l 作用:只读寄存器,是UART0 Rx FIFO的最高字节。它包含了最早接收到的字符,可通过总线接口读出。串口接收数据时低位在先,U0RBRbit0为最早接收到的数据位。如果接收到的数据小于8位,未使用的MSB填充为0.

return(0);

2: 表示停止位选择

0:禁止访问除数锁存寄存器

1、inetmgr 打开iis管理器

* 作者:tiger-john

C. 具体寄存器的设置

l VPB总线将缓冲寄存器(U0RBR)中的数据通过AHB-VPB桥传到AHB总线上

{

1. 串口特性:

3. UART0的结构和工作方式

* 出口参数:无**********************************************************/

0:奇偶错误状态未激活

/* 参数过滤 */

01:表示6位字符长度

² 间隔中断与UART0RBRFIFO中读出的字符相关。

[5 4]位:表示奇偶选择位

在上面已经介绍,在此步再涉及。

set.parity = set.parity-1;

l 长度:8位寄存器。

l 通过AHB-VPB桥把信息转换后发送给VPB总线。

0:帧错误状态未激活。

* 间:2011117

* 称: UART0_SendByte

1:使能奇偶产生和校验

uint8 stopb; // 停止位,1/2

控制信息保存在U0LCR中。

l U0DLL,U0DLM(寄存器):设置UART0的通信波特率。

if( (0==baud)(baud>115200) )

0U0RBR中没有UART0 Rx错误,或U0FCRbit0.

l UART0接收模块接受来自VPB总线的数据。并将数据缓存到U0THR寄存器中。

1:溢出错误状态激活

01个停止位

l 各位寄存器的含义:

* 能: 用查询方式接收一字节的数据

return(0);

0:禁止奇偶产生和校验

* 称: UART0_RcvByte

注:

l U0LCR(控制寄存器):设置UART0的通信格式。

在看腾讯的网站时候,无意看到大量shtml后缀的页面,这些是什么呢?吓得我出了一声冷汗,岁数这么大了,竟然不知道这个。马上google,呵呵,很快我的第一个shtml也出来了。

1表示U0RBR包含有效数据

bak = 0x04; // 判断是否为2位停止位

(CPU内核通过VPB接口对UART0的寄存器进行读写访问.)

Ø 1.使用U0DLLU0DLM配置波特率之前,必须先计算分频值,复古传奇

4. 完整的程序事例:

Ø 2.使用U0DLLU0DLM配置波特率之前必须把U0LCR控制寄存器的第8位置为1才能进行配置。配置完后要把U0LCR控制寄存器的第8位置位0

D.3位:帧错误

* 出口参数:返回值为1时表示初化成功,为0表除参数出错********************************************************/

}

2、点击web服务扩展,选择在服务器端的包含文件,点击允许。

1>16字节接收FIFO16字节发送FIFO

* 者:tiger-john

U0DLL=Fdiv&0xff;

* 称:UART0_Init()

}

10:校验位强制为1

if( set.parity>4 )

01:偶数(数据位+校验位=偶数)

1:间隔中断状态状态激活

/**********************************************************

² 奇偶错误检测时间取决于U0FCRbit0奇偶错误与UART0 RBRFIFO中读出的字符相关。

7位:除数锁存访问位

U0LCR = bak;

注:

(1) U0LSR(线状态寄存器)

l 设置串口工作模式

}

2> 串口发送数据时的流程

return(0);

{

5> UART0波特率发送器模块产生UART0 发送模块所使用的定时。波特率发生器模块时钟源为VPB时钟(pclk)。主时钟与U0DLLU0DLM寄存器所定义的除数相除得到UART0 发送器模块使用的时钟,该时钟必须为波特率的16倍。

l CPU发出信息通过AHB总线到AHB-VPB

用轮训方式实现接收上位机数据,并把数据再发送给上位机。

rcv_data = U0RBR; //U0RBR中读出接收到的数据

} UARTMODE;

---------------------------------------------------------

注:奇偶选择主要是设置奇偶校验类型,1.76精品

1:使能间隔发送

使用轮循和中断两种方式来实现串口编程。

11:表示8位字符长度

H7位:表示Rx FIFO 错误。

l 作用:U0DLLU0DLM寄存器一起构成一个16位除数。

(当然了,用中断实现串口编程,系统的效率较高。但是难度也较大。轮循方式效率较低,但是编程比较简单)

3>相关寄存器配置

² 间隔检测的时间取决于U0FCRbit0.

1>CPU通过UART0发送模块发送信息给外设

看图:

² 在发送整个字符(起始位,数据,奇偶位和停止位)过程中RXD0如果都保持逻辑0,则产生间隔中断。

[1 ,0]: 表示字长

可执行文件:C:/WINDOWS/system32/inetsrv/ssinc.dll

B.1位:溢出错误。

注:当U0RBR包含未读的字符时,第0位被置位;当UART0U0RBRFIFO为空时,第0位置零。

(1)U0THR(发送保持寄存器)

l 循环检测U0RBR是否有未读取的数据。

}

U0THR = data;

U0DLL = bak&0xff;

本文章针对的是ARM2200环境下编写串口程序,其中设计轮循方式,中断方式,以及在UC/OS-II操作系统下的串口编程。

2>外设通过UART0接收模块向ARM7 CPU发送信息

0:禁止间隔发送

Fdiv=Fpclk/(16*baud)

* set 模式设置(UARTMODE数据结构)

F.第五位:发送保持寄存器空

G.6位:表示发送器空

00:奇数(数据位+校验位=奇数)

**********************************************************/

(2) U0DLL,U0DLM(除数锁存寄存器)

PINSEL0=0x00000005; //设置串口引脚

² 当接收字符的奇偶位处于错误状态时产生一个奇偶错误。U0LSR读操作清零该位。

2>接收FIFO触发点可设置为14814字节。

---------------------------------------------------------

{ uint8 datab; // 字长度,5/6/7/8

A方法一:

² 当接收字符的停止位为0,产生帧错误。对读操作U0LSR清零该位。

/* 定义串口模式设置数据结构 */

l 长度:8位寄存器。

{

l 长度:8位寄存器

l 作用:设置通信格式(通信字符长度,停止位个数,奇偶校验位

l 如果有数据到来,则接收数据。

if( (set.datab<5)(set.datab>8) )

注:奇偶使能:控制是否进行奇偶校验。如果使能,发送时将添加一位校验位。

typedef struct UartMode

发布页面部署站点,一切看似ok,马上在浏览器中输入htt://localhost/index.shtml ,呀呀,竟然报告找不到文件呢,这么会事。iis没设置呗。动手设置下:

l 将要发送的一字节数据写入U0THR

{ uint32 bak;

4>串口接收数据程序

Email

E.第四位:间隔中断

A. 串口初始化的流程

10:表示7位字符长度

注:

{

确定保存之后,在浏览器中重新浏览,页面出现了,查看源码如下:

l U0DLL:存放分频值的低8

{

用轮循方式接收数据

l 作用:只读寄存器,它提供UART0发送和接收模块的状态信息。

Fdiv=(Fpclk>>4)/UART0_BPS;

扩展名:shtml/shtm

* 入口参数:

A0位:表示接收数据就绪

bak = (Fpclk>>4)/baud;

void UART0_Init(uint32 bps)

(1) U0LCR(线控制寄存器)

* 名称:UART0_Init()

/* 设置串口波特率 */

3位:表示奇偶使能

3. 串口发送数据

呵呵!!!!!

}

² 当一个带有Rx错误(例如帧错误,奇偶错误或间隔中断)的字符装入U0RBR时,该位置1.

l 等待数据发送完毕

* 作者:tiger-john

3>内置波特率发生器。

U0DLM=Fdiv>>8;

* 入口参数:baud 波特率

² U0THR写操作清零该位。

uint8 parity; // 奇偶校验位,0为无校验,1奇数校验,2为偶数校验

C.2位:奇偶错误。

注:

0:表示U0THR包含有效数据

0表示U0RBR为空

12个停止位

l 最用:只写寄存器。U0THRUART0 Tx FIFO的最高字节。它包含了Tx FIFO 中最新的字符,可通过总线接口写入。串口发送数据时,低位在先,bit0代表最先发送的位。

注:

U0LCR=0x83;     //置为除数锁存位,新开网通传奇,进行配置

* 者:tiger-john

2> UART0 接收器模块监视串行输入线RxD0的有效输入。UART0 接收单元的移位寄存器(U0RSR)通过RxD0接收有效的字符。当U0RSR接受到一个有效字符时,它将该字符传送到UART0 接收单元缓冲寄存器FIFO中,等待CPU通过VPB接口进行访问。

* 时间:2011117

² 帧错误检测时间取决于U0FCRbit0.

bak = set.datab-5; // 设置字长度

Author :tiger-john
WebSite :blog.csdn.net/tigerjb

{

l AHB总线将数据传送给ARM7 CPU

² 读操作U0LSR清零该状态位。

l U0DLM:存放分频值的高8位。

l UART0接受模块的移位寄存器U0TSR读取U0THR中的数据 并将数据通过输出引脚TxD0发送

先看图在说明:

2>TxD0引脚用于UART0发送数据,发送方式为串行发送数据。

uint8 rcv_data ;

return rcv_data; //返回接收到的数据

l 设置I/O引脚连接到UART0

1> 串口初速化

{

* 能:初始化串口0。设置其工作模式及波特率。

uint16 Fdiv;

注:当该位为1时,输出引脚(TxD0)强制为逻辑0,可以引起通信对方产生间隔中断。在一些通信方式中,使用间隔中断作为通信的起始信号(eg:LIN Bus)

6位:间隔控制

3、右击所部署的网站,选择属性->主蜀门私服->配置->映射。点击添加,弹出窗口中输入

1:奇偶错误状态激活

二. 轮训方式的串口编程

注:

推荐文章top10
ADS
热门文章top10
  • haosf.com shtml是什么 - 心灵净土 - 博客频
  • 破天一剑私服 移动开发者大会次日观感 - cl
  • 私服网站 乾隆的太医留下来的民间偏方
  • 破天一剑sf 西藏是破天一剑sf不可分割的领土
  • 魔兽世界私服 你知道的和不知道的网站推广一
  • 传奇世界私服 官方已经正式传世私服收录出现
  • 传奇战歌网 小学1--6年级所有的古诗 所有的
  • 借力进入冻干设备领域 研究报告正文 数据
  • 久久战歌网 ???性人
  • 52345 (艺术版)爱丽丝梦游仙境之下午茶
  • 传奇外传游戏就像这碗烧仙草一样,熬得越久,味道就越醇厚,传奇外传就想这碗越熬越浓的烧仙草一样 ,经过时间的洗礼,它将绽放出更完美的光彩www.chjdz.com
    Copyright © 2007 最新游戏 All rights reserved.
    最快SF游戏网 提供 最新最好玩的游戏 版权所有
    请使用1024*768分辨率浏览本站以达到最佳视觉效果