使用C语言操作DSP的寄存器_第1页
使用C语言操作DSP的寄存器_第2页
使用C语言操作DSP的寄存器_第3页
使用C语言操作DSP的寄存器_第4页
使用C语言操作DSP的寄存器_第5页
已阅读5页,还剩33页未读 继续免费阅读

下载本文档

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

文档简介

1、第第6 6章章 使用使用C C语言操作语言操作DSPDSP的寄存器的寄存器北京航空航天大学出版社 作者:顾卫钢北京航空航天大学出版社 作者:顾卫钢 电信学院:张电信学院:张 蕾蕾DSP原理及应用6.1 寄存器的C语言访问特殊的存储单元,具有特殊的功能、具体的含义特殊的存储单元,具有特殊的功能、具体的含义DSP通过对寄存器的操作能够实现对系统和外设功能的通过对寄存器的操作能够实现对系统和外设功能的配置与控制。配置与控制。在在DSP的开发过程中,对于寄存器的操作是极为重要的,的开发过程中,对于寄存器的操作是极为重要的,也是很频繁的。也是很频繁的。对寄存器的操作是否方便会直接影响到对寄存器的操作是否

2、方便会直接影响到DSP的开发是否的开发是否方便。方便。F2812为大家提供了为大家提供了位定义位定义和和寄存器结构体寄存器结构体的方式,能的方式,能够很方便的实现对够很方便的实现对DSP内部寄存器的访问和控制。内部寄存器的访问和控制。 6.1.1 了解SCI的寄存器6.1.1 了解SCI的寄存器寄存器名寄存器名地址地址占用空间占用空间功能描述功能描述SCICCR0 x0000 705016位位SCI-A通信控制寄存器通信控制寄存器SCICTL10 x0000 705116位位SCI-A控制寄存器控制寄存器1SCIHBAUD0 x0000 705216位位SCI-A波特率设置寄存器高字节波特率设

3、置寄存器高字节SCILBAUD0 x0000 705316位位SCI-A波特率设置寄存器低字节波特率设置寄存器低字节SCICTL20 x0000 705416位位SCI-A控制寄存器控制寄存器2SCIRXST0 x0000 705516位位SCI-A接收状态寄存器接收状态寄存器SCIRXEMU0 x0000 705616位位SCI-A接收仿真数据缓冲寄存器接收仿真数据缓冲寄存器SCIRXBUF0 x0000 705716位位SCI-A接收数据缓冲寄存器接收数据缓冲寄存器SCITXBUF0 x0000 705916位位SCI-A发送数据缓冲寄存器发送数据缓冲寄存器SCIFFTX0 x0000 7

4、05A16位位SCI-A FIFO发送寄存器发送寄存器SCIFFRX0 x0000 705B16位位SCI-A FIFO接收寄存器接收寄存器SCIFFCT0 x0000 705C16位位SCI-A FIFO控制寄存器控制寄存器SCIPRI0 x0000 705F16位位SCI-A 极性控制寄存器极性控制寄存器寄存器地址缺少寄存器地址缺少0 x0000 7058、0 x0000 705D、0 x0000 705E6.1.1 了解SCI的寄存器寄存器名寄存器名地址地址占用空间占用空间功能描述功能描述SCICCR0 x0000 775016位位SCI-B通信控制寄存器通信控制寄存器SCICTL10

5、x0000 775116位位SCI-B控制寄存器控制寄存器1SCIHBAUD0 x0000 775216位位SCI-B波特率设置寄存器高字节波特率设置寄存器高字节SCILBAUD0 x0000 775316位位SCI-B波特率设置寄存器低字节波特率设置寄存器低字节SCICTL20 x0000 775416位位SCI-B控制寄存器控制寄存器2SCIRXST0 x0000 775516位位SCI-B接收状态寄存器接收状态寄存器SCIRXEMU0 x0000 775616位位SCI-B接收仿真数据缓冲寄存器接收仿真数据缓冲寄存器SCIRXBUF0 x0000 775716位位SCI-B接收数据缓冲寄

6、存器接收数据缓冲寄存器SCITXBUF0 x0000 775916位位SCI-B发送数据缓冲寄存器发送数据缓冲寄存器SCIFFTX0 x0000 775A16位位SCI-B FIFO发送寄存器发送寄存器SCIFFRX0 x0000 775B16位位SCI-B FIFO接收寄存器接收寄存器SCIFFCT0 x0000 775C16位位SCI-B FIFO控制寄存器控制寄存器SCIPRI0 x0000 775F16位位SCI-B 极性控制寄存器极性控制寄存器寄存器地址缺少寄存器地址缺少0 x0000 7758、0 x0000 775D、0 x0000 775E这些寄存器位于这些寄存器位于F2812

