使用C语言操作DSP的寄存器

上传人:jun****875 文档编号:23872203 上传时间:2021-06-12 格式:PPT 页数:15 大小:278.31KB
返回 下载 相关 举报
使用C语言操作DSP的寄存器_第1页
第1页 / 共15页
使用C语言操作DSP的寄存器_第2页
第2页 / 共15页
使用C语言操作DSP的寄存器_第3页
第3页 / 共15页
点击查看更多>>
资源描述
第6章 使用C语言操作DSP的寄存器手把手教你学DSP基于TMS320X281X北京航空航天大学出版社 作者:顾卫钢HELLODSP:专业的DSP开发工具和方案供应商,可定制承接项目欢迎访问: 联系方式:13776600442手把手教你学基于北京航空航天大学出版社作者:顾卫钢 6.1 寄存器的C语言访问 由于DSP的寄存器能够实现对系统和外设功能的配置与控制,因此在DSP的开发过程中,对于寄存器的操作是极为重要的,也是很频繁的,也就是说对寄存器的操作是否方便会直接影响到DSP的开发是否方便。幸好,F2812为大家提供了位定义和寄存器结构体的方式,能够很方便的实现对DSP内部寄存器的访问和控制。 6.1.1 了解SCI的寄存器寄存器名地址占用空间/1 6 b功能描述SCICCR 0 x0 0 0 0 7 0 5 0 1 SCI-A通信控制寄存器SCICTL1 0 x0 0 0 0 7 0 5 1 1 SCI-A控制寄存器1SCIHBAUD 0 x0 0 0 0 7 0 5 2 1 SCI-A波特率设置寄存器高字节 SCILBAUD 0 x0 0 0 0 7 0 5 3 1 SCI-A波特率设置寄存器低字节SCICTL2 0 x0 0 0 0 7 0 5 4 1 SCI-A控制寄存器2SCIRXST 0 x0 0 0 0 7 0 5 5 1 SCI-A接收状态寄存器SCIRXEMU 0 x0 0 0 0 7 0 5 6 1 SCI-A接收仿真数据缓冲寄存器SCIRXBUF 0 x0 0 0 0 7 0 5 7 1 SCI-A接收数据缓冲寄存器SCITXBUF 0 x0 0 0 0 7 0 5 9 1 SCI-A发送数据缓冲寄存器SCIFFTX 0 x0 0 0 0 7 0 5 A 1 SCI-A FIFO发送寄存器 6.1.2 使用位定义的方法定义寄存器所谓“位域”就是把一个字节中的二进制位划分为几个不同的区域,并说明每个区域的位数。每个域都有一个域名,允许在程序中按域名进行操作。位域的定义和位域变量的说明同结构体定义和其成员说明类似,其语法格式为:Struct 位域结构名 类型说明符 位域名1:位域长度 类型说明符 位域名2:位域长度 类型说明符 位域名n:位域长度; 例6-1 位域定义struct bs /定义位域bs int a:8; int b:2; int c:6; 例6-2 用位域定义SCICCRstruct SCICCR_BITS Uint16 SCICHAR:3; / 2:0 字符长度控制位 Uint16 ADDRIDLE_MODE:1; / 3 多处理器模式控制位 Uint16 LOOPBKENA:1; / 4 回送测试模式使能位 Uint16 PARITYENA:1; / 5 极性使能位 Uint16 PARITY:1; / 6 奇/偶极性选择位 Uint16 STOPBITS:1; / 7 停止位个数 Uint16 rsvd1:8; / 15:8 保留;struct SCICCR_BITS bit;bit.SCICHAR=7; /SCI字符长度控制位为8位 例6-3 SCICCR的共同体定义union SCICCR_REG Uint16 all; /可实现对寄存器整体操作 struct SCICCR_BITS bit; /可实现位操作;union SCICCR_REG SCICCR;SCICCR.all=0 x007F;SCICCR.bit.SCICHAR=5; 例6-4 SCI寄存器的结构体文件 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; 例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位数据位 例6-6 对SCICCR整体进行操作SciaRegs.SCICCR.all=0 x0007; 例6-7 对SCIHBAUD和SCILBAUD进行操作SciaRegs.SCIHBAUD=0;SciaRegs.SCILBAUD=0 xF3; 6.2 寄存器文件的空间分配n使用DATA_SECTION方法将寄存器文件分配到数据空间 n将数据段映射到寄存器对应的存储空间 例6-8 将变量分配到数据段#pragma DATA_SECTION(SciaRegs,SciaRegsFile);volatile struct SCI_REGS SciaRegs;#pragma DATA_SECTION(ScibRegs,ScibRegsFile);volatile struct SCI_REGS ScibRegs; 例6-9 将数据段映射到寄存器对应的存储空间MEMORY PAGE 1 : SCI_A : origin = 0 x007050, length = 0 x000010 SCI_B : origin = 0 x007750, length = 0 x000010 SECTIONS SciaRegsFile : SCI_A, PAGE = 1 ScibRegsFile : SCI_B, PAGE = 1
展开阅读全文
相关资源
相关搜索

最新文档


当前位置:首页 > 图纸专区 > 课件教案


copyright@ 2023-2025  zhuangpeitu.com 装配图网版权所有   联系电话:18123376007

备案号:ICP2024067431-1 川公网安备51140202000466号


本站为文档C2C交易模式,即用户上传的文档直接被用户下载,本站只是中间服务平台,本站所有文档下载所得的收益归上传人(含作者)所有。装配图网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。若文档所含内容侵犯了您的版权或隐私,请立即通知装配图网,我们立即给予删除!