基于DSP的系统初始化与中断处理源代码详解

4星 · 超过85%的资源 需积分: 50 90 下载量 120 浏览量 更新于2024-07-20 8 收藏 97KB DOC 举报
这段代码是针对数字信号处理器 (DSP) 的一个基础示例,主要包含了主函数(main)、中断初始化函数(INTR_init)、定时器初始化函数(TIMER_init)以及一些内存操作。以下是各个部分的主要知识点: 1. **主函数 (main())**: - 初始化变量 `i` 和指针 `px`, `py`, `pz`,分别用于存储数值。 - 将 `px` 和 `py` 分配了字地址,对应物理地址为0x4080H和0x4100H,即字节地址8100H和8200H。 - 使用循环将数值从0到15依次写入 `pz` 指向的内存地址,这可能是用来测试内存访问或设置初始值。 - 在循环内添加软件断点,可能是调试时检查代码执行流程的地方。 - 进入无限循环,表明程序进入了一个等待状态。 2. **头文件 "myapp.h"**: - 定义了指示灯寄存器LBDS的地址和类型,这是一个可能用于显示状态或控制LED的寄存器。 - 定义了两个初始化函数:`INTR_init()` 和 `TIMER_init()`,用于配置中断和定时器。 3. **中断初始化函数 (INTR_init())**: - 设置中断向量寄存器 (IVPD, IVPH) 和中断使能寄存器 (IER0, DBIER0) 的值。 - 清除中断标志寄存器 (IFR0),并使用汇编指令 "BCLRINTM" 来清除中断标志。 - 这个函数似乎负责设置中断相关的参数,以便接收外部事件。 4. **定时器初始化函数 (TIMER_init())**: - 定义了四个IO端口寄存器地址,用于与定时器硬件交互。 - 配置定时器的工作模式、计数初值、预分频器值,以及使能定时器功能。 - 最后,将定时器控制寄存器设置为非暂停模式 (`0x00e0`),使定时器开始工作。 5. **程序流程**: - 主函数首先进行一些基本的初始化,如PLL、SDRAM和LBDS的设置,然后调用中断和定时器初始化函数。 - 程序进入无限循环,直到收到外部中断或达到某个条件(如定时器溢出),这时会执行`interruptTimer()`函数。 - `interruptTimer()`会增加计数器 `nCount`,当其等于16时,通过改变LBDS寄存器来切换指示灯状态。 这个代码片段展示了如何在DSP上实现基本的硬件和软件交互,包括中断处理和定时器操作,适合于学习和理解DSP系统的编程逻辑。注意,实际应用中还需要考虑中断服务程序(ISR)和更复杂的中断处理,以及可能的中断向量表管理。此外,这里的软件断点和内存地址可能因具体硬件平台而异。