嵌入式系统与应用实验报告.doc_第1页
嵌入式系统与应用实验报告.doc_第2页
嵌入式系统与应用实验报告.doc_第3页
嵌入式系统与应用实验报告.doc_第4页
嵌入式系统与应用实验报告.doc_第5页
已阅读5页,还剩26页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

嵌入式系统与应用实验报告 班级:网络111 姓名:石长江 学号:201100824123 实验一 汇编指令试验一、实验目的 掌握ARM7TMDI 汇编指令的用法,并能编写简单的汇编程序; 学习ARM 微控制器的16 位Thumb 汇编指令的使用方法 掌握指令的条件执行二、实验设备 硬件:嵌入式实验平台一套、仿真器一个、PC 机一台。 软件:Windows 98/2000/NT/XP 操作系统、仿真器驱动程序、ADS 开发软件一套。三、实验内容分别使用ARM、Thumb 指令ADD,MOV,CMP,B 计算123N 的值。四、实验原理ARM 处理器共有两种工作状态: ARM 32 位,这种状态下执行字对准的ARM 指令。 Thumb 16 位,这种状态下执行半字对准的Thumb 指令。注意:ARM 和Thumb 之间状态的切换不影响处理器的模式或寄存器的内容。ARM 处理器在两种工作状态之间可以切换。(1) 进入Thumb 状态。当操作数寄存器的状态位0 为1 时,执行BX 指令进入Thumb 状态。如果处理器在Thumb 状态进入异常,则当从异常出来(IRQ、FIQ、Undef、Abort、SWI)返回时,自动切换到Thumb 状态。(2)进入ARM 状态。当操作数寄存器的状态位0 为0 时,执行BX 指令进入ARM 状态。处理器进行异常处理(IRQ、FIQ、Undef、Abort、SWI)。在此情况下,把PC 放入异常模式链接寄存器中。从异常向量地址开始执行也可以进入ARM 状态。Thumb 状态下的寄存器集是ARM 状态下寄存器集的子集。程序员可以直接访问8 个通用寄存器(R0R7)、PC、SP、LR 和CPSP。每一种特权模式都有一组SP、LR 和SPSR。 Thumb 状态的R0-R7 与ARM 状态的R0-R7 一致。 Thumb 状态的CPSR 和SPSR 与ARM 状态下的CPSR 和SPSR 一致。 Thumb 状态的SP 映射到ARM 状态的R13。 Thumb 状态的LR 映射到ARM 状态的R14。 Thumb 状态的PC 映射到ARM 状态的PC(R15)。本程序使用R0 保存结果,所以一开始就要初始化为0;循环执行R0=R0+R1,R1 为循环计数器,从1 开始计数,每一次循环R1 加1;当循环计数器R1 的值到达N 时,运算结束。五、实验操作步骤1启动ADS1.2,使用ARM Execuatable Image 工程模板建立一个工程ASM_Project。2建立源文件test2.s,编写实验程序,然后添加到工程中(ARM 指令和Thumb 指令实验的test2.s 程序源码分别见下清单) 。3设置工程链接地址RO Base 为0x0C0000004编译链接工程,选择【Project】-【Debug】,启动AXD 进行调试。5打开寄存器窗口(Processor Registers),选择Current 项监视各寄存器的值。6单步运行程序,注意执行BX R0 指令前后CPSR 寄存器的T 位。说明:在寄存器窗口的CPSR 寄存器,大写字母的位表示该位为1,小写字母的位表示该位为0(比如“T”表示T 位为1,“t”表示T 位为0)。7理解并掌握本实验原理及程序,完成练习题六、实验参考程序Thumb 汇编指令实验的参考程序代码清单;文件名:test.s;功能:计算123+N 的值N EQU 50 定义N的值为50 AREA testcode,CODE,READONLY 区域名为testcode,代码,只读ENTRY 入口CODE32ARM_CODE LDR SP,=0x40003F00 sp=0x40003F00ADR R0,THUMB_CODE+1 将分支目标地址送R0,使R1的bit0=1BX R0 分支并且转换为thumb状态LTORGCODE16 汇编以下代码为thumb指令THUMB_CODELDR R0,=N 伪指令R0=50BL SUM_N 跳转到SUM_N执行B THUMB_CODE 跳转到THUMB_CODE,thumb模式;名称:SUM_N;功能:计算123+N 的值;入口参数:R0( N 的值 );出口参数:R0( 运算结果 )SUM_NPUSH R1-R7,LRMOVS R2,R0 R0的内容放入R2BEQ SUM_END 相等转到SUM_ENDCMP R2,#1 R2与1比较 ,设置标志位BEQ SUM_END 相等转到SUM_ENDMOV R1,#1 将1送入R1MOV R0,#0 将0送入R0SUM_L1 ADD R0,R1 R0=R0+R1BCS SUM_ERR CMP R1,R2 R1与R2比较,设置标志位BHS SUM_END ADD R1,#1 R0=R0+1B SUM_L1 转到SUM_L1SUM_ERR MOV R0,#0_ 将0送入R0SUM_END POP R1-R7,PCENDARM 汇编指令实验的参考程序代码清单:;文件名:add.s;功能:计算123+N 的值N EQU 5; 定义N的内容为5 AREA Example,CODE,READONLY 定义区域,区域名为Example,代码,只读 ENTRY 入口 CODE32START LDR R0,=N R0=5 MOV R2,R0 R2=R0 MOV R0,#0 R0=0 MOV R1,#0 R1=0LOOP CMP R1,R2 比较R1与R2 BHI ADD_END ADD R0,R0,R1 R0=R0+R1 ADD R1,R1,#1 R1=R1+1 B LOOP 转到loopADD_END B START 转到start END 实验二 ARM 微处理器工作模式实验一、实验目的通过实验掌握学会使用MSR/MRS 指令实现ARM 处理器工作模式的切换,观察不同模式下的寄存器,加深对CPU 结构的理解。二、实验设备硬件:嵌入式实验平台一套、仿真器一个、PC 机一台。软件:Windows 98/2000/NT/XP 操作系统、仿真器驱动程序、ADS 开发软件一套。三、实验内容通过ARM 汇编指令,在各种处理器模式下切换并观察各种模式下寄存器的区别;掌握ARM 不同模式的进入与退出。四、实验原理1ARM 处理器模式ARM 体系结构支持表1- 所示的7 种处理器模式。处理器模式 说明用户 usr 正常程序执行模式FIQ fiq 支持告诉数据传送或通道处理IRQ irq 用于通用中断处理管理 svc 操作系统保护模式中止 abt 实现虚拟存储器和/或存储器保护未定义 und 支持硬件协处理器的软件仿真系统 sys 运行特权操作系统任务表1- 处理器模式在软件控制下也可以改变模式,外部中断或异常处理也可以引起模式发生改变。大多数应用程序在用户模式下执行。当处理器工作在用户模式时,正在执行的程序不能访问某些被保护的系统资源,也不能改变模式,除非异常发生。这允许适当编写操作系统来控制系统资源的使用。除用户模式外的其他模式成为特权模式。它们可以自由地访问系统资源和改变模式。其中5 种称为异常模式,即:FIQ (Fast Interrupt Request);IRQ (Interrupt Request);管理 (Supervisor);中止 (Abort);未定义 (Undefined)当特定的异常出现时,进入相应的模式。每种模式都有某些附加的寄存器,以避免异常出现时用户模式的状态不可靠。剩下的模式是系统模式。仅ARM 体系结构V4 以及以上的版本有该模式。不能由于任何异常而进入该模式。它与用户模式有相同的寄存器,但它是特权模式,不受用户模式的限制。它供需要访问系统资源的操作系统任务使用,但希望避免使用与异常模式有关的附加寄存器。避免使用附加寄存器保证了当任何异常出现时,都不会使任务的状态不可靠。2程序状态寄存器在所有处理模式下,都可以访问当前程序状态寄存器CPSR。CPSR包含条件码标志、中断禁止位、当前处理器模式以及其他状态和控制信息。每种异常模式都有一个程序状态保存寄存器SPSR。当异常出现时,SPSR用于保存CPSR的状态。CPSR 和SPSR 的格式如下:(1) 条件码标志N、Z、C、V:大多数指令可以检测这些条码标志,以决定程序指令如何执行。(2) 控制位最低8 位I、F、T 和M 位用作控制位。当异常出现时改变控制位。当处理器在特权模式下时也可以由软件改变。l 中断禁止位:I 置1 则禁止IRQ 中断;F 置1 则禁止FIQ 中断。l T 位:T0 指示ARM 执行;T1 指示Thumb 执行。在这些体系结构的系统中,可自由地使用能在ARM 和Thumb 状态之间切换的指令。l 模式位:M0、M1、M2、M3 和M4(M4:0)是模式位。这些位决定处理器的工作模(3) 其他位程序状态寄存器的其他位保留,用作以后扩展。五、实验操作步骤1.启动ADS1.2,建立一个新的工程;2.建立汇编源程序文件TEST3.S,编写实验程序,添加到工程中;3.编译链接工程,点击Debug 按钮,启动AXD 进行调试;4.点击【Processor Views】-【Registers】,打开Current 项监视个寄存器的值;5.单步运行程序,注意观察CPSR、SPSR 以及R0 寄存器值得变化。说明:CPSR 寄存器显示方式如图1- 所示。显示分为两部分,一部分是各个标志位,另一部分是工作模式。标志位NZCVQ 为条件码标志N、Z、C、V、Q,显示为大写字母,表示该位为1;显示为小写字母,表示该位为0。Q 标志在ARM 体系结构v5 及以上版本的E 变量中才有效。标志位IFT 为IRQ 中断禁止位I、FIQ 中断禁止位F、ARM 微控制器状态位T,显示为大写字母,表示该位为1;显示为小写字母,表示该位为0。T 标志在ARM 体系结构v4 及以上版本的T 变量中才有效。寄存器显示窗口六、实验参考程序ARM 微控制器工作模式实验的参考程序如下:USR_STACK_LEGTH EQU 64 定义各块的长度SVC_STACK_LEGTH EQU 0FIQ_STACK_LEGTH EQU 16IRQ_STACK_LEGTH EQU 64ABT_STACK_LEGTH EQU 0UND_STACK_LEGTH EQU 0 AREA Example3,CODE,READONLY 定义区域,区域名为Example3,代码,只读 ENTRY 入口 CODE32START MOV R0,#0 R0=0 MOV R1,#1 R1=1 MOV R2,#2 R2=2 MOV R3,#3 R3=3 MOV R4,#4 R4=4 MOV R5,#5 R5=5 MOV R6,#6 R6=6 MOV R7,#7 R7=7 MOV R8,#8 R8=8 MOV R9,#9 R9=9 MOV R10,#10 R10=10 MOV R11,#11 R11=11 MOV R12,#12 R12=12 BL InitStack MRS R0,CPSR R0的内容送入CPSR BIC R0,R0,#0X80 MSR CPSR_cxsf,R0 CPSR_cxsf =R0 MSR CPSR_c,#0xd0 CPSR_c=0xd0 MRS R0,CPSR R0的内容送入CPSR MSR CPSR_c,#0xd0 CPSR_c=0xd0 MRS R0,CPSR R0的内容送入CPSR HALT B HALT 暂停;名称:InitStack;功能:堆栈初始化,即初始化各模式下下的堆栈指针。;入口参数:无;出口参数:无InitStack MOV R0,LR LR=R0 MSR CPSR_c,#0xd3 CPSR_c=0xd3 LDR SP,StackSvc SP= StackSvc,指针指到StackSvc MSR CPSR_c,#0xd2 CPSR_c=0xd2 LDR SP,StackIrq SP= StackIrq,指针指到StackIrq MSR CPSR_c,#0xd1 CPSR_c=0xd1 LDR SP,StackFiq SP= StackFiq,指针指到StackFiq MSR CPSR_c,#0xd7 CPSR_c=0xd7 LDR SP,StackAbt SP= StackAbt,指针指到StackAbt MSR CPSR_c,#0xdb CPSR_c=0xdb LDR SP,StackUnd SP= StackUnd,指针指到StackUnd MSR CPSR_c,#0xdf CPSR_c=0xdf LDR SP,StackUsr SP= StackUsr,指针指到StackUsr MOV PC,R0 PC=R0StackUsr DCD UsrStackSpace+(USR_STACK_LEGTH-1)*4 字定义StackSvc DCD SvcStackSpace+(SVC_STACK_LEGTH-1)*4StackIrq DCD IrqStackSpace+(IRQ_STACK_LEGTH-1)*4StackFiq DCD FiqStackSpace+(FIQ_STACK_LEGTH-1)*4StackAbt DCD AbtStackSpace+(ABT_STACK_LEGTH-1)*4StackUnd DCD UndStackSpace+(UND_STACK_LEGTH-1)*4 AREA MyStacks,DATA,NOINIT,ALIGN=2 区域名为MyStacks,数据,UsrStackSpace SPACE USR_STACK_LEGTH*4 SvcStackSpace SPACE SVC_STACK_LEGTH*4IrqStackSpace SPACE IRQ_STACK_LEGTH*4FiqStackSpace SPACE FIQ_STACK_LEGTH*4AbtStackSpace SPACE ABT_STACK_LEGTH*4UndStackSpace SPACE UND_STACK_LEGTH*4 END 各模式下cpsr的值的含义及相关寄存器的值的变化。 实验三 通用 IO 口试验 一、实验目的 熟悉ARM 芯片I/O 口编程配置方法; 掌握ARM 芯片I/O 口控制LED 显示的方法。 二、实验设备 硬件:嵌入式实验平台一套、仿真器一个、PC 机一台。 软件:Windows 98/2000/NT/XP 操作系统、仿真器驱动程序、ADS 开发软件一套。 三、实验内容 控制嵌入式实验箱上的LED轮流点亮。 四、实验原理 S3CRRB0X 芯片上共有71 个多功能I/O 引脚,他们分别为7 组I/O 端口: 2 个9 位I/O 端口 (端口E 和F) 2 个8 位I/O 端口 (端口D 和G) 1 个16 位I/O 端口 (端口C) 1 个10 位I/O 端口 (端口A ) 1 个11 位I/O 端口 (端口B ) 每组端口都可以通过软件配置寄存器来满足不同系统合设计的需要。在运行主程序之 前,必须先对每一个用到的引脚的功能进行设置。如果某些引脚的附庸功能没有使用,那么 可以先将该引脚设置为I/O口。 S3C44B0X 芯片与端口相关的寄存器 (1)端口控制寄存器 (PCONAG):在S3C44B0X 芯片中,大部分引脚是使用多路复用的,所以要确定每个引脚的功能。PCONn(端口控制寄存器)能够定义引脚功能。如果 PG0PG7 作为掉电模式下的唤醒信号,那么这些端口必须配置成中断模式。 (2)端口数据寄存器 (PDATAG):如果端口定义为输出口,那么输出数据可以写入 PDATn 中相应的位;如果端口定义为输入口,那么输入数据可以从PDATn 相应的位中读 入。 (3)端口上拉寄存器 (PUPCG):通过配置端口上拉寄存器,可以使该组端口与上拉 电阻连接或断开。当寄存器中相应位配置为0 时,该引脚接上拉寄存器;当寄存器中相应位 配置为1 时,该引脚不接上拉电阻。 (4 )外部中断寄存器 (EXTINT ):通过不同的信号方式可以使8 个外部中断被请求。 EXTINT 寄存器可以根据外部中断的需求,将中断触发信号配置为低电平触发,高电平触发,下降沿触发,上升沿触发和边沿触发几种方式。 五、实验操作步骤 1启动ADS1.2,使用ARM Execuatable Image 工程模板新建一个工程; 2添加两个组INC 和SRC; 3将INC 文件夹下所有文件添加到组INC 中; 4将SRC 文件夹下所有文件添加到组SRC 中; 5建立源文件test5.C,编写实验程序,添加到工程中; 6编译链接选项的设置同前面实验; 7编译链接工程,点击Debug 按钮,启动AXD进行调试; 8连续点击step in 按钮,单步运行程序,主板上的三个LED 灯循环点亮。 9理解并掌握本实验原理及程序,完成练习题 六、实验参考程序 #include option.h #include def.h #include 44b.h #include 44blib.h void Isr_Init(void); void HaltUndef(void); void HaltSwi(void); void HaltPabort(void); void HaltDabort(void); void Main(void) rSYSCFG=SYSCFG_8KB; #if (PLLON 1) ChangePllValue(PLL_M,PLL_P,PLL_S); #endif Isr_Init(); Port_Init(); Uart_Init(0,115200); 波特率是115200 Uart_Select(0); Delay(0); /calibrate Delay() 延迟 Led_Display(7); 0111三个灯全亮 Delay(1000); /calibrate Delay() Led_Display(0); Delay(5000); /calibrate Delay() Led_Display(7); Uart_Printf(n start n); while(1) Delay(5000); /calibrate Delay() Led_Display(1); 亮第一个灯,其他灭 Delay(5000); /calibrate Delay() Led_Display(2); 亮第二个灯,其他灭 Delay(5000); /calibrate Delay() Led_Display(4); 亮第三个灯,其他灭 void Isr_Init(void) U32 i; pISR_UNDEF=(unsigned)HaltUndef; pISR_SWI =(unsigned)HaltSwi; pISR_PABORT=(unsigned)HaltPabort; pISR_DABORT=(unsigned)HaltDabort; for(i=_RAM_STARTADDRESS;i(_RAM_STARTADDRESS+0x20);i+=4) *(volatile unsigned *)i)=0xEA000000+0x1FFE; rINTCON=0x5; / Non-vectored,IRQ enable,FIQ disable rINTMOD=0x0; / All=IRQ mode rINTMSK|=BIT_GLOBAL|BIT_EINT3; / All interrupt is masked. void HaltUndef(void) Uart_Printf(Undefined instruction exception!n); while(1); void HaltSwi(void) Uart_Printf(SWI exception!n); while(1); void HaltPabort(void) Uart_Printf(Pabort exception!n); while(1); void HaltDabort(void) Uart_Printf(Dabort exception!n); while(1); 思考题 本试验中共用到了那些寄存器,他们的作用是什么? 在原程序的基础上改变led灯的闪烁方式。将其中部分程序改为以下程序,使其变为每次两个灯一起亮 Uart_Printf(n start n); while(1) Delay(5000); /calibrate Delay() Led_Display(3); Delay(5000); /calibrate Delay() Led_Display(5); Delay(5000); /calibrate Delay() Led_Display(6); 实验四 串口试验 一、实验目的 1. 掌握ARM的串行口工作原理 2. 学习编程实现ARM的UART 通讯 3. 掌握CPU利用串口通讯的方法 二、实验设备 硬件:ARM嵌入式开发板、用于ARM7TDMI的JTAG仿真器、PC、串口线。 软件:PC机操作系统win98、Win2000或WinXP、ARM SDT 2.51或ADS1.2集 成开发环境、仿真器驱动程序、超级终端通讯程序 三、预备知识 1. 用ARM ADS1.2集成开发环境,编写和调试程序的基本过程 2. ARM应用程序的框架结构 3. 了解串行总线 四、实验内容 学习串行通讯原理,了解串行通讯控制器,阅读ARM芯片文档,掌握ARM的 UART相关寄存器的功能,熟悉ARM系统硬件的UART相关接口。编程实现ARM 和计算机实现串行通讯。 ARM监视串行口,将接收到的字符再发送给串口(计算机与开发板是通过超级终端通讯的),即按PC键盘通过超级终端发送数据,开发板将接收到的数据再返送给PC,在超级终端上显示。 五、 实验原理 串行通讯是微计算机之间 种常见的近距离通讯手段,因使用方便、编程简单而 广泛使用,几乎所有的微控制器、PC都提供串行通讯接口。 1. 异步串行I O 异步串行方式是将传输数据的每个字符 位接 位(例如先低位、后高位)地传 送。数据的各不同位可以分时使用同传输通道,因此串行I O 可以减少信号连线, 最少用 对线即可进行。接收方对于同 根线上 连串的数字信号,首先要分割成 位,再按位组成字符。为了恢复发送的信息,双方必须协调工作。在微型计算机中 大量使用异步串行I O方式,双方使用各自的时钟信号,而且允许时钟频率有 定 误差,因此实现较容易。但是由于每个字符都要独立确定起始和结束(即每个字符都 要重新同步),字符和字符间还可能有长度不定的空闲时间,因此效率较低。 图4.1 串行通信字符格式 图4.1给出异步串行通信中 个字符的传送格式。开始前,线路处于空闲状态, 送出连续1”。传送开始时首先发 个 ”作为起始位,然后出现在通信线上的是字 符的二进制编码数据。每个字符的数据位长可以约定为5 位、6 位、7位或8位, 般采用ASCII编码。 后面是奇偶校验位,根据约定,用奇偶校验位将所传字符中为1”的位数凑成奇 数个或偶数个。也可以约定不要奇偶校验,这样就取消奇偶校验位。最后是表示停 止位的1”信号,这个停止位可以约定持续1 位、1.5 位或2 位的时间宽度。至此 个字符传送完毕,线路又进入空闲,持续为1”。经过 段随机的时间后,下 个字 符开始传送才又发出起始位每 个数据位的宽度等于传送波特率的倒数。微机异步 串行通信中,常用的波特率为2400,4800,9600,19200bps 等。 接收方按约定的格式接收数据,并进行检查,可以查出以下三种错误: 1) 奇偶错:在约定奇偶检查的情况下,接收到的字符奇偶状态和约定不符。 2) 帧格式错: 个字符从起始位到停止位的总位数不对。 3) 溢出错:若先接收的字符尚未被微机读取,后面的字符又传送过来,则产生 溢出错。每 种错误都会给出相应的出错信息,提示用户处理。 2. ARM 自带的串行口寄存器 S3C4510B的UART单元提供两个独立的异步串行I/O 口(Asynchronous Serial I/O, SIO ),每个通讯口均可工作在中断模式或DMA模式,也即UART能产生内部中断 请求或DMA请求在CPU和串行I/O 口之间传送数据。 S3C4510B的UART单元特性包括: 1) 波特率可编程 2) 支持红外发送与接收 3) 12个停止位 4) 5、6、7或8个数据位 5) 奇偶校验 每 个异步串行通讯口都具有独立的波特率发生器、发送器、接收器和控制单元。 波特率发生器可由片内系统时钟MCLK驱动,或由外部时钟UCLK (Pin64 )驱动; 发送器和接收器都有独立的数据缓冲寄存器和数据移位器。 待发送的数据首先传送到发送缓冲寄存器,然后拷贝到发送移位器并通过发送数 数据引脚UATXDn 发送出去。接收数据首先从接收数据引脚UARXDn 移入移位器, 当接收到 个字节时就拷贝到接收缓冲寄存器。 SIO的控制单元通过软件控制工作模式的选择、状态和中断产生。 当使用UART 的发送中断功能时,应在初始化UART之前先写 个字节数据到 UART的发送缓冲寄存器,这样,当发送缓冲寄存器空时就可以产生UART的发送中 断。 图4.2 串行口功能模块 表4.1为UART特殊功能寄存器描述 表4.1 UART特殊功能寄存器描述UART行控制寄存器(UART Line Control Registers,ULCON0 、ULCON1):下 面简要介绍UART操作。关于数据发送、数据接收、中断产生、波特率产生、回环 模式和自动流控制的详细介绍,请参考数据手册及其他相关资料。 发送数据帧是可编程的。1个数据帧包含1个起始位、5-8个数据位、1个可选的奇 偶校验位和12个停止位。停止位通过行控制寄存器ULCONn配置。 与发送帧类似,接收帧也是可编程的。接收帧由1个起始位、5-8个数据位、1个可选的奇偶校验位和12个行控制寄存器ULCONn中的停止位组成。接收器还可以检测过速错误、奇偶校验错误、帧错误和传输中断。每 个错误均可以设置个错误标志。 ? 过速错误指已接收到的数据在读取之前被新接收的数据覆盖。 ? 奇偶校验错误指接收器检测到的校验和与设置的不相符。 ? 帧错误指没有接收到有效的停止位。 ? 传输中断指接收数据RxDn保持逻辑0超过1帧的传输时间。 在FIFO模式下,如果RxFIFO非空,而在3个字的传输内没有接收到数据,那么产 生超时。 与UART有关的寄存器主要有以下几个: (1)UART行控制寄存器ULCONn。该寄存器的位6决定是否使用红外模式,位5位3决定校验方式,位2决定停止位长度,位1和位0决定每帧的数据位数。 (2)UART控制寄存器UCONn 。该寄存器决定UART的各种模式。UART FIFO 控制寄存器UFCONn和UARTMODEM控制寄存器,分别用来决定UART FIFO和 MODEM的模式。其中UFCONn的第0位决定是否启用FIFO,UMCONn的第0位是请 求发送位。另外,读/写状态寄存器UTRSTAT 以及错误状态寄存器UERSTAT,可以 反映芯片目前的读写状态以及错误类型。FIFO状态寄存器UFSTAT和MODEM状态寄存器UMCONn,通过前者可以读出目前FIFO是否已满足其中的字节数;通过后者可以读出目前MODEM的CTS状态。 (3)发送寄存器UTXH和接收寄存器URXH 。这 个寄存器存放发送和接收的数据,当然只有个字节位数据。需要注意的是,在发生溢出错误时,接收的数据必须被读出来;否则会引发下次溢出错误。 (4 )波特率分频寄存器UBRDIV UART 的波特率发生器的输入时钟可以为系统时钟,也可以从外部引入时钟信号。若选用系统时钟为波特率发生器的输入时钟,当系统时钟为50MHz时,最大的波特率时钟输出为MCLK2/ 16(= 1.5625MHz),其中MCLK2为系统时钟MCLK 除以2。 UCLK引脚为UART0、UART1的外部时钟输入引脚。UART波特率发生器的输入 时钟MCLK2或UCLK,由寄存器UCCON6选择。 图4.2、图4.3为UART波特率发生器的结构图和典型的波特率。六 实验步骤 1新建工程文件。 2定义与UART有关的各个寄存器地址和 些特殊的位命令。 3编写串口驱动函数: 4在主函数中实现将从串口0 接收到的数据发送到串口0 (Main.c): 试验参考程序: #include option.h #include def.h #include 44b.h #include 44blib.h void Isr_Init(void); void H

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论