- 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
 - 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
 - 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
 - 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
 - 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
 - 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
 - 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
 
                        查看更多
                        
                    
                
第四章 使用C语言操作DSP 
的寄存器 
            4.1 寄存器的C语言访问 
            4.2 寄存器文件的空间分配 
                         程序设计语言 
 从机器语言开始,程序设计语言经历了一个发展过程, 
   如:机器语言、汇编语言、高级语言(C、C+++等)。 
机器语言是由二进制代码“0”和“1”组成的,能够被硬 
   件(计算机、单片机、DSP等)直接识别和执行的语言。 
   最终烧写到硬件的就是机器语言。用机器语言编写程序 
   难学、难记、难懂、难用,很少使用。 
 汇编语言是一种符号化语言,它使用助记符代替二进制 
   指令。汇编语言比机器语言易学易懂,它的优点是效率 
   高、占用空间少、实时性高,但由于依赖具体硬件,因 
   此可移植性差,编写大程序时调试复杂。 
 C语言是一门高级语言,易学易用。它支持自上而下的 
   结构化程序设计,可大大缩短应用程序的开发周期,使 
   软件的可读性增加,编写效率明显提高,可移植性好。 
   因此C语言已成为目前最流行的单片机、DSP开发语言。 
 F2812 的开发既支持汇编语言,也支持C语言,但比较 
   多的时候还是C语言,只有在对时间要求非常严格的地 
   方才会插入汇编语言。 
 开发时,需要频繁地对DSP寄存器进行配置,本章以 
   F2812 的外设SCI为例,详细分析如何使用C语言中结构 
   体和位定义的方法来实现对DSP寄存器的操作。 
 参考资料: 
 Programming TMS320x28xx and 28xxx Peripherals in 
   C/C++.pdf 
 TMS320F28x Serial Communications Interface (SCI) 
   Reference Guide.pdf 
4.1 寄存器的C语言访问 
传统方法: 
   #define    CPUTIMER0           (volatile unsigned long *) 0x0C00 
缺点: 
     不便于对寄存器的值进行位操作; 
     无法单独查看寄存器的某一位。 
F2812提供了位定义和寄存器结构体的方式,能够很方 
   便地实现对DSP内部寄存器的访问和控制。 
 第一步:采用结构体、共用体、位域结构体定义寄存 
   器变量。 
 第二步:通过pragma伪指令将寄存器变量分配到数 
   据段。 
 第三步:通过MEMORY伪指令指示寄存器的实际硬 
   件空间。 
 第四步:通过SECTIONS伪指令将寄存器数据段分配 
   到实际硬件空间。 
 4.1.1 了解SCI的寄存器 
      F2812的SCI模块具有相同的串行通信接口SCIA和 
SCIB,也就是说F2812支持两个串口,它们具有相同的寄 
存器文件。 
      这些寄存器就是定义了具体功能的存储单元,系统 
会根据这些存储单元中具体的配置来进行工作。 
传统方法定义SCI寄存器 
传统方法访问SCI寄存器 
4.1.2 使用位定义的方法定义寄存器 
   位域 
    是C语言中的一种数据结构。 
    “位域”就是把一个字节中的二进制位划分为几个不 
      同的区域,并说明每个区域的位数。 
    每个域都有一个域名,允许在程序中按域名进行操作。 
 位域的定义和位域变量的说明同结构体定义和其成员说 
   明类似,语法格式为: 
         Struct位域结构名 
         { 
         类型说明符 位域名1:位域长度 
         类型说明符 位域名2 :位域长度 
         ... 
         类型说明符 位域名n:位域长度 
         }; 
 类型说明符就是基本的数据类型,可以是int、char型等。 
 位域名可以任意取,能够反映其位域的功能就好。 
 位域长度是指这个位域是由多少个位组成的。 
 和结构体定义一样,大括号最后的“;”不可缺少。 
   位域也是C语言中的一种数据结构,因此需要遵循先 
声明后使用的原则。 
   上例中,声明了bs1,说明bs1是bs型的变量,共占2字 
节,其中位域a 占8位,位域b 占2位,位域c 占6位。 
关于位域定义的说明: 
1、位域的定义必须按从右往左的顺序,即从最低位开始 
定义。 
2、一个位域必须存储在同一个字节中,不能跨两个字节。 
如果一个字节所剩空间不够放一个域时,应该从下一个 
单元起存放该域。 
3、位域的长度不能大于一个字节的长度,也
                您可能关注的文档
最近下载
- 解读《GB_T 3880.2-2024一般工业用铝及铝合金板、带材 第2部分:力学性能》.docx VIP
 - ECA微生物偏差评估和调查指南2020.pdf VIP
 - 三年级下册科学青岛版20肠道传染病(课件)(共26张PPT).pptx VIP
 - 公司私车公用管理制度及私车公用协议.docx VIP
 - (完整版)格斗术教案.doc VIP
 - 金属学与热处理--热处理原理、热处理工艺习题.doc VIP
 - 《消防设施工程专业承包企业资质等级标准》.docx VIP
 - 义务教育学校校长、书记绩效考核工作实施办法(试行).doc VIP
 - 加油加气站改扩建项目申请报告.pdf VIP
 - 教学能力大赛教学实施报告【参考国赛一等奖撰写】.pdf
 
原创力文档
                        

文档评论(0)