您好,欢迎访问三七文档
当前位置:首页 > 行业资料 > 酒店餐饮 > 第3章_TMS320F2812外设的C语言程序设计
第3章TMS320F2812外设的C语言程序设计学习重点掌握CCS工程文档的基本结构、功能及特点。掌握采用结构体、共用体和位定义实现对DSP外设寄存器的结构定义和管理。CCS中CMD文件的功能、定义。如何对寄存器进行配置。课程内容1.CCS工程文档结构介绍;2.利用传统的#define方法定义DSP寄存器;3.利用位定义、结构体和共用体定义DSP寄存器;4.举例说明。1.CCS工程文档结构介绍;在CCS中调试程序的一般步骤打开volume1文件夹内的Volume1.pjt(系统自带的程序)。点击编译工具栏的rebuildall按钮,开始编译工程volume1.pjt。下载编译结果到DSP开发板。执行程序。在CCS中调试程序的一般步骤如何设置断点单步调试Source-singlestep就是按一下,走一步的模式。Source-stepover这个按钮是指在单步执行时,如果在函数内遇到子函数,则不会进入子函数内单步执行,而是将子函数整个执行完再停止,也就是把子函数整个作为一步。Source-stepout当单步执行到子函数内时,用stepout就可以执行完子函数余下部分,并返回到上一层函数。如何使用watchwindow其他一些操GomainSetPCtocursor在CCS中调试程序的一般步骤统计代码运行时间点击菜单栏中的“Profile”“Clock””Enable”,来使能Clock功能。接下来点击“Profile”“Clock”“View”,在CCS最下面会出现一个类似于秒表的工具,旁边显示数字“0”,通过设置断点观察始终数字的变化。2.利用传统的#define方法定义DSP寄存器首先定义各寄存器的符号及其对应的入口地址;#defineSCICCRA(volatileUint16*)0x7050#defineSCICTRL1A(volatileUint16*)0x7051……利用指针形式访问寄存器;*SCICTL1A=0x0003;*SCICTL1B|=0x0001;传统的#define方法定义DSP寄存器优缺点优点:定义简单、快速、容易分类;直接采用寄存器的名字进行定义,易于操作。缺点:对寄存器的位操作比较困难;不利于在CCS内跟踪调试;3.利用位定义、结构体和共用体定义DSP寄存器;在头文件中定义各寄存器结构体及其变量;使用DATA_SECTION将寄存器变量映射到相应物理地址空间;在CMD文件中定义各区段物理地址及长度;通过寄存器结构体变量访问相应寄存器。在头文件中定义各寄存器结构体及其变量在DSP28_Sci.h文件中实现structSCICTL1_BITS{//bitdescriptionUint16RXENA:1;//0SCIreceiverenableUint16TXENA:1;//1SCItransmitterenableUint16SLEEP:1;//2SCIsleepUint16TXWAKE:1;//3TransmitterwakeupmethodUint16rsvd:1;//4reservedUint16SWRESET:1;//5SoftwareresetUint16RXERRINTENA:1;//6RecieveinterruptenableUint16rsvd1:9;//15:7reserved};unionSCICTL1_REG{Uint16all;structSCICTL1_BITSbit;};在头文件中定义各寄存器结构体及其变量structSCI_REGS{unionSCICCR_REGSCICCR;//CommunicationscontrolregisterunionSCICTL1_REGSCICTL1;//Controlregister1Uint16SCIHBAUD;//Baudrate(high)registerUint16SCILBAUD;//Baudrate(low)registerunionSCICTL2_REGSCICTL2;//Controlregister2unionSCIRXST_REGSCIRXST;//RecievestatusregisterUint16SCIRXEMU;//Recieveemulationbufferregister……};//SCIExternalReferences&FunctionDeclarations:externvolatilestructSCI_REGSSciaRegs;externvolatilestructSCI_REGSScibRegs;使用DATA_SECTION将寄存器变量映射到相应物理地址空间在DSP28_GlobalVariableDefs.c文件中实现……#pragmaDATA_SECTION(SciaRegs,SciaRegsFile);volatilestructSCI_REGSSciaRegs;#pragmaDATA_SECTION(ScibRegs,ScibRegsFile);volatilestructSCI_REGSScibRegs;……在CMD文件中定义各区段物理地址及长度MEMORY{PAGE0:PRAMH0:origin=0x3f8000,length=0x001000PAGE1:/*SARAM*/RAMM0:origin=0x000000,length=0x000400RAMM1:origin=0x000400,length=0x000400/*PeripheralFrame0:*/DEV_EMU:origin=0x000880,length=0x000180FLASH_REGS:origin=0x000A80,length=0x000060CSM:origin=0x000AE0,length=0x000010XINTF:origin=0x000B20,length=0x000020CPU_TIMER0:origin=0x000C00,length=0x000008CPU_TIMER1:origin=0x000C08,length=0x000008CPU_TIMER2:origin=0x000C10,length=0x000008PIE_CTRL:origin=0x000CE0,length=0x000020PIE_VECT:origin=0x000D00,length=0x000100/*PeripheralFrame1:*/ECAN_A:origin=0x006000,length=0x000100ECAN_AMBOX:origin=0x006100,length=0x000100/*PeripheralFrame2:*/SYSTEM:origin=0x007010,length=0x000020SPI_A:origin=0x007040,length=0x000010SCI_A:origin=0x007050,length=0x000010XINTRUPT:origin=0x007070,length=0x000010GPIOMUX:origin=0x0070C0,length=0x000020GPIODAT:origin=0x0070E0,length=0x000020ADC:origin=0x007100,length=0x000020EV_A:origin=0x007400,length=0x000040EV_B:origin=0x007500,length=0x000040SPI_B:origin=0x007740,length=0x000010SCI_B:origin=0x007750,length=0x000010MCBSP_A:origin=0x007800,length=0x000040/*CSMPasswordLocations*/CSM_PWL:origin=0x3F7FF8,length=0x000008/*SARAM*/DRAMH0:origin=0x3f9000,length=0x001000}SECTIONS{/*Allocateprogramareas:*/.reset:PRAMH0,PAGE=0.text:PRAMH0,PAGE=0.cinit:PRAMH0,PAGE=0/*AllocatePeripheralFrame0RegisterStructures:*/CpuTimer0RegsFile:CPU_TIMER0,PAGE=1CpuTimer1RegsFile:CPU_TIMER1,PAGE=1CpuTimer2RegsFile:CPU_TIMER2,PAGE=1PieCtrlRegsFile:PIE_CTRL,PAGE=1PieVectTable:PIE_VECT,PAGE=1/*AllocatePeripheralFrame1RegisterStructures:*/SysCtrlRegsFile:SYSTEM,PAGE=1SpiaRegsFile:SPI_A,PAGE=1SciaRegsFile:SCI_A,PAGE=1AdcRegsFile:ADC,PAGE=1EvaRegsFile:EV_A,PAGE=1EvbRegsFile:EV_B,PAGE=1ScibRegsFile:SCI_B,PAGE=1……}通过寄存器结构体变量访问相应寄存器SciaRegs.SCICCR.all=0x07;//8位数据位,空闲线模式,禁止会送测试模式,无奇偶校验,1位结束位SciaRegs.SCICTL1.all=0x03;//SCIA发送器和接收器使能SciaRegs.SCICTL2.all=0x03;//接收器缓冲/中断使能,SCITXBUF寄存器中断使能SciaRegs.SCIHBAUD=0x00;SciaRegs.SCILBAUD=0xF3;//波特率为19200SciaRegs.SCICTL1.all=0x23;//重启SCI程序举例LED控制程序
本文标题:第3章_TMS320F2812外设的C语言程序设计
链接地址:https://www.777doc.com/doc-3827423 .html