c语言用位域方式定义scictl,使用C语言操作SCI寄存器与CMD文件的编写研究.doc_sxtagz的博客-程序员宝宝

技术标签: c语言用位域方式定义scictl  

使用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???????保留位??

};

版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接:https://blog.csdn.net/weixin_42513038/article/details/117247145

智能推荐

Android 屏幕适配之框架(AndroidAutoSize)(今日头条)适配_me.jessyan:autosize_jianning-wu的博客-程序员宝宝

AndroidAutoSize框架 1.链接https://github.com/JessYanCoding/AndroidAutoSize 2.使用 2.1.添加Gradle配置implementation 'me.jessyan:autosize:1.1.2'  2.2.添加AndroidManifest配置<manifest>...

Linux 格式化分区 报错Could not stat /dev/sda3 --- No such file or directory_zhaomax的博客-程序员宝宝

转自:https://yq.aliyun.com/articles/45361执行分区过程如下:[[email protected] ~]# fdisk /dev/sdaThe number of cylinders for this disk is set to 3002.There is nothing wrong with that, but this is larger than 1024...

golang中sync.Mutex和sync.RWMutex_以下关于golang sync.rwmutex说法正确的是_huslin joloo的博客-程序员宝宝

sync.Mutex互斥锁:所有goroutine都会等待释放一个goroutine的Mutex锁。Lock()、Unlock()sync.RWMutex读写互斥锁:RLock()读锁:阻止写,不阻止读。 RUnlock()Lock()写锁:和Mutex一样,读写都会被阻止。type x struct {a intaLock sync.RWMutex //给结构体单个a数据加读写互斥锁b int}...

Vue Array数组操作(变异更新、替换)_裴嘉靖的博客-程序员宝宝

今天小编写一下Array数组操作(变异更新、替换)来个v-for和key小补充,方便了解接下来的课程循环指令v-for补充:使用v-for更新已渲染的元素列表时,默认用就地复用策略;列表数据修改的时候,他会根据key值去判断某个值是否修改,如果修改,则重新渲染这一项,否则复用之前的元素;我们在使用的使用经常会使用index(即数组的下标)来作为key,但其实这是不推荐的一种使用方法;最...

引用 windows平台下Ruby on Rails环境搭建_weixin_34239592的博客-程序员宝宝

kokko的windows平台下Ruby on Rails环境搭建windows xp 下使用ruby on rails1 安装ruby,win环境下有Ruby One-Click Installer包, 下载地址为http://www.ruby-lang.org/en/downloads/ ,下完后,点击安装,一直点next, i agree,选择安装路径,(我的安...

JBOSS 下载_iteye_12188的博客-程序员宝宝

1:JBoss Application Server Downloadshttp://jbossas.jboss.org/downloads/只下载JBoss AS 7.1.1.Final AS Certified Java EE 6 Full Profile 2012-03-09 LGPL [b]Community participation only[/b]

随便推点

oracle差分备份,Oracle的Rman差异增量备份_优普艺考的博客-程序员宝宝

所谓增量备份,顾名思义即是每次备份操作那些发生了“变化”的数据块。在RMAN增量备份中有两种:Differential(差异备份)和Cumulative(增量备份)方式。由于需求这里用到的备份方式则是差异增量备份。差异增量备份概念:是备份低级别或者同级别备份以来的所有数据块,也就是要备份前期备份以来的差异数据块。在实际的备份中必须存在基础备份也就是0级备份,若没有0级备份则没有比较的对象文件,从而...

科班出身vs自学编程,他们的差距到底有多大?科班真的比自学学的好吗_C语言大叔的博客-程序员宝宝

自学编程的程序员,似乎都处于鄙视链的底端,而计算机专业的毕业生,似乎天然存在着一种优越感。自学编程和科班程序员的差距,到底有多大?这也是即将“入坑”的编程爱好者,最关心的一个问题。知识体系的差别科班出身的程序员,相对于自学编程者,具备更加完善的知识体系,在实际工作中,能更快的形成完整的任职,从而更深入地解决问题。因为大学期间,已经系统的学习了计算机知识,因此科班程序员的知识体系更加...

redis 五种数据类型和应用场景_redis的五种数据类型应用场景_奋斗的小小骚年的博客-程序员宝宝

redis提供了5中数据结构,理解每种数据结构的特点对于redis开发运维非常重要。 一、字符串字符串类型是redis最基础的数据结构,首先键是字符串类型,而且其他几种结构都是在字符串类型基础上构建的,所以字符串类型能为其他四种数据结构的学习尊定基础。字符串类型实际上可以是字符串(简单的字符串、复杂的字符串(xml、json)、数字(整数、浮点数)、二进制(图片、音频、视...

QMenu样式美化_Eloik的博客-程序员宝宝

使用qss样式表美化窗体最近想给程序添加个右键菜单,但是如果使用qt默认的样式,视感不是很佳,觉得QQ的右键菜单样式挺好看,就用qss美化一下,以便今后再次使用QMenu直接使用。先看效果:美化前:美化后:测试程序代码工程文件mymenu.h 代码如下:#ifndef MYMENU_H#define MYMENU_H#include <QWidge...

T100查询报表开发流程_t100程序复制_中山厨子的博客-程序员宝宝

1、增加主程序azzi900(查询界面,命名举例:cinr101)2、注册作业azzi910(cinr101)(Adzp270复制程序和画面,用于复制)3、迁出规格4、画面生成器adzp168,样板类型选择报表作业5、下载规格,设置字段,设置好之后,上传规格。6、Azzi901注册子程序(报表,命名举例:cinr101_x01)7、签出报表程序cinr101_x01...

java spring修改properties,Spring Properties 使用_天猫家电的博客-程序员宝宝

对 Spring 里面的 Properties 不理解的开发者可能会觉得有点乱,主要是因为配置方式很多种,使用方式也很多种。本文不是原理分析、源码分析文章,只是希望可以帮助读者更好地理解和使用 Spring Properties。Properties 的使用本文的读者都是使用过 Spring 的,先来看看 Properties 是怎么使用的,Spring 中常用的有以下几种使用方式:1. 在 xm...

推荐文章

热门文章

相关标签