2812 c语言程序,MS320F2812外设的C语言程序设计.ppt

《MS320F2812外设的C语言程序设计.ppt》由会员分享,可在线阅读,更多相关《MS320F2812外设的C语言程序设计.ppt(17页珍藏版)》请在人人文库网上搜索。

1、第3章 TMS320F2812外设的C语言程序设计,学习重点 掌握CCS工程文档的基本结构、功能及特点。 掌握采用结构体 、共用体和位定义实现对DSP外设寄存器的结构定义和管理。 CCS中CMD文件的功能、定义。 如何对寄存器进行配置。,课程内容,CCS工程文档结构介绍; 利用传统的#define方法定义DSP寄存器; 利用位定义、结构体和共用体定义DSP寄存器; 举例说明。,1. CCS工程文档结构介绍;,在CCS中调试程序的一般步骤,打开 volume1 文件夹内的 Volume1.pjt(系统自带的程序)。 点击 编译工具栏的 rebuild all 按钮,开始编译工程 volume1.。

2、pjt。 下载编译结果到DSP开发板。 执行程序。,在CCS中调试程序的一般步骤,如何设置断点 单步调试 Source-single step 就是按一下,走一步的模式。 Source-step over 这个按钮是指在单步执行时,如果在函数内遇到子函数,则不会进入子函数内单步 执行,而是将子函数整个执行完再停止,也就是把子函数整个作为一步。 Source-step out 当单步执行到子函数内时,用 step out 就可以执行完子函数余下部分,并返回到上 一层函数。 如何使用 watch window 其他一些操 Go main Set PC to cursor,在CCS中调试程序的一般步。

3、骤,统计代码运行时间 点击菜单栏中的“Profile”“Clock”Enable”,来使能 Clock功能。接下来点击“Profile”“Clock”“View”, 在 CCS 最下面会出现一个类似于秒表的工具,旁边显示数字“0”,通过设置断点观察始终数字的变化。,2. 利用传统的#define方法定义DSP寄存器,首先定义各寄存器的符号及其对应的入口地址; #define SCICCRA(volatile Uint16 *) 0 x7050 #define SCICTRL1A(volatile Uint16 *) 0 x7051 利用指针形式访问寄存器; *SCICTL1A=0 x0003;。

4、 *SCICTL1B|=0 x0001;,传统的#define方法定义DSP寄存器优缺点,优点: 定义简单、快速、容易分类; 直接采用寄存器的名字进行定义,易于操作。 缺点: 对寄存器的位操作比较困难; 不利于在CCS内跟踪调试;,3. 利用位定义、结构体和共用体定义DSP寄存器;,在头文件中定义各寄存器结构体及其变量; 使用DATA_SECTION将寄存器变量映射到相应物理地址空间; 在CMD文件中定义各区段物理地址及长度; 通过寄存器结构体变量访问相应寄存器。,在头文件中定义各寄存器结构体及其变量,在DSP28_Sci.h文件中实现 struct SCICTL1_BITS / bit de。

5、scription Uint16 RXENA:1; / 0 SCI receiver enable Uint16 TXENA:1; / 1 SCI transmitter enable Uint16 SLEEP:1; / 2 SCI sleep Uint16 TXWAKE:1; / 3 Transmitter wakeup method Uint16 rsvd:1; / 4 reserved Uint16 SWRESET:1; / 5 Software reset Uint16 RXERRINTENA:1; / 6 Recieve interrupt enable Uint16 rsvd1:9。

6、; / 15:7 reserved ; union SCICTL1_REG Uint16 all; struct SCICTL1_BITS bit; ;,在头文件中定义各寄存器结构体及其变量,struct SCI_REGS union SCICCR_REG SCICCR; / Communications control register union SCICTL1_REG SCICTL1; / Control register 1 Uint16 SCIHBAUD; / Baud rate (high) register Uint16 SCILBAUD; / Baud rate (low) r。

7、egister union SCICTL2_REG SCICTL2; / Control register 2 union SCIRXST_REG SCIRXST; / Recieve status register Uint16 SCIRXEMU; / Recieve emulation buffer register ;/ SCI External References ,使用DATA_SECTION将寄存器变量映射到相应物理地址空间,在DSP28_GlobalVariableDefs.c文件中实现 #pragma DATA_SECTION(SciaRegs,SciaRegsFile); 。