7、F2812存储器空间的外设帧存储器空间的外设帧2 2内,是在物理上实内,是在物理上实际存在的存储器单元。际存在的存储器单元。外设帧:外设帧:Peripheral Frames 0Peripheral Frames 0、1 1、2 2三个外设帧映射空间及其包含三个外设帧映射空间及其包含的相关寄存器如下:的相关寄存器如下:6.1.2 使用位定义的方法定义寄存器所谓所谓“位域位域”(也称位段)就是把一个字节中的二进制位(也称位段)就是把一个字节中的二进制位划分为几个不同的区域,并说明每个区域的位数。划分为几个不同的区域,并说明每个区域的位数。每个域都有一个域名,允许在程序中按域名进行操作。每个域都有

8、一个域名,允许在程序中按域名进行操作。位域的定义和位域变量的说明同结构体定义和其成员说明位域的定义和位域变量的说明同结构体定义和其成员说明类似,其语法格式为:类似,其语法格式为:Struct Struct 位域结构名位域结构名 类型说明符类型说明符 位域名位域名1 1:位域长度:位域长度 类型说明符类型说明符 位域名位域名2 2:位域长度:位域长度 类型说明符类型说明符 位域名位域名n n:位域长度:位域长度 ;关键字关键字自定义自定义int、float、char等等该位域由多少位组成该位域由多少位组成例6-1 位域定义struct bs /struct bs /定义位域定义位域bsbs in

9、t a:8; int a:8; int b:2; int b:2; int c:6; int c:6; ;struct bs bs1;struct bs bs1; / /定义定义bsbs型变量型变量bs1bs1位域也是位域也是C语言的一种数据结构,需要遵循语言的一种数据结构,需要遵循先声明后使用的原则。例如声明完了先声明后使用的原则。例如声明完了“struct struct bs bs1; bs bs1; ”才能用才能用bs型变量型变量bs1位域的定义必须位域的定义必须从右往左从右往左的顺序,也就是的顺序,也就是从最低位开始定义从最低位开始定义一个位域必须存储在同一个字节中一个位域必须存储在同

10、一个字节中,不能,不能跨两个字节。即,如果一个字节所剩空间跨两个字节。即,如果一个字节所剩空间不够放另一个域时,应该从下一个单元起不够放另一个域时,应该从下一个单元起存放该域。存放该域。struct bs /struct bs /定义位域定义位域bsbs int a:4; int a:4; int int : :0; /0; /空域空域 int b:5; int b:5; /从第二个字节开始存放从第二个字节开始存放 int c:3; int c:3; ;位域的长度不能大于一个字节的长度,即,位域的长度不能大于一个字节的长度,即,一个位域不能超过一个位域不能超过8位。位。位域可以无位域名,此时,

11、只用作填充或位域可以无位域名,此时,只用作填充或调整位置,无名位域不能使用调整位置,无名位域不能使用struct bs /struct bs /定义位域定义位域bsbs int a:4; int a:4; int int : :2; /2; /这两位不能使用这两位不能使用 int b:2; int b:2; int c:5; int c:5; int d:3; int d:3; ;以以SCIA的的通信控制寄存器通信控制寄存器SCICCR为例来说明为例来说明C语言语言用位域方法来定义寄存器用位域方法来定义寄存器STOP BITSR/W-0R/W-0R/W-0R/W-0R/W-0R/W-0R/W-

12、0R/W-0EVEN/ODD PARITYPARITYENABLELOOPBACKENAADDR/IDLEMODESCI CHAR2SCI CHAR1SCI CHAR0位位名称名称说明说明7STOP BITSSCI结束位的个数。该位表示发送的结束位的个数,接收器只对结束位的个数。该位表示发送的结束位的个数,接收器只对1个结个结束位检查。束位检查。1,两个结束位;,两个结束位;0,1个结束位个结束位6EVEN/ODD PARITY奇偶校验位选择。如果奇偶校验位选择。如果PARITY ENABLE置置1,该位决定采用偶极性或,该位决定采用偶极性或者奇极性校验。者奇极性校验。1,偶极性,偶极性,0,

