《DSP的C语言编程》由会员分享,可在线阅读,更多相关《DSP的C语言编程(21页珍藏版)》请在金锄头文库上搜索。
1、退出,目录,第6章 DSP的C语言编程,DSP工程,一个完整的DSP工程包括的文件: *.C; *.H(含系统定义头文件); *.CMD; *.LIB; *.ASM 各种类型文件存储在同一个文件夹中,CMD文件,实现对程序存储器空间和数据存储器空间的分配。 经常用到的伪指令有MEMORY和SECTIONS MEMORY:存储器范围,PAGE0通常规定程序存储器,PAGE1规定数据存储器,MEMORY /* 程序存储器 */ PAGE 0 : VECS: org=00000h,len=0040h /* 内部FLASH */ PAGE 0 : /PVECS: org=00050h,len=0080
2、h /* 内部FLASH */ PAGE 0 : FLASH: org=00100h,len=7F00h /* 内部FLASH */ PAGE 0 : EXTPROG: org=08000h,len=08000h /* 外部SRAM */ /* 数据存储器 */ PAGE 1 : B2:org=0060h,len=0020h /* 内部DARAM */ PAGE 1 : B0:org=0200h,len=0100h /* 内部DARAM */ PAGE 1 : B1:org=0300h,len=0100h /* 内部DARAM100 */ PAGE 1 : SARAM:org=0c00h,le
3、n=0800h /* 内部SARAM 0800*/ PAGE 1 : EXTDATA:org=8000h,len=8000h /* 外部SRAM */ ,MEMORY,注意点,密码区:0040H0043H MP/MC引脚:0时使用内部存储器,复位时从内部存储器0000H处读取程序,1时从外部存储器读取程序,SECTIONS,已经初始化的块: .text 包含所有可执行代码和浮点型常量 Page 0 .cinit 包含初始化变量和常量表 Page 0 .const 包含字符串常量,以及以const修饰的全局或静态变量的声明和初始化 Page 1 .switch 包含switch语句的分支跳转地址
4、表 Page 0 未初始化的块: .bss 为全局和静态变量保留空间 Page 1 .stack 为系统软件堆栈分配空间 Page 1 .system 为动态分配的内存保留空间,可以被calloc、malloc、realloc函数使用 Page 1,f2407C.h,240x DSP外设寄存器和其他有用定义,复位和中断向量定义文件,VECTORS.ASM,中断优先级和中断向量表,LF2407 DSP具有3个不可屏蔽中断和6个可屏蔽中断(INT1-INT6),可采用中断扩展设计来满足大量外设中断需求。 每个可屏蔽中断有多个中断源,每个中断源具有唯一的中断入口地址向量。 中断源如下所示: 不可屏蔽
5、中断(3个) 中断优先级 中断名称外设中断向量描述 1 Reset 0000h 复位引脚和WD溢出 2 保留 0026h 仿真陷阱 3 NMI 0004h 软件中断,INT1(级别1),中断优先级 中断名称 外设中断向量 描述 4 PDPINTA 0020h 功率驱动保护中断 5 PDPINTB 0019h 功率驱动保护中断 6 ADCINT 0004h 高优先级ADC中断 7 XINT1 0001h 高优先级外中断 8 XINT2 0001h 高优先级外中断 9 SPINT 0005h 高优先级SPI中断 10 RXINT 0006h 高优先级SCI接收中断 11 TXINT 0007h 高
6、优先级SCI发送中断 12 CANMBINT 0040h 高优先级CAN邮箱中断 13 CANERINT 0041h 高优先级CAN错误中断,INT2(级别2),中断优先级 中断名称 外设中断向量 描述 14 CMP1INT 0021h 比较器1中断 15 CMP2INT 0022h 比较器2中断 16 CMP3INT 0023h 比较器3中断 17 T1PINT 0027h 定时器1周期中断 18 T1CINT 0028h 定时器1比较中断 19 T1UFINT 0029h 定时器1下溢中断 20 T1OFINT 0029h 定时器1上溢中断 21 CMP4INT 0024h 比较器4中断
7、22 CMP5INT 0025h 比较器5中断 23 CMP6INT 0026h 比较器6中断,INT2(级别2),中断优先级 中断名称 外设中断向量 描述 24 T3PINT 002Fh 定时器3周期中断 25 T3CINT 0030h 定时器3比较中断 26 T3UFINT 0031h 定时器3下溢中断 27 T1OFINT 0032h 定时器3上溢中断,INT3(级别3),中断优先级 中断名称 外设中断向量 描述 28 T2PINT 002Bh 定时器2周期中断 29 T2CINT 002Ch 定时器2比较中断 30 T2UFINT 002Dh 定时器2下溢中断 31 T2OFINT 0
8、02Eh 定时器2上溢中断 32 T4PINT 0039h 定时器4周期中断 33 T4CINT 003Ah 定时器4比较中断 34 T4UFINT 003Bh 定时器4下溢中断 35 T4OFINT 003Ch 定时器4上溢中断,INT4(级别4),中断优先级 中断名称 外设中断向量 描述 36 CAP1INT 0033h 比较器1中断 37 CAP2INT 0034h 比较器2中断 38 CAP3INT 0035h 比较器3中断 39 CAP4INT 0036h 比较器1中断 40 CAP5INT 0037h 比较器2中断 41 CAP6INT 0038h 比较器3中断,INT5(级别5)
9、,中断 中断名称 外设中断向量 描述 优先级 42 SPINT 0005h 低优先级SPI中断 43 RXINT 0006h 低优先级SCI接收中断 44 TXINT 0007h 低优先级SCI发送中断 45 CANMBINT 0040h 低优先级CAN邮箱中断 46 CANERINT 0040h 低优先级CAN错误中断,INT6(级别6),中断 中断名称 外设中断向量 描述 优先级 47 ADCINT 0004h 低优先级ADC中断 48 XINT1 0001h 低优先级外中断 49 XINT2 0011h 低优先级外中断 N/A TRAP 0022h 陷阱中断 N/A 假中断向量 0000
10、h 假中断向量,外设中断扩展控制器,LF2407采用一个外设中断扩展(PIE)控制器来专门管理来自各种外设或外部引脚的中断请求。下图为外设中断扩展模块图。 具体寄存器为:PIRQR0-PIRQR2,中断层次 通过中断请求系统中的一个两级中断来扩展中断个数,2407 可响应的中断个数数量很多,DSP的中断请求/应答逻辑和中断服务程序软件都有两级层次的中断。 中断请求的结构 在低层次中断,从几个外设来的外设中断请求(PIRQ)在中断控制器处进行或运算,产生一个INTn中断;在高层次中断,从INTn中断请求产生一个到CPU的中断。 中断应答 外设产生中断请求后,经PIE控制器译码,决定谁被响应,CP
11、U通过赋予程序地址总线一个值中断向量,决定哪个中断请求被应答。,中断向量,为使CPU能够区别不同外设引起中断,在每个外设中断请求有效时,都会产生一个唯一的外设中断向量,这个外设中断向量被装载到外设中断向量寄存器(PIVR)。 CPU响应外设中断时,从PIVR中读取相应的中断向量,转到相关的中断服务程序入口。LF2407 有两个向量表。 (1) CPU向量表用来获取响应CPU中断请求的一级通用中断服务子程序(GISR)。 (2) 外设向量表用来获取响应某一特定外设事件的特定中断服务子程序(SISR)。GISR中的程序可读出PIVR中的值,在保存必要的上下文之后,用PIVR中的值来产生一个转到SISR的向量。,