使用C语言操作DSP的寄存器重点.pptVIP

  • 38
  • 0
  • 约 38页
  • 2016-08-01 发布于湖北
  • 举报
例6-5 对SCICCR按位进行操作 SciaRegs.SCICCR.bit.STOPBITS=0; //1位停止位 SciaRegs.SCICCR.bit.PARITYENA=0; //禁止极性校验功能 SciaRegs.SCICCR.bit.LOOPBKENA=0; //禁止回送测试模式功能 SciaRegs.SCICCR.bit.ADDRIDLE_MODE=0; //空闲线模式 SciaRegs.SCICCR.bit.SCICHAR=7; //8位数据位 操作方法1 例6-6 对SCICCR整体进行操作 SciaRegs.SCICCR.all=0x0007; 操作方法2 例6-7 对SCIHBAUD和SCILBAUD进行操作 SciaRegs.SCIHBAUD=0; SciaRegs.SCILBAUD=0xF3; SCIHBAUD和SCILBAUD在结构体中定义是Unit 16型 的,即无符号整型的,只能直接给寄存器整体进行赋值 用C语言对他们进行操作: 操作方法3 DSP包含了很多寄存器,每个寄存器又有若干位域组成,每个位域也有自己的名字和功能,如何方便的操作寄存器呢? CCS3.3为我们提供帮助,写语句时如要配置停止位个数为1,需要书写语句“SciaRegs.SCICCR.bit.STOPBITS=0” 先在CCS中输入“SciaRegs”,然后输入“.”,就会弹出下拉列表框,将SCIA所有的寄存器列了出来,单击选择需要操作的寄存器“SCICCR”,然后在弹出来的变量下拉列表中选择“bit.”,继续输入“.”,这时又弹出下拉列表,把位域选择好“STOPBITS”即可。这就是CCS的感应功能,要使用该功能的前提就是工程加载了F2812的头文件。 注意:大小写必须完全一致! 只需了解其含义,不需完全背诵。 6.2 寄存器文件的空间分配 写好了寄存器数据结构,编译时,编译器会把这些变量分配到存储空间中,那么如何将这些代表寄存器数据的变量同实实在在的物理寄存器结合起来呢? 第一步:使用DATA_SECTION方法将寄存器文件分配到数据空间 中的某个数据段; 第二步:在CMD文件中,将这个数据段直接映射到这个外设寄存器所占的存储空间 (1)使用DATA_SECTION方法将寄存器文件分配到数据空间 编译器产生可重新定位的数据和代码模块,这些模块称为 “段”。 这些段可以根据不同的系统配置分配到相应的地址空间,各段的具体分配方式在CMD文件中定义 变量可以采用“#pragma DATA_SECTION”,编程方式为: #pragma DATA_SECTION(symbol,“section name); 变量名 数据段名 例6-8 将变量SciaRegs和ScibRegs分配到名字为SciaRegsFile和ScibRegsFile的数据段 #pragma DATA_SECTION(SciaRegs,SciaRegsFile); volatile struct SCI_REGS SciaRegs; #pragma DATA_SECTION(ScibRegs,ScibRegsFile); volatile struct SCI_REGS ScibRegs; 数据段名 例6-9 将数据段映射到SCI寄存器对应的存储空间 MEMORY { …… PAGE 1 : SCI_A : origin = 0x007050, length = 0x000010 SCI_B : origin = 0x007750, length = 0x000010 …… } SECTIONS { …… SciaRegsFile : SCI_A, PAGE = 1 ScibRegsFile : SCI_B, PAGE = 1 …… } (2)将数据段直接映射到寄存器对应的存储空间 物理地址 物理空间长度 数据段名 映射到物理地址SCI_A 说明是分配到数据空间, 0:分配到程序空间 * 第6章 使用C语言操作DSP的寄存器 北京航空航天大学出版社 作者:顾卫钢 北京航空航天大学出版社 作者:顾卫钢 电信学院:张 蕾 DSP原理及应用 6.1 寄存器的C语言访问 特殊的存储单元,具有特殊的功能、具体的含义 DSP通过对寄存器的操作能够实现对系统和外设功能的配置与控制。 在DSP的开发过程中,对于寄存器的操作是极为重要的,也是很频繁的。 对寄存器的操作是否方便会直接影响到DSP的开发是否方便。 F2812为大家提供了位定义和寄存器结构体的方式,能够很方便的实现对DS

文档评论(0)

1亿VIP精品文档

相关文档