c语言用位域方式定义scictl,使用C语言操作SCI寄存器与CMD文件的编写研究.doc

使用C语言操作SCI寄存器与CMD文件的编写

姓名: 金鸽

专业:电子与通信工程

学号:201422172172

导师: 齐林

寄存器的C语言访问

DSP的寄存器能够实现对系统和外设功能的配置和控制,因此在DSP的开发过程中,对于寄存器的操作是极为重要的,也是很频繁的,也就是说对寄存器的操作是否方便会直接影响到DSP的开发是否方便。F2812为大家提供了位定义和寄存器结构体的方式,能够很方便地实现对DSP内部急促你的访问和控制。

SCI寄存器

F2812的SCI模块具有相同的串行通信接口SCIA和SCIB,也就是说体现到硬件上的话,F2812支持两个串口。SCIA和SCIB就像双胞胎一样,具有相同的寄存器文件,如下表所示为SCIA寄存器。

从表中可看到,外设SCIA的每一个寄存器都占据1字节,即16位宽度。从其地址分布来看,SCIA的寄存器地址00x0000705F,中间缺少了00x0000705D,0x0000705E.上表中列出的寄存器位于F2812存储器空间的外设帧2内,是在物理上实实在在存在的存储器单元上。实际上,这些寄存器就是定义了具体功能的存储器单元,系统会根据这些存储单元中具体的配置来进行工作。

使用位域定义的方法定义寄存器

位域,就是把一个字节中得二进制位划分为几个不同的区域,并说明每个区域的位数。每个域都有一个域名,允许在程序中按域名进行操作。位域的定义与位域变量的说明同结构体定义何其成员说明类似,其语法格式为:

Struct位域结构名

{

类型说明符 位域名1:位域长度

类型说明符 位域名1:位域长度

类型说明符 位域名1:位域长度

};

其中,类型说明符就是基本的数据类型,可以是int、char型等。位域名可以任意取,能够反映其位域的功能就好,位域长度是指这个位域是由多少个位组成的。

说明:

? ? ? 1)位域的定义必须按从右向左的顺序,也就是说从最低位开始 定义。

? ? ? 2)一个位域必须存储在同一个字节中,不能跨两个字节。如果一个字节的剩余空间不够存放另一个位域时,?应该从另一个字节开始存放该域,如下例。

? ? ? 3)位域的长度不能超过一个字节,也就是说一个位域不能超过8位。

? ? ? 4)位域可以无位域名,这时,它只用作填充或者调整位置。无名的位域不能使用,如下例。

cpp]?view plaincopy

Struct?bs??

{??

?int?a:?4;??

?int?:?0;???//?空域??

?int?b:?5;??//?从下一个字节开始存放该域??

?int?c:?3;??

};??

??

Struct?bs??

{??

?int?a:?5;??

?int?:?3;???//?无名的位域无法使用??

?int?b:?6;?????

?int?c:?2;??

};??

SCIA模块所有的寄存器都是8位的,当一个寄存器被访问时,寄存器数据位于低8位,高8位为0.SCICCR的D0~D2为字符长度控制位SCICHAR,占据了3位。D3为SCI多处理器模式控制位ADDRIDL_MODE,占据1位。D4为SCI回送从测试模式使能位LOOP_BKENA,占据1位。D5为SCI极性使能位PARITYENA,占据1位。D6为SCI奇偶极性使能位PARITY,占据1位。D7位SCI结束位的个数STOPBITS,也占据1位。D8~D15为保留,共8位。下面就是用位于方式定义SCICCR。

[cpp]?view plaincopy

Struct?SCICCR_BITS??

{??

??Uint16??SCICHAR:??3;?????????//??2?:?0??????字符长度控制位?????

??Uint16??ADDRIDLE_MODE:??1;???//??3??????????多处理器模式控制位??

??Uint16??LOOPBACKENA:??1;?????//??4??????????回送测试模式使能位??

??Uint16??PARITYENA:??1;???????//??5??????????极性使能位??

??Uint16??PARITY:??1;??????????//??6??????????奇偶极性选择位??

??Uint16??STOPBITS:??1;????????//??7??????????停止位个数??

??Uint16??rsvd1:??8;???????????//??15:8???????保留位??

};

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
YOLO高分设计资源源码,详情请查看资源内容中使用说明 YOLO高分设计资源源码,详情请查看资源内容中使用说明 YOLO高分设计资源源码,详情请查看资源内容中使用说明 YOLO高分设计资源源码,详情请查看资源内容中使用说明YOLO高分设计资源源码,详情请查看资源内容中使用说明YOLO高分设计资源源码,详情请查看资源内容中使用说明YOLO高分设计资源源码,详情请查看资源内容中使用说明YOLO高分设计资源源码,详情请查看资源内容中使用说明YOLO高分设计资源源码,详情请查看资源内容中使用说明YOLO高分设计资源源码,详情请查看资源内容中使用说明YOLO高分设计资源源码,详情请查看资源内容中使用说明YOLO高分设计资源源码,详情请查看资源内容中使用说明YOLO高分设计资源源码,详情请查看资源内容中使用说明YOLO高分设计资源源码,详情请查看资源内容中使用说明YOLO高分设计资源源码,详情请查看资源内容中使用说明YOLO高分设计资源源码,详情请查看资源内容中使用说明YOLO高分设计资源源码,详情请查看资源内容中使用说明YOLO高分设计资源源码,详情请查看资源内容中使用说明YOLO高分设计资源源码,详情请查看资源内容中使用说明YOLO高分设计资源源码,详情请查看资源内容中使用说明YOLO高分设计资源源码,详情请查看资源内容中使用说明YOLO高分设计资源源码,详情请查看资源内容中使用说明YOLO高分设计资源源码,详情请查看资源内容中使用说明YOLO高分设计资源源码,详情请查看资源内容中使用说明YOLO高分设计资源源码,详情请查看资源内容中使用说明YOLO高分设计资源源码,详情请查看资源内容中使用说明

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值