DSP学习笔记
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
DSP学习笔记
引言:学习DSP的时间有两个多月了,收获很多新知识,我们要每天都有进步才行,以下内容没有特别的顺序,跟具自己的学习情况写的,如果有不对的地方希望指出来,如果有不懂得也可以问我,大家相互交流很重要,我的一个邮箱:baijc@欢迎联系!
建立新工程过程中:
问题1:
"GPIO_Study.c", line 61: fatal error: could not open source file "DSP280x_Device.h"
1 fatal error detected in the compilation of "GPIO_Study.c".
解决方法:
因为project →build options→compiler→preprocessor中,要包含的头文件的地址没有加进去,你可以找到头文件的地址,然后加进去。
问题2:
undefined first referenced
symbol in file
--------- ----------------
_c_int00 D:\DSP
study\test3\Debug\DSP280x_CodeStartBranch.obj
FS$$MPY D:\DSP
study\test3\Debug\DSP280x_CpuTimers.obj
FS$$TOL D:\DSP
study\test3\Debug\DSP280x_CpuTimers.obj
>> error: symbol referencing errors - './Debug/test3.out' not built
或者下面的问题:
undefined first referenced
symbol in file
--------- ----------------
_c_int00 D:\DSP
study\GPIO_Study\Debug\DSP280x_CodeStartBranch.obj
>> error: symbol referencing errors - './Debug/GPIO_Study.out' not built
解决办法都是下面:
这个问题是因为没有加在库文件,请在project →build options→linker→libraries 中加入rts2800.lib。
问题3:
>> warning: creating .stack section with default size of 400 (hex) words.
Use
-stack option to change the default size.
>> error: can't allocate .stack, size 00000400 (page 1) in RAMM1 (avail:
00000380)
>> error: errors in input - ./Debug/GPIO_Study.out not built
解决办法:
这个问题是关于堆栈存储大小的问题,他是说,创建堆栈段使用与设置400个字,并建议在“堆栈操作”中改变这个与设置。这时,需要进行如下修改就可通过:project→ build options→Linker→basic,在Stack Size(-stack):填入800或者其他小于1024的数值。
调试程序:
在编译完成之后,要来下载程序并进行功能调试。File→Load 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函数开使运行,点Debug→Go main。既能看到源文件中代码的执行情况,又能看到汇编指令的执行情况View→Mixed Source/Asm;
关于F2812中用C语言来实现中断的说明
1.首先在.cmd中定位系统中断表:
MEMORY
{
PAGE 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;