DSP学习心得笔记(更新2)
- 格式:docx
- 大小:345.50 KB
- 文档页数:14
【心得体会】dsp实验心得体会英文回答:DSP (Digital Signal Processing) is a rapidly growing field that has found applications in various industries, including telecommunications, radar, and medical imaging. The DSP Lab experiments provided me with a hands-on experience with real-world DSP applications, allowing me to develop a deeper understanding of the concepts and techniques.One of the most valuable experiments was the implementation of a simple digital filter. By designing and implementing the filter in MATLAB, I gained a practical understanding of the filtering process and its impact on signal characteristics. I learned how to choose appropriate filter coefficients to achieve the desired frequency response and how to trade-off between filter performance and computational complexity.Another engaging experiment was the analysis of speech signals. Using MATLAB, I extracted features such as formants and pitch from speech samples. This experiment helped me appreciate the complexity of human speech and provided insights into speech recognition and synthesis techniques. I gained a newfound respect for the challenges involved in developing systems that can understand and process human speech.Through these experiments, I developed not only technical skills but also problem-solving abilities. I learned to apply DSP concepts to real-world problems, identify potential pitfalls, and find innovative solutions. The experiments also fostered teamwork and collaboration, as I worked with peers to troubleshoot issues and share ideas.Overall, the DSP Lab experiments have been an enriching experience that has deepened my understanding of DSP principles and their practical applications. I am grateful for the opportunity to have participated in these experiments and am excited to continue exploring the field.中文回答:DSP(数字信号处理)是一个快速发展的领域,已在电信、雷达、医学影像等多个行业中找到应用。
dsp心得体会1、不影响执行速度的情况下,可以使用c或c/c++语言提供的函数库,也可以自己设计函数,这样更易于使用“裁缝师”优化处理,例如:进行绝对值运算,可以调用fabs()或abs()函数,也可以使用if..else..判断语句来替代。
2、要非常谨慎地使用局部变量,根据自己项目开发的需要,应尽可能多地使用全局变量和静态变量。
3、一定要非常重视中断向量表的问题,很多朋友对中断向量表的调用方式不清楚。
其实中断向量表中的中断名是任意取定的,dsp 是不认名字的,它只认地址!!中断向量表要重新定位。
这一点很重要。
4、要明确dsp软件开发的第一步是对可用存储空间的分析,存储空间分配好坏关系到一个dsp程序员的水平。
对于dsp,我们有两种名称的存储空间,一种是物理空间,另一种是映射空间。
物理空间是dsp上可以存放数据和程序的实际空间(包括外部存储器),我们的数据和程序最终放到物理空间上,但我们并不能直接访问它们。
我们要访问物理空间,必须借助于映射空间才行!!但是映射空间本身是个“虚”空间,是个不存在的空间。
所以,往往是映射空间远远大于实际的物理空间,有些映射空间,如io映射空间,它本身还代表了一种接口。
只有那些物理空间映射到的映射空间才是我们真正可访问(读或写)的存储空间。
5、尽可能地减少除法运算,而尽可能多地使用乘法和加法运算代替。
6、如果ti公司或第三方软件合作商提供了dsplib或其他的合法子程序库供调用,应尽可能地调用使用。
这些子程序均使用用汇编写成,更为重要之处是通过了tms320算法标准测试。
而且,常用的数字信号处理算法均有包括!!7、尽可能地采用内联函数!!而不用一般的函数!!可以提高代码的集成度。
8、编程风格力求简炼!!尽可能用c语言而不用c++语言。
我个人感到虽然c++终代码长了一些,好象对执行速度没有影响。
9、因为在c5000中double型和float型均占有2个字,所以都可以使用,而且,可以直接将int型赋给float型或double型,但,尽可能地多使用int数据类型代替!这一点需要注意!!10、程序最后至少要加上一个空行,编译器当这个空行为结尾提示符。
本文部分内容来自网络整理,本司不为其真实性负责,如有异议或侵权请及时联系,本司将立即删除!== 本文为word格式,下载后可方便编辑和修改! ==dsp实验心得体会篇一:dsp 实验报告心得体会TMS320F2812x DSP原理及应用技术实验心得体会1. 设置环境时分为软件设置和硬件设置,根据实验的需要设置,这次实验只是软件仿真,可以不设置硬件,但是要为日后的实验做准备,还是要学习和熟悉硬件设置的过程。
2. 在设置硬件时,不是按实验书上的型号选择,而是应该按照实验设备上的型号去添加。
3. 不管是硬件还是软件的设置,都应该将之前设置好的删去,重新添加。
设置好的配置中只能有一项。
4. CCS可以工作在纯软件仿真环境中,就是由软件在PC机内存中构造一个虚拟的DSP环境,可以调试、运行程序。
但是一般无法构造DSP中的外设,所以软件仿真通常用于调试纯软件算法和进行效率分析等。
5. 这次实验采用软件仿真,不需要打开电源箱的电源。
6. 在软件仿真工作时,无需连接板卡和仿真器等硬件。
7. 执行write_buffer一行时。
如果按F10执行程序,则程序在mian主函数中运行,如果按F11,则程序进入write_buffe函数内部的程序运行。
8. 把str变量加到观察窗口中,点击变量左边的“+”,观察窗口可以展开结构变量,就可以看到结构体变量中的每个元素了。
9. 在实验时,显示图形出现问题,不能显示,后来在Graph Title 把Input 的大写改为input,在对volume进行编译执行后,就可以看到显示的正弦波图形了。
10. 在修改了实验2-1的程序后,要重新编译、连接执行程序,并且必须对.OUT文件进行重新加载,因为此时.OUT文件已经改变了。
如果不重新加载,那么修改执行程序后,其结果将不会改变。
11. 再观察结果时,可将data和data1的窗口同时打开,这样可以便于比较,观察结果。
12. 通过这次实验,对TMS320F2812x DSP软件仿真及调试有了初步的了解与认识,因为做实验的时候都是按照实验指导书按部就班的,与真正的理解和掌握还是有些距离的。
1GPIO作为通用I/O口使用a)EALLOW;//防止私自写或覆盖寄存器的内容,加了这句,接下来可以操作寄存器了b)GpioCtrlRegs.GPAMUX1.bit.GPIO0 = 0; // GPIO0复用为普通I/O功能c)GpioCtrlRegs.GPADIR.bit.GPIO0 = 1; // 1,设置为输出;0设置为输入d)EDIS;//加了这句,接下来不可以操作寄存器注:EALLOW,EDIS总是成对出现2中断过程(代码以配置SCIB模块的接收中断为例,LSPCLK是37.5MHz)中断共分三级,1,外设级;2,PIE级;3,CPU级;外设级的中断标志必须手动清零;PIE级和CPU级的中断标志位由硬件自动清零。
中断响应例程:第一步,配置中断源,即允许产生什么类型点中断。
例如,定时器中断,串口中断,外部中断等。
ScibRegs.SCICTL2.bit.RXBKINTENA =1;允许接收中断第二步,配置PIE(外部中断扩展)a) InitPieCtrl();//初始化Pie控制b) InitPieVectTable();//初始化Pie向量表控制c) EALLOW;d) PieVectTable.SCIRXINTB=&scibreceive;//指定中断服务程序地址e) EDIS;f) PieCtrlRegs.PIECTRL.bit.ENPIE=1;//使能从PIECTRL中读取中断向量g) PieCtrlRegs.PIEIER9.bit.INTx3=1;//使能SCIB的接收中断h) IER |= M_INT9;//允许外部中断i) EINT;j) ERTM;第三步,中断响应在中断服务程序里,必须用PieCtrlRegs.PIEACK.all = PIEACK_GROUP9;//清楚中断已响应标识,再写自己等程序代码3串口配置InitScibGpio();scib_echoback_init();4AD转换InitAdc();//允许ADC时钟,带隙和参考电路上电,核中模拟电路上电AdcRegs.ADCTRL2.all = 0x2000;//ADC模块开始转换程序在FLASH运行时,需要加如下两句代码:(不知道具体原因)MemCopy(&RamfuncsLoadStart, &RamfuncsLoadEnd, &RamfuncsRunStart);InitFlash();。
dsp期末总结这学期的DSP课程即将结束,通过这段时间的学习和实践,我在DSP领域取得了一定的进步和收获。
在这篇总结中,我将对我所学的内容进行回顾和总结。
首先,我通过课堂学习了DSP的基本理论知识。
这包括了信号的采样、量化、离散傅里叶变换、滤波器等基本概念和算法。
我深入理解了这些概念的原理和应用,对于数字信号的处理有了更加全面和系统的了解。
在掌握了这些理论知识的基础上,我能够通过编写代码实现基本的信号处理功能,比如对信号进行滤波、频谱分析等。
其次,我在实验中运用所学的理论知识进行了实践。
这个学期我们做了几个实验项目,包括语音信号的降噪、图像的边缘检测等。
通过实验,我更加深入地理解了DSP算法的实现和应用。
在实验过程中,我遇到了很多问题和困难,但通过不断地调试和尝试,最终找到了解决办法。
这个过程让我更加熟悉了DSP的实践操作,养成了良好的问题解决能力和动手能力。
另外,我还参与了DSP相关的项目实践。
我和同学一起合作完成了一次数字摄像头的图像处理项目。
我们使用了DSP芯片来实现图像的采集和处理,包括图像的灰度化、边缘检测、图像增强等。
通过这个项目,我学到了很多实际的技术和经验,收获良多。
项目中需要我们分工合作,进行任务的分配和安排。
通过这个过程,我不仅锻炼了自己的团队协作能力,还提高了自己的时间管理和组织能力。
在这个学期的学习过程中,我除了学到了专业知识和技能,还培养了一些综合能力。
首先是问题解决能力。
在课程和项目中,我经常面对各种问题和困难,但通过不断的思考和努力,最终都找到了解决办法。
这让我在面对问题时更加冷静和理性,能够迅速找到正确的解决思路。
其次是学习能力。
在这个学期中,我接触了很多新的知识和技术,而且有些是我以前从未接触过的领域。
但我通过主动学习和研究,迅速掌握了这些知识和技能。
这让我意识到,只要有足够的学习意愿和努力,我可以学习任何东西。
最后是团队合作能力。
在项目中,我通过和同学的合作和协作,完成了很多任务和工作。
DSP汇编指令学习笔记Knowledge问题谁在DSP的汇编语言中加入了NOP指令?NOP指令加入的条件是什么?About DSP1.DSP是实时数字信号处理的核心和标志。
2.DSP分为专用和通用两种类型。
专用DSP一般采用定点数据结构(一般不支持小数),数据结构简单,处理速度快;通用DSP灵活性好,但是处理速度有所降低。
3.DSP采用取指、译码、执行三个阶段的流水线(Pipeline)技术,缩短了执行时间,提高了运行速率。
DSP具有8个Functional unit,如果并行处理的话,以600MHz的时钟计算,如果执行的指令是single cycle指令,则可以4800MIPS(指令每秒)。
4.DSP的8个functional Unit,具有独特的功能,对滤波、矩阵运算、FFT(傅里叶变换)具有哈弗结构把指令空间与数据空间隔离的存储方式。
这样实现是为了实现指令的连续读取,而实现pipeline流水线结构。
传统哈弗结构:两个独立的存储空间,还使用独立总线。
让取指与执行存储独立,加快执行速度。
改进型哈弗结构:指令与数据的存储空间还是独立的。
但是使用公共的总线(地址总线与数据总线)。
这样实现的原因是因为出现了CACHE,数据的存储动作大部分被内部的CACHE 总线承接了,所以总线冲突的情况会大大减少。
同时让总线的结构与控制变得简单,CACHE 存储的速度也明显快于外设存储器。
冯诺依曼结构:是指令空间与数据空间共享的存放方式。
它不能实现pipeline的执行过程。
Pipeline(流水线)技术是把指令的取指-译码和指令的执行独立开来的技术。
虽然每条指令的过程还是要经过取指-译码-执行三个阶段最少3个CPU Cycle。
但是多个指令同时并行先后进行,保证总体的指令吞吐速率理想情况下可以保证在每个指令只要一个CPU CYCLE。
Pipeline技术必须要有哈弗结构支持,即必须把指令空间与数据空间隔离存放。
dsp实习心得体会在经历了为期两个月的DSP实习之后,我深深地感受到了这种实习对我的职业发展的重要性。
在实习期间,我学到了很多东西,不仅仅是技术层面上的,同时也是在人际交往、自我认知、人格塑造等方面的。
本文旨在总结我的DSP实习心得,以期对之后的实习和职业生涯有所帮助。
首先,我要表达的最直接的感受就是:实习让我有了接触实际工作的机会。
在以往的学习生活中,我都是停留在纸上谈兵的阶段,仅仅是对我所学的理论知识有了一定的了解,而对于如何将这些理论应用到实际工作中,则是一无所知。
而通过这次实习,我终于有机会真正地接触到了实际的工作环境和工作内容,我深刻地认识到了工作比学习要困难得多,需要我们有足够的勇气和毅力来面对挑战。
其次,我认为中心思想在于:实习是为未来职业奠定基础。
实习期间,我们不仅仅是为了完成每天交付的任务而工作,更是为了在未来的职业生涯中能够更好地胜任自己的工作。
通过实习,我们可以了解到自己的职业规划,认识到自己的职业能力和职业发展方向,从而更好地规划未来的职业生涯。
再次,我认为重点在于:实习的机会难得而珍贵,我们应当珍惜。
为了顺利完成实习任务,我们需要将每个环节都严格把握,每个问题都认真思考,每个困难都克服。
同时,我们还要学会与同事有效地沟通,做到独立思考并及时汇报问题。
这样才能保证实习的顺利进行,同时也为我们未来的职业生涯打下坚实的基础。
其次,我要强调的是思辨,在实习期间,我们需要学会自我反思和思考,总结经验教训,分析自己的优缺点和不足,不断完善自己,从而更好地适应未来的职业生涯。
同时,我们还要学会客观地看待实际工作中的问题,分析产生问题的原因,不断地寻找解决问题的方法和途径。
只有这样,才能更好地适应未来的职业发展。
然后,要注意的是遣词造句准确、简练,结构严谨、条理清晰,同时还要注重表达真实、感人。
在写作过程中,我们需要仔细推敲每个单词的用法和句子的组织结构,确保其准确性和简洁性。
同时,我们还要注意文章的整体结构和条理性,以便读者更好地理解我们的思想。
一Bios的启动过程DSP/BIOS的启动过程包括以下几步:* 初始化DSP:复位中断向量指向c_int00地址,DSP/BIOS程序从入口点c_int00开始运行。
对C6000,初试化堆栈指针(B15)和全局页指针(B14)分别指向堆栈底部与.bss段的开始,控制寄存器AMR、IER和CSR也被初始化;* 用.cinit段中的记录来初始化.bss段;* 调用BIOS_init初始化DSP/BIOS模块:BIOS_init执行基本的模块初始化,然后调用MOD_init宏分别初始化每个用到的模块;* 处理.pinit表:.pinit表包含了初始化函数的指针;* 调用应用程序main函数:在所有DSP/BIOS模块初始化之后,调用main函数。
由图2可以看到,本程序在main函数中添加了必要的初始化代码。
Main函数初始化之后CPU的控制权交给DSP/BIOS。
需注意,main函数中一定不能存在无限循环,否则整个DSP/BIOS程序将瘫痪;* 调用BIOS_start启动DSP/BIOS:BIOS_start函数是由配置工具产生的,包含在programcfg.s62文件中,它负责使能DSP/BIOS模块并为每个用到的模块调用MOD_startup宏使其开始工作。
在这些工作完成之后,DSP/BIOS调用IDL_loop引导程序进入DSP/BIOS 空闲循环,此时硬件和软件中断可以抢先空闲循环的执行,主机也可以和目标系统之间开始数据传输。
二硬件中断向量表的配置1. 编写中断服务例程在.c源文件中编写ISR函数c_intXX,用于中断处理,如:interrupt void c_intXX (void){…;}注:对于硬件中断而言,XX = 00~15。
2.初始化中断向量表,并在内存段中的中断向量表中配置好对应的中断向量首先是把中断向量表定位到某一内存段中,我们可以在cmd文件中配置中断向量表的内存映射,如:MEMORY{VECTORS: org = 00000000h, len = 00000400hL2SRAM: org = 00000400h, len = 00100000hSDRAM: org = 80000000h, len = 10000000h}SECTIONS{.vecs :> VECTORS.data :> L2SRAM.text :> L2SRAM.switch :> L2SRAM.stack :> L2SRAM.bss :> L2SRAM.cinit :> L2SRAM.far :> L2SRAM.cio :> L2SRAM.const :> L2SRAM.sysmem :> SDRAM.tables :> L2SRAM}.vectors 中断向量表所在的段;.text 程序代码所在的段;.satext 非标准段,放置线性汇编程序代码;.bss 非初始化变量段.cinit 程序初始化段,经常放置一些没有用const说明的带初值变量的初始化值。
本文部分内容来自网络整理,本司不为其真实性负责,如有异议或侵权请及时联系,本司将立即删除!== 本文为word格式,下载后可方便编辑和修改! ==dsp实验心得体会篇一:dsp 实验报告心得体会TMS320F2812x DSP原理及应用技术实验心得体会1. 设置环境时分为软件设置和硬件设置,根据实验的需要设置,这次实验只是软件仿真,可以不设置硬件,但是要为日后的实验做准备,还是要学习和熟悉硬件设置的过程。
2. 在设置硬件时,不是按实验书上的型号选择,而是应该按照实验设备上的型号去添加。
3. 不管是硬件还是软件的设置,都应该将之前设置好的删去,重新添加。
设置好的配置中只能有一项。
4. CCS可以工作在纯软件仿真环境中,就是由软件在PC机内存中构造一个虚拟的DSP环境,可以调试、运行程序。
但是一般无法构造DSP中的外设,所以软件仿真通常用于调试纯软件算法和进行效率分析等。
5. 这次实验采用软件仿真,不需要打开电源箱的电源。
6. 在软件仿真工作时,无需连接板卡和仿真器等硬件。
7. 执行write_buffer一行时。
如果按F10执行程序,则程序在mian主函数中运行,如果按F11,则程序进入write_buffe函数内部的程序运行。
8. 把str变量加到观察窗口中,点击变量左边的“+”,观察窗口可以展开结构变量,就可以看到结构体变量中的每个元素了。
9. 在实验时,显示图形出现问题,不能显示,后来在Graph Title 把Input 的大写改为input,在对volume进行编译执行后,就可以看到显示的正弦波图形了。
10. 在修改了实验2-1的程序后,要重新编译、连接执行程序,并且必须对.OUT文件进行重新加载,因为此时.OUT文件已经改变了。
如果不重新加载,那么修改执行程序后,其结果将不会改变。
11. 再观察结果时,可将data和data1的窗口同时打开,这样可以便于比较,观察结果。
12. 通过这次实验,对TMS320F2812x DSP软件仿真及调试有了初步的了解与认识,因为做实验的时候都是按照实验指导书按部就班的,与真正的理解和掌握还是有些距离的。
DSP课程设计心得 2DSP课程设计心得 2心得体会:课程设计时间虽短,但是这次我也基本熟悉了一种新的集成开发环境CCS,学习新的知识的过程也是自己学习能力培养与提升的过程。
TDS510USB仿真器驱动程序的安装以及相应的配置流程也有了一定的了解。
仿真环境的配置,到工程的建立,文件的加载,到程序的仿真,与目标板的链接与调试,整个过程在摸索中逐渐熟悉。
对已有程序进行修改,重复相应的过程也能实现预定的功能,在短短的时间里能掌握这些基本就差不多了,由于有的需要配置的文件的缺失,无法完成对相应工程的配置设置,所以采用的参考例程里的程序,完成整个过程,这也是一个学习的过程。
做项目不是一个人的事,每个成员都应积极的参与,为整个项目的完成提供保障,团队的协作,尽可能的去发挥每个成员的专长,在整个项目的完成都能有所收获,这才应该是做项目的真正目的,加强同学之间的交流,用心付出,共同享受带给大家的成功的喜悦。
相关课程的学习只是个基础,在此基础之上对相应的硬件与软件结合,切实去体验一个芯片所能实现的各种功能,去发现所学的知识会在哪些方面用到,是如何应用,有怎样可以改进的方法,更深层次去掌握跟其他相关课程的交叉点,提升学习能力,从近期来看,可以为我们将要开始的毕业设计做准备,当做是一次练手,争取出色完成毕业设计,为四年的大学交出一份完美的答卷。
从长远看,为自己以后的工作也在一定程度的奠定基础,学习能力强了,自己就能比较快的接受新知识,更能适应社会对人的要求。
相信团队的力量,同时也要提高个人解决问题的能力,让自己在团队中发挥的作用,将个人融入团队中,才能让自己有更大的收获。
好好珍惜每次锻炼学习的机会,不断提升自己,不断超越自己,成就人生美好的梦想!专业班级:微电子学姓名学号:扩展阅读:DSP课程设计总结.doc2DSP课程设计总结(201*-201*学年第2学期)题目:DSP课程设计专业班级:电子08-3学生姓名:谢臣胜学号:08052319指导教师:宋华军设计成绩:201*年6月目录一设计目的二系统分析2.1设计要求2.2主要任务三硬件设计3.1硬件总体结构3.2DSP模块设计3.3电源模块设计3.4时钟模块设计3.5存储器模块设计四软件设计4.1软件总体流程4.2核心模块及实现代码五课程设计总结六参考文献一设计目的1、通过设计一个功能完备,能够独立运行的精简DSP硬件系统,熟悉AltiumDesigner的开发应用环境,达到熟练掌握如何绘制出系统的功能框图、使用AD(AltiumDesigner)绘制出系统的原理图和PCB版图的目的。
DSP学习心得笔记 ---------------- 白建成.baijc.icekoor 引言:学习DSP的时间有两个多月了,收获很多新知识,我们要每天都有进步才行,以下内容没有特别的顺序,跟具自己的学习情况写的,如果有不对的地方希望指出来,如果有不懂得也可以问我,大家相互交流很重要,我的一个邮箱:baijc@163.com欢迎联系! 建立新工程过程中: 问题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 optionscompilerpreprocessor中,要包含的头文件的地址没有加进去,你可以找到头文件的地址,然后加进去。
问题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 optionslinkerlibraries中加入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 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中定位系统中断表: 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; 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;