发布时间 : 星期二 文章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 页