目录

1 c语言与汇编语言器

2 配置SCI寄存器

2.1 了解SCI寄存器

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

2.2.1 位域

2.2.2 声明共同体

2.2.3 结构体

2.2.4 查看寄存器的值

2.3 寄存器文件空间分配


本节内容看懂之后主要是头文件程序的解析。

1 c语言与汇编语言器

一些对时间要求特别高的时候需要嵌入一些汇编语言,其他时候使用c语言通过位定义和寄存器结构体的方式来实现对dsp寄存器进行访问和控制。

2 配置SCI寄存器

2.1 了解SCI寄存器

前面我们讲过2812有两个SCI寄存器(SCIA和SCIB),可以做成两个串口(2RS232/2RS484/RS232+RS485)

  • 首先我们查看寄存器的寄存器文件

以SCIA为例,第一列表示他有13个寄存器可以操作,并且都以SCI开头进行命名;第二列表示地址,即该寄存器所在的位置;后面的占用空间表示这个地址内的数据宽度,通过更改这些寄存器的数据就可以改变相应寄存器的功能。注意寄存器地址非连续,有缺失值。

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

2.2.1 位域

定义:一个字节中的二进制位划分为几个不同的区域,并说明每个区域的位数。

语法结构如下所示

注意:语法最后有分号。

注意:

1 位域声明顺序从右到左

2 位域的定义不能横跨字节

若例6-1,中a长度为5,b为3,则定义错误,在此情况下b要横跨两个字节

3 位域不能大于8个字节,否则与前面第二条冲突

4 可以没有域名,此时的作用是调整字节的顺序。如下所示

注意:保留位也需要定义。

具体位域分区如下所述:

2.2.2 声明共同体

作用:有时候需要对整个寄存器进行操作,这时通过声明共同体来进行操作;既可以对整体进行操作,也可以按位进行操作。

定义:

结构体和共同体的区别:

结构体分配空间按所有成员占据的总和来分配;

共同体的空间是共用的,如例6-3中:unit16与bit共用的是一段空间,在一个时间只有一个共同体使用。

2.2.3 结构体

SCI中包含了很多寄存器,为了方便管理,在dsp中通过结构体的方法来实现。

注意:

结构体当中有很多union共同体,既可以整体对寄存器进行操作,也可以对寄存器进行位操作;但unit16类型的只能进行寄存器操作。

保留项也被定义了,用rsvd代替,但没有用处。

在定义结构体之后,需要声明SciaRegsScibRegs,表示scia与scib寄存器;关键字extern代表全局变量;volatile表示寄存器的值易变,可以被外部硬件和外部代码改变,但如果没有这个关键字,则该寄存器的值只能被程序代码改变。

函数调用:

代码分析:

SciaRegs.SCICCR.bit.STOPBITS

首先SciaRegs.SCICCR这一段代码是结构体定义的,

找SCICCR的声明

下一位SciaRegs.SCICCR.bit,从函数声明处得知函数原来应该是SCICCR_REG,在共同体中存在的下一位bit,他是位域定义,找他的声明处

顺藤摸瓜也就找到了SciaRegs.SCICCR.bit.STOPBITS寄存器

union共同体,既可以整体对寄存器进行操作(.all),也可以对寄存器进行位操作(.bit);但unit16类型的只能进行寄存器操作,如下所示:

2.2.4 查看寄存器的值

2.3 寄存器文件空间分配

why:代表寄存器的变量如何与物理寄存器结合起来的?

