DSP学习心得笔记(更新1)

loading 分享 2026-10-15 下载文档

PINT rsvd12_8; };

然后在使我们在.cmd文件中定义的表有以上属性: extern struct PIE_VECT_TABLE PieVectTable;(在.h文件中) 4.初始化该表(在.c文件中)使之能够为主程序所使用: const struct PIE_VECT_TABLE PieVectTableInit = {

PIE_RESERVED, // Reserved space PIE_RESERVED, PIE_RESERVED, PIE_RESERVED, PIE_RESERVED, PIE_RESERVED, PIE_RESERVED, PIE_RESERVED, PIE_RESERVED, PIE_RESERVED, PIE_RESERVED, PIE_RESERVED, PIE_RESERVED,

// Non-Peripheral Interrupts

INT13_ISR, // XINT13 or CPU-Timer 1 INT14_ISR, // CPU-Timer2

DATALOG_ISR, // Datalogging interrupt RTOSINT_ISR, // RTOS interrupt

EMUINT_ISR, // Emulation interrupt NMI_ISR, // Non-maskable interrupt ILLEGAL_ISR, // Illegal operation TRAP USER0_ISR, // User Defined trap 0 USER1_ISR, // User Defined trap 1 USER2_ISR, // User Defined trap 2 USER3_ISR, // User Defined trap 3 USER4_ISR, // User Defined trap 4 USER5_ISR, // User Defined trap 5 USER6_ISR, // User Defined trap 6 USER7_ISR, // User Defined trap 7 USER8_ISR, // User Defined trap 8 USER9_ISR, // User Defined trap 9 USER10_ISR, // User Defined trap 10 USER11_ISR, // User Defined trap 11

// Group 1 PIE Vectors

PDPINTA_ISR, // EV-A PDPINTB_ISR, // EV-B rsvd_ISR,

XINT1_ISR, XINT2_ISR,

ADCINT_ISR, // ADC TINT0_ISR, // Timer 0 WAKEINT_ISR, // WD ............. .............

// Group 12 E Vectors rsvd_ISR, rsvd_ISR, rsvd_ISR, rsvd_ISR, rsvd_ISR, rsvd_ISR, rsvd_ISR, rsvd_ISR, };

//--------------------------------------------------------------------------- // InitPieVectTable:

//--------------------------------------------------------------------------- // This function initializes the PIE vector table to a known state. // This function must be executed after boot time. //

void InitPieVectTable(void) {

int16 i;

Uint32 *Source = (void *) &PieVectTableInit; Uint32 *Dest = (void *) &PieVectTable;

EALLOW;

for(i=0; i < 128; i++) *Dest++ = *Source++; EDIS;

// Enable the PIE Vector Table PieCtrl.PIECRTL.bit.ENPIE = 1; }

5.中断服务程序:

让以上的数值指向你所要的服务程序,例如:

PieVectTable.TINT2 = &ISRTimer2;

那么,ISRTimer2也就成了中断服务程序,

×××切记:一定要在主程序的开始先声明该程序: interrupt void ISRTimer2(void);

............. .............

然后按照您的需要编制该程序: interrupt void ISRTimer2(void) {

CpuTimer2.InterruptCount++; }

编程中遇到的问题:

1、 line 257: warning: last line of file ends without a newline; 解决方法:

点击出现的问题条,看光标定位在哪里,然后一点点删除,直到把编程的文字删除,最后把删除的写出来,回车就行了,因为回车的格式要在编辑状态哈哈!

28016的定时器笔记

学过2812的人会知道,2812的定时器和28016的定时器的寄存器很不一样。但是从功能上将差不多。

关于28016定时器的时钟的讨论;

定时器的时钟是由SYSCLKOUT经过TBCTL中的CLKDIV和HSPCLKDIV进行配置;

和

主要说明,我们应该记得SYSCLKOUT和HSPCLK之间还可以分频,但是在这里这个寄存器不影响。

关于28016定时器的时钟同步的讨论;

如果我们想使每个PWM模块具有同步时钟,我们可以通过软件强制各个模块之间同步,设定步骤如下:

EPwm1Regs.TBCTL.bit.SYNCOSEL = 0 // Pass through EPwm2Regs.TBCTL.bit.SYNCOSEL = 0; // Pass through EPwm3Regs.TBCTL.bit.SYNCOSEL = 0; // Pass through EPwm1Regs.TBCTL.bit.SWFSYNC = 1; EPwm2Regs.TBCTL.bit.SWFSYNC = 1; EPwm3Regs.TBCTL.bit.SWFSYNC = 1;

以上程序是设定PWM1/2/3同步,我们由于我们只采用向上计数,所以不需要设定计数方


DSP学习心得笔记(更新1).doc 将本文的Word文档下载到电脑
搜索更多关于: DSP学习心得笔记(更新1) 的文档
相关推荐
相关阅读