13、奇极性,奇极性5PARITY ENABLESCI奇偶校验使能位。奇偶校验使能位。1,奇偶校验使能。,奇偶校验使能。0,奇偶校验禁止。,奇偶校验禁止。4LOOPBACKENA回送测试模式使能。该位能够使能回送测试模式,此时发送引脚回送测试模式使能。该位能够使能回送测试模式,此时发送引脚SCITXD和接收引脚和接收引脚SCIRXD在系统内部连在一起。在系统内部连在一起。1,使能回送测试模,使能回送测试模式功能。式功能。0,禁止回送测试模式功能,禁止回送测试模式功能3ADDR/IDLEMODESCI多处理模式控制位,该位选择多处理器协议中的一种。多处理模式控制位,该位选择多处理器协议中的一种。1,选

14、择地,选择地址位模式协议;址位模式协议;0,选择空闲线模式协议,选择空闲线模式协议20SCI CHAR2SCI CHAR0字符长度控制位。字符长度控制位。18位可选。长度小于八位的字符在位可选。长度小于八位的字符在SCIRXBUF和和SCIRXEMU中靠右对齐,在中靠右对齐,在SCIRXBUF中前面的位用中前面的位用0补充,补充,SCITXBUF中前面的位不需补充。对应字符长度:中前面的位不需补充。对应字符长度:000:长度长度1;001:长度长度2;010:长度长度3;011:长度长度4;100:长度长度5;101:长度长度6;110:长度长度7;111:长度长度8D7D0SCIA的所有寄存

15、器都是的所有寄存器都是8位的,当一个寄存器被访位的,当一个寄存器被访问时,寄存器数据位于低问时,寄存器数据位于低8位,高位,高8位为位为0。D0D2 字符长度控制位:字符长度控制位:3位位D3 SCI多处理模式控制位:多处理模式控制位:1位位D4 回送测试模式使能位:回送测试模式使能位:1位位D5 SCI奇偶校验使能位:奇偶校验使能位:1位位D6 奇偶校验位选择:奇偶校验位选择: 1位位D7 SCI结束位的个数:结束位的个数: 1位位D8D15 保留位:保留位:8位位例6-2 用位域定义SCICCRstruct SCICCR_BITSstruct SCICCR_BITS Uint16 SCIC

16、HAR:3; / D2D0 Uint16 SCICHAR:3; / D2D0 字符长度控制位字符长度控制位 Uint16 ADDRIDLE_MODE:1; / D3 Uint16 ADDRIDLE_MODE:1; / D3 多处理器模式控制位多处理器模式控制位 Uint16 LOOPBKENA:1; / D4 Uint16 LOOPBKENA:1; / D4 回送测试模式使能位回送测试模式使能位 Uint16 PARITYENA:1; / D5 Uint16 PARITYENA:1; / D5 极性使能位极性使能位 Uint16 PARITY:1; / D6 Uint16 PARITY:1;

17、/ D6 奇奇/ /偶极性选择位偶极性选择位 Uint16 STOPBITS:1; /D 7 Uint16 STOPBITS:1; /D 7 停止位个数停止位个数 Uint16 rsvd1:8; / D15D8 Uint16 rsvd1:8; / D15D8 保留;必须定义,但不会被调用保留;必须定义,但不会被调用; ;struct SCICCR_BITS bit; / struct SCICCR_BITS bit; / 声明声明SCICCR_BITS SCICCR_BITS 型变量型变量bitbitbit.SCICHAR=7; /SCIbit.SCICHAR=7; /SCI字符长度控制位为字

18、符长度控制位为8 8位位与传统与传统#define #define 方法比较:方法比较:C C代码访问寄存器的传统方法是使用代码访问寄存器的传统方法是使用#define#define宏为每一个寄存器宏为每一个寄存器分配一个地址。例如:分配一个地址。例如:同样的同样的#define #define 方法将方法将在每个外设寄存器上不在每个外设寄存器上不断重复。甚至对于诸如断重复。甚至对于诸如SCI-A SCI-A 和和SCI-BSCI-B这样完全这样完全相同的外设,每个寄存相同的外设,每个寄存器都必须被一一分配地器都必须被一一分配地址。址。传统传统#define #define 方法有以下显著弊端