小白能读懂的 《手把手教你学DSP(TMS320X281X)》第六章 使用c语言操作dsp寄存器(以SCI为例进行说明))相关推荐

  1. 《手把手教你学STM32》—MPU6050六轴传感器实验

    预备知识(基于STM32开发板(正点原子)) 1.MPU6050简介 1.1.MPU6050简介-什么是MPU6050? MPU6050是InvenSense公司推出的全球首款整合性6轴运动处理组件, ...

  2. 培训讲师的自我修养——《手把手教你学Java》

    当前,人才是困扰IT企业发展的第一大问题,企业间竞争的本质就是人才的竞争.然而人才却有"结构性过剩"的问题,就是因为有高深的理论.尖端的技术.耀眼的学位的"人材" ...

  3. 手把手教你学51单片机——函数进阶与按键

    目录 写在前面 一.单片机最小系统解析 1.1电源 1.2晶振 1.3复位电路 二.C语言--函数 2.1函数的调用 2.2函数的形参和实参 三.按键 3.1独立按键 3.2独立按键控制led数码管显 ...

  4. 手把手教你学Python之文件操作(一文掌握文件操作)

    目录 1.Python中文本文件的读写 2.Python中常用的文件与文件夹操作方法 3.Python中Excel文件的读写 4.Python读取Excel文件案例​ 为了保存数据,方便修改和分享,数 ...

  5. 第11章 UART 串口通信(手把手教你学51单片机pdf部分)

    手把手教你学51单片机-C语言版.pdf  

  6. python global用法_14_手把手教你学Python之函数(下)

    变量作用域:根据变量定义的位置,可将变量分为全局变量和局部变量. 全局变量:定义在函数外面的变量,可以在多个函数中进行访问,但不能执行赋值操作.如果有赋值语句,相当于创建了一个同名的局部变量: 局部变 ...

  7. 手把手教你如下在Linux下如何写一个C语言代码,编译并运行

    文章目录 手把手教你如下在Linux下如何写一个C语言代码,编译并运行 打开Ubuntu终端 创建 helloworld.c 编译C文件 手把手教你如下在Linux下如何写一个C语言代码,编译并运行 ...

  8. 手把手教你学Dapr - 5. 状态管理

    介绍 使用状态管理,您的应用程序可以将数据作为键/值对存储在支持的状态存储中. 您的应用程序可以使用 Dapr 的状态管理 API 使用状态存储组件来保存和读取键/值对,如下图所示.例如,通过使用 H ...

  9. oracle数据库更新语句_20_手把手教你学Python之操作数据库

    数据库是数据的仓库,将大量数据按照一定的方式组织并存储起来,方便进行管理和维护,例如快速检索和统计等.数据库的主要特点: 以一定的方式组织.存储数据: 能为多个用户共享: 与程序彼此独立. -- 数据 ...

  10. c++从入门到精通_资料下载:从入门到精通,手把手教你学DSP

    学习一个东西首先是了解它,比如DSP到底是什么?用在什么地方?怎么用?和单片机特点有那些相同与不同?开发需要注意什么?想了解清楚这些问题自然就清楚比较清楚的认识DSP.DSP,因为它是用来做数据处理, ...

最新文章

  1. RDKit | 基于Ward方法对化合物进行分层聚类
  2. HDU-1285 确定比赛名次 拓扑排序
  3. 计算机基础及wps office应用_全国2019年4月自考00018《计算机应用基础》试题
  4. 云计算,拼的就是运维
  5. Dubbo Admin服务测试功能
  6. java volatile有什么用_深入解析Java中volatile关键字的作用
  7. DataTable 数字排序问题
  8. 印象笔记添加txt附件
  9. Qt与VS2005/2008的完美配合(转)
  10. hypopg1.3.0 使用-常用命令
  11. jQuery匹配各种条件的选择器用法
  12. APP开发之APP研发流程微信棋牌程序制作
  13. FME中的栅格数据操作之十二——矢量数据栅格化
  14. 视频回放 | Open Rack V3 - 新一代机架和电源
  15. 【JZOJ3339】wyl8899和法法塔的游戏【暴力】
  16. 关于Fabric中shim包的问题
  17. 第五周 项目二 建立链栈算法库
  18. android中的无线通信蓝牙
  19. 租车APP都哪些,租车平台成功案例
  20. steam服务器维护6月28,绝地求生6月28日更新到几点 吃鸡更新维护公告

热门文章

  1. python excel图表 导出word模板_使用python将Excel数据填充Word模板并生成Word
  2. 固态硬盘用软件测试温度高,硬盘温度过高的原因,固态硬盘温度过高-
  3. LeetCode初级算法笔记整理
  4. 大众奥迪车 UDS协议ECU的诊断
  5. 台式计算机拆机步骤ppt,三相异步电动机拆装的方法和步骤.PPT
  6. 自动泊车停车位检测算法
  7. 安装Python3.8.8
  8. [行业报告] 芒果发布8月份国内移动广告平台数据报告
  9. 解决:cannot deserialize from Object value (no delegate- or property-based Creator)
  10. MAC地址厂商信息查询