文档详情

DSP控制器原理及其技术实验报告

ali****an
实名认证
店铺
DOC
91KB
约6页
文档ID:109994228
DSP控制器原理及其技术实验报告_第1页
1/6

实验二 定时器一.实验目的1. 熟悉如何编写 28335 的中断服务程序;2. 掌握长时间间隔的定时器的处理3. 掌握片内外设的设置方法二.实验内容1. 系统初始化; 2. DSP 的初始设置;3. 定时中断的编写;三.实验要求1. 通过本实验,熟悉中断的结构及用中断程序控制程序流程,掌握定时器的应用;2. 分析给定程序代码功能,并在实验报告中给出程序流程图和必要的注释;3. 改变定时时间,下载运行,观察结果,在报告中计算出运行时间四.实验背景知识TMS320F28335 片上有 3 个 32-位 CPU 定时器,分别被称为 CPU 定时器 0、1 和2每个定时器中均有一个 32-位减计数器,当计数器减到 0 时,产生一个中断其中,CPU 定时器 0 的中断 TINT0 为 PIE 中断,CPU 定时器 1 的中断 TINT1 直接连到 CPU中断的 INT13,CPU 定时器 2 的中断 TINT2 直接连到 CPU 中断的 INT14如下图所示CPU 定时器 2 保留为实时操作系统(如 DSP BIOS)使用,而 CPU 定时器 0、 1 则可被用户使用,SEED-DEC28335 未使用 CPU 定时器 0,用户可以根据应用的需要灵活使用。

CPU 定时器的原理框图和定时中断如下图所示定时器在工作过程中,首先用 32 位计数寄存器(TIMH:TIM)装载周期寄存器(PRDH: PRD)内部的值计数寄存器根据 SYSCLKOUT 时钟递减计数当计数寄存器等于 0 时,定时器中断输出产生一个中断脉冲定时器计数器(TIMH: TIM): TIM 寄存器保存当前 32 位定时器计数值的低 16 位,TIMH 寄存器保存高 16 位每隔(TDDRH:TDDR+1)个时钟周期 TIMH:TIM 减 1,当 TIMH:TIM 递减到 0 时,TIMH:TIM 寄存器重新装载 PRDH:PRD 寄存器保存的周期值,并产生定时器中断TINT信号定时器周期寄存器(PRDH:PRD):PRD 寄存器保存 32 位周期值的低 16 位,PRDH 保存高 16 位当 TIMH: TIM 递减到零时,在下次定时周期开始之前 TIMH: TIM寄存器重新装载 PRDH:PRD 寄存器保存的周期值;当用户将定时器控制寄存器(TCR)的定时器重新装载位(TRB)置位时, TIMH: TIM 也会重新装载 PRDH: PRD 寄存器保存的周期值五.实验准备1 实验硬件准备1. 将 DSP 仿真器与计算机连接好;2. 将 DSP 仿真器的 JTAG 插头与 SEED-DEC28335 单元的 J18 相连接;3. 启动计算机,当计算机启动后,打开SEED-DTK28335的电源。

观察SEED-DTK_MBoard 单元的+5V,+3.3V,+15V,-15V 的电源指示灯灯及SEED-DEC28335 的电源指示灯 D2 是否均亮;若有不亮,断开电源,检查电源2 实验软件准备 1.在F盘新建timer文件夹 2. 将实验箱所带光盘中的cputimer文件夹下的include、lib、src、28335.cmd、 dsp2833x_header_nonbios.cmd拷贝进F盘新建timer文件夹下3 新建、加载工程和文件1. 双击SETUP CCStudio3.3;2. 在famlily中选择C28XX,在platform中选择SEEDXDS510PLUS;3. 点击左下角save&quit,进入CCS主调试界面;4. 点击project-new,键入project名和路径,确认后CCS左边project中出现新建立的工程timer.pjt;5. 右击source-add files to project,再进入src,在文件类型中选择all files,加载src中的全部程序;6. 右击source-add files to project,在timer文件夹的文件类型中选择all files, 并加载28335.cmd和dsp2833x_header_nonbios.cmd两个文件;7. 右击source-add files to project,再进入lib文件夹并加载其中的 rts2800fpu32.lib。

