【2017年整理】使用C语言操作DSP的寄存器.pptVIP

【2017年整理】使用C语言操作DSP的寄存器.ppt

  1. 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
  2. 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  3. 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
  4. 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
  5. 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们
  6. 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
  7. 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
【2017年整理】使用C语言操作DSP的寄存器

第6章 使用C语言操作DSP的寄存器;6.1 寄存器的C语言访问;6.1.1 了解SCI的寄存器;6.1.1 了解SCI的寄存器;6.1.1 了解SCI的寄存器;这些寄存器位于F2812存储器空间的外设帧2内,是在物理上实际存在的存储器单元。 外设帧:Peripheral Frames 0、1、2三个外设帧映射空间及其包含的相关寄存器如下:;6.1.2 使用位定义的方法定义寄存器;例6-1 位域定义;;struct bs //定义位域bs { int a:4; int :0; //空域 int b:5; //从第二个字节开始存放 int c:3; };;位域的长度不能大于一个字节的长度,即,一个位域不能超过8位。 位域可以无位域名,此时,只用作填充或调整位置,无名位域不能使用;以SCIA的通信控制寄存器SCICCR为例来说明C语言用位域方法来定义寄存器;SCIA的所有寄存器都是8位的,当一个寄存器被访问时,寄存器数据位于低8位,高8位为0。 D0~D2 字符长度控制位:3位 D3 SCI多处理模式控制位:1位 D4 回送测试模式使能位:1位 D5 SCI奇偶校验使能位:1位 D6 奇偶校验位选择: 1位 D7 SCI结束位的个数: 1位 D8~D15 保留位:8位 ;例6-2 用位域定义SCICCR;与传统#define 方法比较:;注意以下几点: (1)寄存器名出现的顺序必须与它们在内存中被安排的顺序相同; (2)在结构体中,通过使用保留变量(rsvd1,rsvd2 等)来预留内存中的保留位置。这种保留结构仅仅用以预留内存中的空间; (3)Uint16 和Uint32 分别是无符号16 位或者32 位数的类型定义,在DSP281x 中,则用来定义无符号整型和无符号长整型。这样使用起来就方便一些。相应的类型定义声明由DSP281x_Device.h 文件建立。 2)声明可访问寄存器的变量 寄存器结构体类型可被用于声明一个可访问寄存器的变量,对器件的每个外设都采用这一相同的做法,同一种外设的复用外设可以采用同样的结构体类型定义。例如,如果一个器件上有3 个CPU-Timers,可以创建如下所示的3 个具有“struct CPUTIMER_REGS”结构体类型的变量。;例6-3 SCICCR的共同体定义;例6-3 SCICCR的共同体定义;struct SCI_REGS { union SCICCR_REG SCICCR; //通信控制寄存器 union SCICTL1_REG SCICTL1; // 控制寄存器1 Uint16 SCIHBAUD; // 波特率寄存器(高字节) Uint16 SCILBAUD; // 波特率寄存器(低字节) union SCICTL2_REG SCICTL2; // 控制寄存器2 union SCIRXST_REG SCIRXST; // 接收状态寄存器 Uint16 SCIRXEMU; // 接收仿真缓冲寄存器 union SCIRXBUF_REG SCIRXBUF; // 接收数据寄存器 Uint16 rsvd1; // 保留 Uint16 SCITXBUF; // 发送数据缓冲寄存器 union SCIFFTX_REG SCIFFTX; // FIFO 发送寄存器 union SCIFFRX_REG SCIFFRX; // FIFO 接收寄存器 union SCIFFCT_REG SCIFFCT; // FIFO 控制寄存器 Uint16 rsvd2; // 保留 Uint16 rsvd3; // 保留 union SCIPRI_REG SCIPRI; // FIFO 优先级控制寄存器 }; extern volatile struct SCI_REGS SciaRegs; extern volatile struct SCI_REGS ScibRegs;;/**********************************************************************

文档评论(0)

liangyuehong + 关注
实名认证
文档贡献者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档