19、:方法有以下显著弊端:(1 1)不容易访问寄存器中的位域部分;)不容易访问寄存器中的位域部分;(2 2)不容易在)不容易在CCS CCS 观察窗内显示位域的值;观察窗内显示位域的值;(3 3)不能利用)不能利用CCS CCS 的自动完成功能;的自动完成功能;(4 4)对于重复的外设,头文件开发者不能获得重复使用的便利)对于重复的外设,头文件开发者不能获得重复使用的便利。注意以下几点:注意以下几点:(1 1)寄存器名出现的顺序必须与它们在内存中被安排的顺序相同;)寄存器名出现的顺序必须与它们在内存中被安排的顺序相同;(2 2)在结构体中,通过使用保留变量()在结构体中,通过使用保留变量(rsvd

20、1rsvd1,rsvd2 rsvd2 等)来预留等)来预留内存中的保留位置。内存中的保留位置。这种保留结构仅仅用以预留内存中的空间;这种保留结构仅仅用以预留内存中的空间;(3 3)Uint16 Uint16 和和Uint32 Uint32 分别是无符号分别是无符号16 16 位或者位或者32 32 位数的类型定义,位数的类型定义,在在DSP281x DSP281x 中,则用来定义中,则用来定义无符号整型和无符号长整型无符号整型和无符号长整型。这样使。这样使用起来就方便一些。相应的类型定义声明由用起来就方便一些。相应的类型定义声明由DSP281x_Device.h DSP281x_Device.

21、h 文文件建立。件建立。2 2)声明可访问寄存器的变量)声明可访问寄存器的变量寄存器结构体类型可被用于声明一个可访问寄存器的变量,对器寄存器结构体类型可被用于声明一个可访问寄存器的变量,对器件的每个外设都采用这一相同的做法,件的每个外设都采用这一相同的做法,同一种外设的复用外设可同一种外设的复用外设可以采用同样的结构体类型定义以采用同样的结构体类型定义。例如,如果一个器件上有。例如,如果一个器件上有3 3 个个CPU-TimersCPU-Timers,可以创建如下所示的,可以创建如下所示的3 3 个具有个具有“struct struct CPUTIMER_REGS”CPUTIMER_REGS”

22、结构体类型的变量。结构体类型的变量。例6-3 SCICCR的共同体定义结构体变量不能作为一个整体进行输入、输出结构体变量不能作为一个整体进行输入、输出。如果需要对整。如果需要对整个寄存器进行操作,位域操作就过于复杂,这时考虑到共同体,个寄存器进行操作,位域操作就过于复杂,这时考虑到共同体,可以进行整体操作和位操作二选一的方式。可以进行整体操作和位操作二选一的方式。共同体(公用体):把几种不同类型的变量放在同一段内存单共同体(公用体):把几种不同类型的变量放在同一段内存单元中。变量在内存中所占字节数不同,但都从同一地址开始存元中。变量在内存中所占字节数不同,但都从同一地址开始存放。也就是采用覆盖

23、技术,几个变量相互覆盖。放。也就是采用覆盖技术,几个变量相互覆盖。共同体类型变量定义形式:共同体类型变量定义形式:union union 共同体名共同体名 成员表列成员表列 ;例6-3 SCICCR的共同体定义union SCICCR_REG union SCICCR_REG Uint16 all; / Uint16 all; /可实现对寄存器整体操作可实现对寄存器整体操作 struct SCICCR_BITS bit; /struct SCICCR_BITS bit; /可实现位操作可实现位操作; ;union SCICCR_REG SCICCRunion SCICCR_REG SCICCR

24、; / /声明声明 一个共同体一个共同体SCICCRSCICCRSCICCR.all=0 x007F;SCICCR.all=0 x007F;SCICCR.bit.SCICHAR=5;SCICCR.bit.SCICHAR=5;关键字关键字struct SCI_REGS struct SCI_REGS union SCICCR_REG SCICCR; / union SCICCR_REG SCICCR; /通信控制寄存器通信控制寄存器 union SCICTL1_REG SCICTL1; / union SCICTL1_REG SCICTL1; / 控制寄存器控制寄存器1 1 Uint16 SCI

25、HBAUD; / Uint16 SCIHBAUD; / 波特率寄存器波特率寄存器( (高字节高字节) ) Uint16 SCILBAUD; / Uint16 SCILBAUD; / 波特率寄存器波特率寄存器( (低字节低字节) ) union SCICTL2_REG SCICTL2; / union SCICTL2_REG SCICTL2; / 控制寄存器控制寄存器2 2 union SCIRXST_REG SCIRXST; / union SCIRXST_REG SCIRXST; / 接收状态寄存器接收状态寄存器 Uint16 SCIRXEMU; / Uint16 SCIRXEMU; / 接