4编译配置及调试  1. 点击CCS上面的project的build options选项,点击第二项compiler-advanced,在floating point support下拉菜单中选择fpu32;在preproess中的一项中指定头文件路径F:\timer\include2. 在linker-basic中选择suppress banner(-q)3. 点击编译,如无问题,在file中的load program下载编译生产的.out文件即可调试注意:在自己新建的timer工程中编译会出现5个警告,解决方法如下:1. 打开头文件incluede下的DSP2833x_GlobalPrototypes.h,在第24行加入: extern void InitXintf(void);语句; 2. 打开source下的cputimer.c,在第六行加入:include "DSP2833x_GlobalPrototypes.h"3. 保存以上修改重新编译即可消除警告4. 其他实验不存在以上问题六.实验结果1.#include "DSP2833x_Device.h"unsigned int Led_Flag;interrupt void ISRTimer2(void);unsigned int * LED3 = (unsigned int *) 0x4080; void main(void){// Step 1. Initialize System Control:初始化系统控制:// PLL, WatchDog, enable Peripheral Clocks锁相环,监督机构,使能外围时钟// This example function is found in the DSP2833x_SysCtrl.c file.这个例子函数是在DSP2833x_SysCtrl.c文件中找到。

InitSysCtrl();// Step 2. Initialize GPIO:2 .初始化GPIO步:// This example function is found in the DSP2833x_Gpio.c file and// illustrates how to set the GPIO to it's default state.这个例子在DSP2833x_Gpio.c文件和函数发现说明如何设置的GPIO的默认状态 InitGpio(); // Skipped for this example// Step 3. Clear all interrupts and initialize PIE vector table:步骤3 .清除所有中断和初始化PIE中断向量表:// Disable CPU interrupts使能CPU中断 DINT;// Initialize the PIE control registers to their default state.初始化PIE控制寄存器的默认状态// The default state is all PIE interrupts disabled and flags are cleared.默认状态是所有PIE禁用中断和标志被清除// This function is found in the DSP2833x_PieCtrl.c file.这个函数是在DSP2833x_PieCtrl.c文件中找到。

InitPieCtrl();// Disable CPU interrupts and clear all CPU interrupt flags:禁用CPU中断和清除所有CPU中断标志: IER = 0x0000; IFR = 0x0000;// Initialize the PIE vector table with pointers to the shell Interrupt// Service Routines (ISR).// This will populate the entire table, even if the interrupt// is not used in this example. This is useful for debug purposes.// The shell ISR routines are found in DSP2833x_DefaultIsr.c.// This function is found in DSP2833x_PieVect.c.初始化PIE中断矢量表指针服务例程(ISR) InitPieVectTable();// Interrupts that are used in this example are re-mapped toISR functions found within this file.中断在本例中使用重新映射到ISR函数中找到这个文件 EALLOW; // This is needed to write to EALLOW protected register这是需要写EALLOW注册保护 PieVectTable.TINT2 = &ISRTimer2; EDIS; // This is needed to disable write to EALLOW protected registers这是需要禁用写EALLOW保护寄存器// Step 4. Initialize all the Device Peripherals:步骤4 .初始化所有的设备外围设备:// This function is found in DSP2833x_InitPeripherals.c这个函数是在DSP2833x_InitPeripherals.c找到// InitPeripherals(); // Not required for this example// Step 5. User specific code, enable interrupts:第5步。

用户特定的代码,使中断: /*Initial XZONE*/ InitXintf(); /*设置CPU*/ InitCpuTimers(); ConfigCpuTimer(&CpuTimer2, 150, 1000000); StartCpuTimer2(); CpuTimer2Regs.TCR.all = 0x4001; // Use write-only instruction to set TSS bit = 0使用只写指令设置TSS = 0 /*开中断*/ IER |= M_INT14;// Enable TINT0 in the PIE: Group 1 interrupt 7在PIE第1组中断7使能TINT0 PieCtrlRegs.PIEIER1.bit.INTx7 = 1; EINT; // Enable Glob。

下载提示
相似文档
正为您匹配相似的精品文档