请问为什么配置epwm时先禁止TBCLK时钟?
mangui zhang:
具体不知道原因啊
int main(void){ InitSysCtrl(); DINT;// Disable CPU interrupts InitPieCtrl();//初始化中断控制寄存器 IER = 0x0000;//关闭CPU中断 IFR = 0x0000;//清除CPU中断标志位 InitPieVectTable();//初始化中断向量表 EALLOW; PieVectTable.EPWM1_INT = &epwm1_timer_isr; //配置中断向量地址 EDIS; //DELAY_US(50000);//延时50ms//延时50ms,等待控制板上其他模块完成初始化 EALLOW; SysCtrlRegs.PCLKCR0.bit.TBCLKSYNC = 0; //在配置ePWM模块前先禁止TBCLK时钟 EDIS; EPwm1Regs.ETSEL.bit.INTSEL = ET_CTR_ZERO; // 选择计数器值=0启动ADC转换 EPwm1Regs.ETPS.bit.INTPRD = ET_1ST; //每次中断事件发生时都产生一次中断请求 EPwm1Regs.ETCLR.bit.INT = 1; //清中断信号状态标志位 //************************配置软件强制寄存器****************************** //EPwm1Regs.AQSFRC.bit.RLDCSF=0x3;//软件连续强制寄存器工作在立即模式下 //EPwm2Regs.AQSFRC.bit.RLDCSF=0x3;//软件连续强制寄存器工作在立即模式下 //EPwm3Regs.AQSFRC.bit.RLDCSF=0x3;//软件连续强制寄存器工作在立即模式下 //************************************************************************ IER |= M_INT3;// 使能CPU INT3模块的中断功能 PieCtrlRegs.PIEIER3.bit.INTx1= 1; //使能PIE模块中EPWM INT1 EALLOW; PieVectTable.EPWM1_INT = &epwm1_timer_isr; //配置中断向量地址 EDIS; Epwm_modules.PeriodMax = Periodmax; //设定计数器的最大计数值 ePWMs_Init(&Epwm_modules); //调用ePWM模块的初始化函数,开始初始化 EALLOW; SysCtrlRegs.PCLKCR0.bit.TBCLKSYNC = 0x1; //配置完成后,重新使能TBCLK时钟信号 EDIS; EINT; //开全局中断 ERTM; //开实时中断 while(1);}