26、收仿真缓冲寄存器接收仿真缓冲寄存器 union SCIRXBUF_REG SCIRXBUF; / union SCIRXBUF_REG SCIRXBUF; / 接收数据寄存器接收数据寄存器 Uint16 rsvd1; Uint16 rsvd1; / / 保留保留 Uint16 SCITXBUF; / Uint16 SCITXBUF; / 发送数据缓冲寄存器发送数据缓冲寄存器 union SCIFFTX_REG SCIFFTX; / FIFO union SCIFFTX_REG SCIFFTX; / FIFO 发送寄存器发送寄存器 union SCIFFRX_REG SCIFFRX; / FIF

27、O union SCIFFRX_REG SCIFFRX; / FIFO 接收寄存器接收寄存器 union SCIFFCT_REG SCIFFCT; / FIFO union SCIFFCT_REG SCIFFCT; / FIFO 控制寄存器控制寄存器 Uint16 rsvd2; Uint16 rsvd2; / / 保留保留 Uint16 rsvd3; Uint16 rsvd3; / / 保留保留 union SCIPRI_REG SCIPRI; / FIFO union SCIPRI_REG SCIPRI; / FIFO 优先级控制寄存器优先级控制寄存器 ; ;extern volatile

28、struct SCI_REGS extern volatile struct SCI_REGS SciaRegsSciaRegs; ;extern volatile struct SCI_REGS extern volatile struct SCI_REGS ScibRegsScibRegs; ;例6-4 创建SCI寄存器的结构体文件寄存器名寄存器名SCICCRSCICTL1SCIHBAUDSCILBAUDSCICTL2SCIRXSTSCIRXEMUSCIRXBUFSCITXBUFSCIFFTXSCIFFRXSCIFFCTSCIPRI关键字。外部的关键字。外部的关键字。易变的关键字。易变的/

29、 /* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *文件名:文件名:DSP28_Sci.hDSP28_Sci.h* *功功 能:能:2812 SCI2812 SCI模块寄存器的定义模块寄存器的定义* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *

30、 * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * */ /#ifndef DSP28_SCI_H#ifndef DSP28_SCI_H#define DSP28_SCI_H#define DSP28_SCI_H struct struct SCICCRSCICCR_BITS / bit description_BITS / bit description Uint16 SCICHAR:3; / 2:0 Character length control Uint16 SCICHAR:3

31、; / 2:0 Character length control Uint16 ADDRIDLE_MODE:1; / 3 ADDR/IDLE Mode control Uint16 ADDRIDLE_MODE:1; / 3 ADDR/IDLE Mode control Uint16 LOOPBKENA:1; / 4 Loop Back enable Uint16 LOOPBKENA:1; / 4 Loop Back enable Uint16 PARITYENA:1; / 5 Parity enable Uint16 PARITYENA:1; / 5 Parity enable Uint16

32、PARITY:1; / 6 Even or Odd Parity Uint16 PARITY:1; / 6 Even or Odd Parity Uint16 STOPBITS:1; / 7 Number of Stop Bits Uint16 STOPBITS:1; / 7 Number of Stop Bits Uint16 rsvd1:8; / 15:8 reserved; Uint16 rsvd1:8; / 15:8 reserved; union SCICCR_REG union SCICCR_REG Uint16 all; Uint16 all; struct SCICCR_BIT

33、S bit; struct SCICCR_BITS bit; 位域方式定义位域方式定义SCICCRSCICCR寄存器寄存器定义共同体定义共同体SCICCRSCICCR寄存器寄存器struct struct SCICTL1SCICTL1_BITS / bit description_BITS / bit description Uint16 RXENA:1; / 0 SCI receiver enable Uint16 RXENA:1; / 0 SCI receiver enable Uint16 TXENA:1; / 1 SCI transmitter enable Uint16 TXENA:

34、1; / 1 SCI transmitter enable Uint16 SLEEP:1; / 2 SCI sleep Uint16 SLEEP:1; / 2 SCI sleep Uint16 TXWAKE:1; / 3 Transmitter wakeup method Uint16 TXWAKE:1; / 3 Transmitter wakeup method Uint16 rsvd:1; / 4 reserved Uint16 rsvd:1; / 4 reserved Uint16 SWRESET:1; / 5 Software reset Uint16 SWRESET:1; / 5 S

