DSP课程设计报告 联系客服

发布时间 : 星期二 文章DSP课程设计报告更新完毕开始阅读4e228ececc22bcd127ff0c0c

参考文献:

[1]姚嘉,刘刚,房建成. 控制力矩陀螺用高速高精度无刷直流电机控制系统.微计算机信息[M]. 2005,9-1:3-5

[2]张琛.直流无刷电动机原理及应用[M].北京:机械工业出版社,1996 [3]苏奎峰,吕强.TMS320F2812原理与开发[M].北京:电子工业出版社,2006 [3]苏奎峰. TMS320X281x DSP应用系统设计[M]. 北京: 北京航空航天大学出版社, 2008.

[3]万山明. TMS320F281x DSP原理及应用实例[M]. 北京: 北京航空航天大学出版社, 2007.

[3]苏奎峰. TMS320X281x DSP原理及C程序开发[M]. 北京: 北京航空航天大学出版社, 2008.

[3]苏奎峰. TMS320F2812原理与开发[M]. 北京: 电子工业出版社, 2005.

第 17 页 共 17 页

附录:源程序清单

=============================================================*/ #include \

/*定义扩展总线存储器空间页地址寄存器地址为0x004020*/ volatile unsigned int* p_ceselect=(volatile unsigned int *)0x004020; /*定义交通灯IO口的地址为0x80000*/

volatile unsigned int* p_iodisable=(volatile unsigned int *)0x080007; //子函数声明

interrupt void eva_timer1_isr(void); interrupt void eva_timer2_isr(void);

Uint32 i; //sci

unsigned int Sci_VarRx[100]; unsigned int l,g,j;

unsigned int Send_Flag;

void main(void) { /*初始化系统*/ InitSysCtrl(); /*关中断*/ DINT; IER = 0x0000; IFR = 0x0000; //

*p_ceselect =0x6 ;//打开ce3空间 for(i=0;i<0x100;i++);

*p_iodisable =0x1;//IO空间始能 for(i=0;i<0x100;i++); /*初始化PIE控制寄存器*/ InitPieCtrl(); /*初始化PIE矢量表*/ InitPieVectTable(); /*初始化EV*/ InitEv(); //sci数据、 InitSci();

第 18 页 共 18 页

for(l = 0; l < 100; l++) { Sci_VarRx[l] = 0; } l = 0; j = 0;

Send_Flag = 0; //重新分配中断服务的中断向量 EALLOW;

PieVectTable.T1PINT = &eva_timer1_isr;

PieVectTable.T2PINT = &eva_timer2_isr; //定时器1计数中断 EDIS;

// 使能 PIE 组 2 中断 4 -- T1PINT PieCtrl.PIEIER2.all = M_INT4; PieCtrl.PIEIER3.all = M_INT1; // 使能CPU中断

IER |= M_INT2 | M_INT3 ; EINT; // Enable Global interrupt INTM ERTM; // Enable Global realtime interrupt DBGM for(;;) { if((SciaTx_Ready() == 1) && (Send_Flag == 1)) { SciaRegs.SCITXBUF = Sci_VarRx[0]; Send_Flag = 0; l++; if(l == j) { l = 0; j = 0; } } if(SciaRx_Ready() == 1) { Sci_VarRx[j] = SciaRegs.SCIRXBUF.all; Send_Flag = 1; j++; if(j == 100) { j = 0;

第 19 页 共 19 页

} }

g=Sci_VarRx[0]; KickDog(); } }

/**********************************************/ //EVGP1周期中断

/**********************************************/ interrupt void eva_timer1_isr(void) {

EvaRegs.T1CMPR=0x0000; //使能中断

EvaRegs.EVAIMRA.bit.T1PINT = 1;

//清除中断标志

EvaRegs.EVAIFRA.all = BIT7;

//中断应答接收更多的 PIE 组 2的中断 PieCtrl.PIEACK.all = PIEACK_GROUP2; }

interrupt void eva_timer2_isr(void) {

EvaRegs.T2CMPR=g*8000;

//使能中断

EvaRegs.EVAIMRB.bit.T2PINT = 1;

//清除中断标志

EvaRegs.EVAIFRB.all = BIT0;

//中断应答接收更多的 PIE 组 2的中断 PieCtrl.PIEACK.all = PIEACK_GROUP3; }

//===================================================================== // No more.

//=====================================================================

#include \

//--------------------------------------------------------------------------- // InitEv:

//---------------------------------------------------------------------------

第 20 页 共 20 页