8、volatile struct SCI_REGS SciaRegs; #pragma DATA_SECTION(ScibRegs,ScibRegsFile); volatile struct SCI_REGS ScibRegs; ,在CMD文件中定义各区段物理地址及长度,MEMORYPAGE 0 : PRAMH0 : origin = 0 x3f8000, length = 0 x001000 PAGE 1 : /* SARAM */ RAMM0 : origin = 0 x000000, length = 0 x000400 RAMM1 : origin = 0 x000400, lengt。

9、h = 0 x000400 /* Peripheral Frame 0: */ DEV_EMU : origin = 0 x000880, length = 0 x000180 FLASH_REGS : origin = 0 x000A80, length = 0 x000060 CSM : origin = 0 x000AE0, length = 0 x000010 XINTF : origin = 0 x000B20, length = 0 x000020 CPU_TIMER0 : origin = 0 x000C00, length = 0 x000008 CPU_TIMER1 : or。

10、igin = 0 x000C08, length = 0 x000008 CPU_TIMER2 : origin = 0 x000C10, length = 0 x000008 PIE_CTRL : origin = 0 x000CE0, length = 0 x000020 PIE_VECT : origin = 0 x000D00, length = 0 x000100 /* Peripheral Frame 1: */ ECAN_A : origin = 0 x006000, length = 0 x000100 ECAN_AMBOX : origin = 0 x006100, leng。

11、th = 0 x000100,/* Peripheral Frame 2: */ SYSTEM : origin = 0 x007010, length = 0 x000020 SPI_A : origin = 0 x007040, length = 0 x000010 SCI_A : origin = 0 x007050, length = 0 x000010 XINTRUPT : origin = 0 x007070, length = 0 x000010 GPIOMUX : origin = 0 x0070C0, length = 0 x000020 GPIODAT : origin =。

12、 0 x0070E0, length = 0 x000020 ADC : origin = 0 x007100, length = 0 x000020 EV_A : origin = 0 x007400, length = 0 x000040 EV_B : origin = 0 x007500, length = 0 x000040 SPI_B : origin = 0 x007740, length = 0 x000010 SCI_B : origin = 0 x007750, length = 0 x000010 MCBSP_A : origin = 0 x007800, length =。

13、 0 x000040 /* CSM Password Locations */ CSM_PWL : origin = 0 x3F7FF8, length = 0 x000008 /* SARAM */ DRAMH0 : origin = 0 x3f9000, length = 0 x001000 ,SECTIONS /* Allocate program areas: */ .reset : PRAMH0, PAGE = 0 .text : PRAMH0, PAGE = 0 .cinit : PRAMH0, PAGE = 0 /* Allocate Peripheral Frame 0 Reg。

14、ister Structures: */ CpuTimer0RegsFile : CPU_TIMER0, PAGE = 1 CpuTimer1RegsFile : CPU_TIMER1, PAGE = 1 CpuTimer2RegsFile : CPU_TIMER2, PAGE = 1 PieCtrlRegsFile : PIE_CTRL, PAGE = 1 PieVectTable : PIE_VECT, PAGE = 1 /* Allocate Peripheral Frame 1 Register Structures: */ SysCtrlRegsFile : SYSTEM, PAGE。

15、 = 1 SpiaRegsFile : SPI_A, PAGE = 1 SciaRegsFile : SCI_A, PAGE = 1 AdcRegsFile : ADC, PAGE = 1 EvaRegsFile : EV_A, PAGE = 1 EvbRegsFile : EV_B, PAGE = 1 ScibRegsFile : SCI_B, PAGE = 1 ,通过寄存器结构体变量访问相应寄存器,SciaRegs.SCICCR.all = 0 x07; /8位数据位,空闲线模式,禁止会送测试模式,无奇偶校验,1位结束位 SciaRegs.SCICTL1.all = 0 x03; /SCIA发送器和接收器使能 SciaRegs.SCICTL2.all = 0 x03; /接收器缓冲/中断使能,SCITXBUF寄存器中断使能 SciaRegs.SCIHBAUD = 0 x00; SciaRegs.SCILBAUD = 0 xF3; /波特率为19200 SciaRegs.SCICTL1.all = 0 x23; /重启SCI,程序举例,LED控制程序。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值