35、oftware reset Uint16 RXERRINTENA:1; / 6 Recieve interrupt enable Uint16 RXERRINTENA:1; / 6 Recieve interrupt enable Uint16 rsvd1:9; / 15:7 reserved Uint16 rsvd1:9; / 15:7 reserved; ; union SCICTL1_REG union SCICTL1_REG Uint16 all; Uint16 all; struct SCICTL1_BITS bit; struct SCICTL1_BITS bit; ;位域方式定义

36、位域方式定义SCICTL1SCICTL1寄存器寄存器定义共同体定义共同体SCICTL1SCICTL1寄存器寄存器struct SCICTL2_BITS / bit descriptionstruct SCICTL2_BITS / bit description Uint16 TXINTENA:1; / 0 Transmit interrupt enable Uint16 TXINTENA:1; / 0 Transmit interrupt enable Uint16 RXBKINTENA:1; / 1 Receiver-buffer break enable Uint16 RXBKINTENA

37、:1; / 1 Receiver-buffer break enable Uint16 rsvd:4; / 5:2 reserved Uint16 rsvd:4; / 5:2 reserved Uint16 TXEMPTY:1; / 6 Transmitter empty flag Uint16 TXEMPTY:1; / 6 Transmitter empty flag Uint16 TXRDY:1; / 7 Transmitter ready flag Uint16 TXRDY:1; / 7 Transmitter ready flag Uint16 rsvd1:8; / 15:8 rese

38、rved Uint16 rsvd1:8; / 15:8 reserved; ; union SCICTL2_REG union SCICTL2_REG Uint16 all; Uint16 all; struct SCICTL2_BITS bit; struct SCICTL2_BITS bit; ;位域方式定义位域方式定义SCICTL2SCICTL2寄存器寄存器定义共同体定义共同体SCICTL1SCICTL1寄存器寄存器struct SCIRXST_BITS / bit descriptionstruct SCIRXST_BITS / bit description Uint16 rsvd:

39、1; / 0 reserved Uint16 rsvd:1; / 0 reserved Uint16 RXWAKE:1; / 1 Receiver wakeup detect flag Uint16 RXWAKE:1; / 1 Receiver wakeup detect flag Uint16 PE:1; / 2 Parity error flag Uint16 PE:1; / 2 Parity error flag Uint16 OE:1; / 3 Overrun error flag Uint16 OE:1; / 3 Overrun error flag Uint16 FE:1; / 4

40、 Framing error flag Uint16 FE:1; / 4 Framing error flag Uint16 BRKDT:1; / 5 Break-detect flag Uint16 BRKDT:1; / 5 Break-detect flag Uint16 RXRDY:1; / 6 Receiver ready flag Uint16 RXRDY:1; / 6 Receiver ready flag Uint16 RXERR:1; / 7 Receiver error flag Uint16 RXERR:1; / 7 Receiver error flag; ; union

41、 SCIRXST_REGunion SCIRXST_REG Uint16 all; Uint16 all; struct SCIRXST_BITS bit; struct SCIRXST_BITS bit; ;位域方式定义位域方式定义SCIRXSTSCIRXST寄存寄存器器定义共同体定义共同体SCICTL1SCICTL1寄存器寄存器struct SCIRXBUF_BITS struct SCIRXBUF_BITS / bits description / bits description Uint16 RXDT:8; / 7:0 Receive word Uint16 RXDT:8; / 7:

42、0 Receive word Uint16 rsvd:6; / 13:8 reserved Uint16 rsvd:6; / 13:8 reserved Uint16 SCIFFPE:1; / 14 SCI PE error in FIFO mode Uint16 SCIFFPE:1; / 14 SCI PE error in FIFO mode Uint16 SCIFFFE:1; / 15 SCI FE error in FIFO mode Uint16 SCIFFFE:1; / 15 SCI FE error in FIFO mode; ;union SCIRXBUF_REG union

43、SCIRXBUF_REG Uint16 all; Uint16 all; struct SCIRXBUF_BITS bit; struct SCIRXBUF_BITS bit; ;位域方式定义位域方式定义SCIRXBUFSCIRXBUF寄寄存器存器定义共同体定义共同体SCIRXBUFSCIRXBUF寄寄存器存器struct SCIPRI_BITS / bit descriptionstruct SCIPRI_BITS / bit description Uint16 rsvd:3; / 2:0 reserved Uint16 rsvd:3; / 2:0 reserved Uint16 FREE

