尊敬的各位:
当我尝试将HRPWM,ADC和CLA全部集成在一起时,我遇到了一个非法的ISR,尽管它们似乎占用了PieVectorTable中的不同中断插槽。 在论坛中进行搜索后,我怀疑某个注册表值被指向illegal _ISR例程的值覆盖。 请看一下下面我的代码(摘自主{}例程),因为我无法找出错误的位置。
提前感谢。
Giel Van den Broeck
工具/软件:Code Composer Studio
//// 初始化控制和模拟子系统的系统控制 //启用外设时钟 //此示例函数可在F2837xD_sysctrl.c文件中找到。 // EALLOW;//这是写入EALLOW保护寄存器所必需的 InitSysCtrl(); EDIS; //禁用CPU中断 DINT; //// 初始化GPIO // // PWM InitEPwmGpio(); //设置LED2. GPIO_SetupPinMux (31,GPIO _MUX_CPU1,0); GPIO _SetupPinOptions (31,GPIO输出, GPIO_PushPull); // //将PIE控制寄存器初始化到其默认状态。 //默认状态是禁用所有PIE中断, 并清除标志//。 ////// 此函数位于F2837xD_PIECTRL.c文件中。 // InitPieCtrl();//// 禁用CPU中断并清除所有CPU中断标志: // EALLOW; IER = 0x0000; IFR = 0x0000; //// 使用指向shell Interrupt //服务例程(ISR)的指针初始化PIE矢量表。 //这将填充整个表,即使在此 示例中未使用中断//。 这对于调试非常有用。 // shell ISR例程位于F2837xD_DefaultIsr.C.中 //此函数位于F2837xD_PieVect.C.中 // InitPieVectorTable(); EDIS; // // CLA配置 //首先配置CLA内存空间,然后配置 // CLA任务向量 // CLA_configClaMemory(); CLA_initCpu1Cla1(); //启用中断 EALLOW; PieVectorTable.ADCA1_INT =&adca1_ISR;// ADCA中断1 PieVectorTable.EPWM1_INT =&epwm1_ISR;// EPTM1中断 函数PieVectorTable.CLA1_INT =&clclclclclclava1Isr1;PieVecm1_IN1 = PieVect1 ;表 1 = 1 = 1;表1;表1 = 1;表1;表1 = PieVectorTable.CLA1_6_INT =&cla1Isr6; PieVectorTable.CLA1_7_INT =&cla1Isr7; PieVectorTable.CLA1_8_INT =中断1Isr8; EDIS; //启用全局中断和较高优先级实时调试事件 IER || M_INT1;/INT/INCLA组 IE11/ 启用E11 (ETR1)中断IN_IN11 (EIN_IN14) IN_IN13 (ETRA组) IER) //启用全局中断INTM //ERTM;//启用全局实时中断DBGM //启用PIECtrlRegs.PIEER1.bit.INTx1 = 1; //启用ADCA1中断(请参阅技术参考手册第94页) PieCtrlRegs.PIEIEER3.INTx1 = 1; //启用EPWIEr1.Ctrl/PIE1.IE1 = PIE1.IE1。 //启用CLA中断 //// 初始化系统变量,启用HRPWM // UpdateFine =1; PeriodFine =0; 状态= SFO_INCOMPLETE; //// 启用全局中断和更高优先级的实时调试事件: // EINT;//启用全局中断INTM ERTM; //启用全局实时中断DBGM //// 调用SFA()使用已校准的MEP_ScaleFactor更新HRMSTEP寄存器。 //在启用 //高分辨率期间控制之前,HRMSTEP必须填入比例因子值。 // //while (status == SFO_INCOMPLETE)//呼叫直到完成 //{ //status = SFA(); //IF (状态== SFO_ERROR) //{ //error();//如果发生错误,SFO函数返回2,并且MEP的编号为 //} //步长/粗步长超过最大值255。 //}//// ADC配置 // ADC_Config(); //配置ADC SOC信道 ADCChannels(); //将SOC信道链接到ADCIN信道 //// eCLA和HRPWM寄存器配置 // HRPWM_Config(PWM_Period);// ePWMx目标 EALLOW; // Setuptest //CLA和HRPWM寄存器配置//