DSP学习心得笔记.docx_第1页
DSP学习心得笔记.docx_第2页
DSP学习心得笔记.docx_第3页
DSP学习心得笔记.docx_第4页
DSP学习心得笔记.docx_第5页
已阅读5页,还剩9页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

DSP学习心得笔记- 白建成.baijc.icekoor引言:学习DSP的时间有两个多月了,收获很多新知识,我们要每天都有进步才行,以下内容没有特别的顺序,跟具自己的学习情况写的,如果有不对的地方希望指出来,如果有不懂得也可以问我,大家相互交流很重要,我的一个邮箱:欢迎联系!建立新工程过程中:问题1:GPIO_Study.c, line 61: fatal error: could not open source file DSP280x_Device.h1 fatal error detected in the compilation of GPIO_Study.c.解决方法:因为project build optionscompilerpreprocessor中,要包含的头文件的地址没有加进去,你可以找到头文件的地址,然后加进去。问题2:undefined first referenced symbol in file- -_c_int00 D:DSP studytest3DebugDSP280x_CodeStartBranch.objFS$MPY D:DSP studytest3DebugDSP280x_CpuTimers.objFS$TOL D:DSP studytest3DebugDSP280x_CpuTimers.obj error: symbol referencing errors - ./Debug/test3.out not built或者下面的问题:undefined first referenced symbol in file- -_c_int00 D:DSP studyGPIO_StudyDebugDSP280x_CodeStartBranch.obj error: symbol referencing errors - ./Debug/GPIO_Study.out not built解决办法都是下面:这个问题是因为没有加在库文件,请在project build optionslinkerlibraries中加入rts2800.lib。问题3: warning: creating .stack section with default size of 400 (hex) words. Use -stack option to change the default size. error: cant allocate .stack, size 00000400 (page 1) in RAMM1 (avail: 00000380) error: errors in input - ./Debug/GPIO_Study.out not built解决办法:这个问题是关于堆栈存储大小的问题,他是说,创建堆栈段使用与设置400个字,并建议在“堆栈操作”中改变这个与设置。这时,需要进行如下修改就可通过:project build optionsLinkerbasic,在Stack Size(-stack):填入800或者其他小于1024的数值。调试程序:在编译完成之后,要来下载程序并进行功能调试。FileLoad Program,在工程文件夹下面的Debug文件夹下,选中*.out文件,点击打开,便开始下载程序了。将*.out文件下载到目标板上2812的RAM中。注意,这里是调试,所以将程序下载到RAM。等到最后您要固化程序的时候,就得下载到FLASH了,因为断电之后,RAM里面所有的数据都会消失。(Run和Animate的区别,Run是如果遇到断点的话它就停下来了。而Animate就算遇到断点时先停止DSP内核,刷新窗口,然后接着继续启动运行,常用来连续刷新变量窗口和生成graph图形等)知识储备。添加断点:加上断点的方法很简单,只要在该行代码前双击就行。双击之后,这行代码前面会出现一个红色圆块。另外一种添加断点的方法,就是在刚才的编译工具栏上,点一下那个小手图形的按钮,前提是你要把光标移动到想要设置断点的哪一行上。使用watch window:Watch window的作用是来观察程序运行过程中的各个变量的值。调用watch window的方法是点击菜单栏的View ,watch window,这时watch window就会显示在CCS下方的信息区域;选中所要观察的变量,然后右键,在右键菜单中选择add to watch window。调试代码观察:我们在调试程序的时候经常想让程序从Main函数开使运行,点DebugGo main。 既能看到源文件中代码的执行情况,又能看到汇编指令的执行情况ViewMixed Source/Asm;关于F2812中用C语言来实现中断的说明1.首先在.cmd中定位系统中断表:MEMORYPAGE 0 : .PAGE 1 : . PIE_VECT : origin = 0x000D00, length = 0x000100. SECTIONS. PieVectTable : PIE_VECT, PAGE = 1.2.在C中制定该中断的结构体:#pragma DATA_SECTION(PieVectTable,PieVectTable);struct PIE_VECT_TABLE PieVectTable;(在DSP28_GlobalVariableDefs.C中初始化)3.用一组常数(按照中断向量的顺序)初始化该名字为PIE_VECT_TABLE的表:typedef interrupt void(*PINT)(void);这里有些一问,一下应该为函数名?/ Define Vector Table:struct PIE_VECT_TABLE / Reset is never fetched from this table. / It will always be fetched from 0x3FFFC0 in either/ boot ROM or XINTF Zone 7 depending on the state of/ the XMP/MC input signal. On the F2810 it is always/ fetched from boot ROM. PINT PIE1_RESERVED; PINT PIE2_RESERVED; PINT PIE3_RESERVED; PINT PIE4_RESERVED; PINT PIE5_RESERVED; PINT PIE6_RESERVED; PINT PIE7_RESERVED; PINT PIE8_RESERVED; PINT PIE9_RESERVED; PINT PIE10_RESERVED; PINT PIE11_RESERVED; PINT PIE12_RESERVED; PINT PIE13_RESERVED;/ Non-Peripheral Interrupts: PINT XINT13; / XINT13 PINT TINT2; / CPU-Timer2 PINT DATALOG; / Datalogging interrupt PINT RTOSINT; / RTOS interrupt PINT EMUINT; / Emulation interrupt PINT XNMI; / Non-maskable interrupt PINT ILLEGAL; / Illegal operation TRAP PINT USER0; / User Defined trap 0 PINT USER1; / User Defined trap 1 PINT USER2; / User Defined trap 2 PINT USER3; / User Defined trap 3 PINT USER4; / User Defined trap 4 PINT USER5; / User Defined trap 5 PINT USER6; / User Defined trap 6 PINT USER7; / User Defined trap 7 PINT USER8; / User Defined trap 8 PINT USER9; / User Defined trap 9 PINT USER10; / User Defined trap 10 PINT USER11; / User Defined trap 11 / Group 1 PIE Peripheral Vectors: PINT PDPINTA; / EV-A PINT PDPINTB; / EV-B PINT rsvd1_3; PINT XINT1; PINT XINT2; PINT ADCINT; / ADC PINT TINT0; / Timer 0 PINT WAKEINT; / WD ./ Group 12 PIE Peripheral Vectors: PINT rsvd12_1; PINT rsvd12_2; PINT rsvd12_3; PINT rsvd12_4; PINT rsvd12_5; PINT rsvd12_6; PINT rsvd12_7; PINT rsvd12_8;然后在使我们在.cmd文件中定义的表有以上属性:extern struct PIE_VECT_TABLE PieVectTable;(在.h文件中)4.初始化该表(在.c文件中)使之能够为主程序所使用:const struct PIE_VECT_TABLE PieVectTableInit = PIE_RESERVED, / Reserved space PIE_RESERVED, PIE_RESERVED, PIE_RESERVED, PIE_RESERVED, PIE_RESERVED, PIE_RESERVED, PIE_RESERVED, PIE_RESERVED, PIE_RESERVED, PIE_RESERVED, PIE_RESERVED, PIE_RESERVED, / Non-Peripheral Interrupts INT13_ISR, / XINT13 or CPU-Timer 1 INT14_ISR, / CPU-Timer2 DATALOG_ISR, / Datalogging interrupt RTOSINT_ISR, / RTOS interrupt EMUINT_ISR, / Emulation interrupt NMI_ISR, / Non-maskable interrupt ILLEGAL_ISR, / Illegal operation TRAP USER0_ISR, / User Defined trap 0 USER1_ISR, / User Defined trap 1 USER2_ISR, / User Defined trap 2 USER3_ISR, / User Defined trap 3 USER4_ISR, / User Defined trap 4 USER5_ISR, / User Defined trap 5 USER6_ISR, / User Defined trap 6 USER7_ISR, / User Defined trap 7 USER8_ISR, / User Defined trap 8 USER9_ISR, / User Defined trap 9 USER10_ISR, / User Defined trap 10 USER11_ISR, / User Defined trap 11/ Group 1 PIE Vectors PDPINTA_ISR, / EV-A PDPINTB_ISR, / EV-B rsvd_ISR, XINT1_ISR, XINT2_ISR, ADCINT_ISR, / ADC TINT0_ISR, / Timer 0 WAKEINT_ISR, / WD./ Group 12 E Vectors rsvd_ISR, rsvd_ISR, rsvd_ISR, rsvd_ISR, rsvd_ISR, rsvd_ISR, rsvd_ISR, rsvd_ISR, ;/-/ InitPieVectTable: /-/ This function initializes the PIE vector table to a known state./ This function must be executed after boot time./void InitPieVectTable(void)int16 i;Uint32 *Source = (void *) &PieVectTableInit;Uint32 *Dest = (void *) &PieVectTable;EALLOW; for(i=0; i built options-linker-libraries-rts2800_ml.lib,因为之前一直用它,后来改成rts2800.lib就出现这个问题了,改回去就可以了。data verification failed at address 0x8000 Please verify target memory and memory map解决方法:可能是gel的问题,重新载入几次,如果不行的话,就把仿真器重新接几次,问题就应该没有了,多数是硬件的问题。针对CCS的图像显示,一个方式为对程序中的某些变量画图,另一种方式是对DSP采集的数据画图,两者在方法上有所不同。首先声明画图很简单,只要把重要的记住就可以了,其他的尝试怎么用就OK了,不用刻意去学,浪费时间;至于这张图中各个栏代表什么,你随便找个资料就给你说得很清楚,但是没有一份资料教你怎么用的,这就是网上资料的弊端。你只要把右图画绿线的看懂就总够了,其他的试着改变参数,看看结果你就明白了。接下来给你看看我的配置:Dual time 和single time的区别在于显示几个波形Svpwm_Time1和 Svpwm_Time0 是我程序内部的两个变量,也就是SVPWM的t1,t0,记得前面加&,不然结果不对,Acquisition Buffer Size设为1,因为我想通过终端来调试,每次终端,然后刷新一次数据,这样很方便,找点资料看,这里不详细说明了,还有采样时间,根据你的要求来定。波形如下:是不是很matlab中一样哈!另一种方式,不能采用中断了,因为中断时间太长,影响采样速度。建议:在程序中建一个大的数组,然后运行一段时间,再将数组显示在CCS中,Acquisition Buffer Size 此时不能为1了,要和你的数组一样长,Display Data Size等于Acquisition Buffer Size就可以,显示出来就可以了。如下图:这是我AD采样的波形,采集一个正弦波形,采用两个通道。2011.01.24error: symbol _main redefined: first defined in D:DSP studyDSP_PerfectDsp_Perfect_

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

最新文档

评论

0/150

提交评论