44、:1; / 3 Free emulation suspend mode Uint16 FREE:1; / 3 Free emulation suspend mode Uint16 SOFT:1; / 4 Soft emulation suspend mode Uint16 SOFT:1; / 4 Soft emulation suspend mode Uint16 rsvd1:3; / 7:5 reserved Uint16 rsvd1:3; / 7:5 reserved; ; union SCIPRI_REG union SCIPRI_REG Uint16 all; Uint16 all;

45、struct SCIPRI_BITS bit; struct SCIPRI_BITS bit; ;位域方式定义位域方式定义SCIPRISCIPRI寄存器寄存器定义共同体定义共同体SCIPRISCIPRI寄存器寄存器struct SCIFFTX_BITS struct SCIFFTX_BITS / bit description / bit description Uint16 TXFFILIL:5; / 4:0 Interrupt level Uint16 TXFFILIL:5; / 4:0 Interrupt level Uint16 TXFFIENA:1; / 5 Interrupt en

46、able Uint16 TXFFIENA:1; / 5 Interrupt enable Uint16 TXINTCLR:1; / 6 Clear INT flag Uint16 TXINTCLR:1; / 6 Clear INT flag Uint16 TXFFINT:1; / 7 INT flag Uint16 TXFFINT:1; / 7 INT flag Uint16 TXFFST:5; / 12:8 FIFO status Uint16 TXFFST:5; / 12:8 FIFO status Uint16 TXFIFOXRESET:1; / 13 FIFO reset Uint16

47、 TXFIFOXRESET:1; / 13 FIFO reset Uint16 SCIFFENA:1; / 14 Enhancement enable Uint16 SCIFFENA:1; / 14 Enhancement enable Uint16 resvd:1; / 15 reserved Uint16 resvd:1; / 15 reserved; ; union SCIFFTX_REG union SCIFFTX_REG Uint16 all; Uint16 all; struct SCIFFTX_BITS bit; struct SCIFFTX_BITS bit; ;位域方式定义位

48、域方式定义SCIFFTXSCIFFTX寄存寄存器器定义共同体定义共同体SCIFFTXSCIFFTX寄存器寄存器struct SCIFFRX_BITS / bits descriptionstruct SCIFFRX_BITS / bits description Uint16 RXFFIL:5; / 4:0 Interrupt level Uint16 RXFFIL:5; / 4:0 Interrupt level Uint16 RXFFIENA:1; / 5 Interrupt enable Uint16 RXFFIENA:1; / 5 Interrupt enable Uint16 RXF

49、FINTCLR:1; / 6 Clear INT flag Uint16 RXFFINTCLR:1; / 6 Clear INT flag Uint16 RXFFINT:1; / 7 INT flag Uint16 RXFFINT:1; / 7 INT flag Uint16 RXFIFST:5; / 12:8 FIFO status Uint16 RXFIFST:5; / 12:8 FIFO status Uint16 RXFIFORESET:1; / 13 FIFO reset Uint16 RXFIFORESET:1; / 13 FIFO reset Uint16 RXOVF_CLR:1

50、; / 14 Clear overflow Uint16 RXOVF_CLR:1; / 14 Clear overflow Uint16 RXFFOVF:1; / 15 FIFO overflow Uint16 RXFFOVF:1; / 15 FIFO overflow; ; union SCIFFRX_REGunion SCIFFRX_REG Uint16 all; Uint16 all; struct SCIFFRX_BITS bit; struct SCIFFRX_BITS bit; ;位域方式定义位域方式定义SCIFFRXSCIFFRX寄存寄存器器定义共同体定义共同体SCIFFRXSC

51、IFFRX寄存器寄存器struct SCIFFCT_BITS / bits descriptionstruct SCIFFCT_BITS / bits description Uint16 FFTXDLY:8; / 7:0 FIFO transmit delay Uint16 FFTXDLY:8; / 7:0 FIFO transmit delay Uint16 rsvd:5; / 12:8 reserved Uint16 rsvd:5; / 12:8 reserved Uint16 CDC:1; / 13 Auto baud mode enable Uint16 CDC:1; / 13 Au

52、to baud mode enable Uint16 ABDCLR:1; / 14 Auto baud clear Uint16 ABDCLR:1; / 14 Auto baud clear Uint16 ABD:1; / 15 Auto baud detect Uint16 ABD:1; / 15 Auto baud detect; ;union SCIFFCT_REG union SCIFFCT_REG Uint16 all; Uint16 all; struct SCIFFCT_BITS bit; struct SCIFFCT_BITS bit; ;位域方式定义位域方式定义SCIFFCT

53、SCIFFCT寄存寄存器器定义共同体定义共同体SCIFFCTSCIFFCT寄存器寄存器struct SCI_REGS struct SCI_REGS union SCICCR_REG SCICCR; / Communications control register union SCICCR_REG SCICCR; / Communications control register union SCICTL1_REG SCICTL1; / Control register 1 union SCICTL1_REG SCICTL1; / Control register 1 Uint16 SCIH

54、BAUD; / Baud rate (high) registerUint16 SCIHBAUD; / Baud rate (high) register Uint16 SCILBAUD; / Baud rate (low) register Uint16 SCILBAUD; / Baud rate (low) register union SCICTL2_REG SCICTL2; / Control register 2 union SCICTL2_REG SCICTL2; / Control register 2 union SCIRXST_REG SCIRXST; / Recieve s

55、tatus register union SCIRXST_REG SCIRXST; / Recieve status register Uint16 SCIRXEMU; / Recieve emulation buffer registerUint16 SCIRXEMU; / Recieve emulation buffer register union SCIRXBUF_REG SCIRXBUF; / Recieve data buffer union SCIRXBUF_REG SCIRXBUF; / Recieve data buffer Uint16 rsvd1; / reserved

56、Uint16 rsvd1; / reserved Uint16 SCITXBUF; Uint16 SCITXBUF; / Transmit data buffer / Transmit data buffer union SCIFFTX_REG SCIFFTX; / FIFO transmit register union SCIFFTX_REG SCIFFTX; / FIFO transmit register union SCIFFRX_REG SCIFFRX; / FIFO recieve register union SCIFFRX_REG SCIFFRX; / FIFO reciev

57、e register union SCIFFCT_REG SCIFFCT; / FIFO control register union SCIFFCT_REG SCIFFCT; / FIFO control register Uint16 rsvd2; / reserved Uint16 rsvd2; / reserved Uint16 rsvd3; / reserved Uint16 rsvd3; / reserved union SCIPRI_REG SCIPRI; / FIFO Priority control union SCIPRI_REG SCIPRI; / FIFO Priori

58、ty control ; ;extern volatile struct SCI_REGS extern volatile struct SCI_REGS SciaRegs;SciaRegs;extern volatile struct SCI_REGS Sextern volatile struct SCI_REGS ScibRegscibRegs; ;#endif #endif /=/=/ No more./ No more./=/=例6-5 对SCICCR按位进行操作SciaRegs.SCICCR.bit.STOPBITS=0; /1SciaRegs.SCICCR.bit.STOPBIT

59、S=0; /1位停止位位停止位SciaRegs.SCICCR.bit.PARITYENA=0; /SciaRegs.SCICCR.bit.PARITYENA=0; /禁止极性校验功能禁止极性校验功能SciaRegs.SCICCR.bit.LOOPBKENA=0; /SciaRegs.SCICCR.bit.LOOPBKENA=0; /禁止回送测试模式功能禁止回送测试模式功能SciaRegs.SCICCR.bit.ADDRIDLE_MODE=0; /SciaRegs.SCICCR.bit.ADDRIDLE_MODE=0; /空闲线模式空闲线模式SciaRegs.SCICCR.bit.SCICHAR

60、=7; /8SciaRegs.SCICCR.bit.SCICHAR=7; /8位数据位位数据位操作方法操作方法1例6-6 对SCICCR整体进行操作SciaRegs.SCICCR.all=0 x0007;SciaRegs.SCICCR.all=0 x0007;操作方法操作方法2例6-7 对SCIHBAUD和SCILBAUD进行操作SciaRegs.SCIHBAUD=0;SciaRegs.SCIHBAUD=0;SciaRegs.SCILBAUD=0 xF3;SciaRegs.SCILBAUD=0 xF3;SCIHBAUDSCIHBAUD和和SCILBAUDSCILBAUD在结构体中定义是在结构体

温馨提示

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

最新文档

评论

0/150

提交评论