


不同的GPIO范围属于不同的外部中断,我们设置的是GPIO22,那么可以选择XINT1或者XINT2,我们选择XINT1
2.定时器的配置过程
EALLOW; SysCtrlRegs.PCLKCR3.bit.CPUTIMER1ENCLK = 1; // CPU Timer 1 EDIS; EALLOW; PieVectTable.TINT2 = &TIM2_IRQn; EDIS; // Initialize address pointers to respective timer registers: CpuTimer2.RegsAddr = &CpuTimer2Regs; // Initialize timer period to maximum: CpuTimer2Regs.PRD.all = 0xFFFFFFFF; // Initialize pre-scale counter to divide by 1 (SYSCLKOUT): CpuTimer2Regs.TPR.all = 9; CpuTimer2Regs.TPRH.all = 0; // Make sure timers are stopped: CpuTimer2Regs.TCR.bit.TSS = 1; // Reload all counter register with period value: CpuTimer2Regs.TCR.bit.TRB = 1; // Reset interrupt counters: CpuTimer2.InterruptCount = 0; ConfigCpuTimer(&CpuTimer2, Freq, Period); CpuTimer2Regs.TCR.bit.TSS=0; IER |= M_INT14; EINT; ERTM;
注意:这个章节是重点,是这款单片机最有价值的地方之一!
每一个epwm模块里面都包括了时基模块(TB),比较计数模块(CC),动作模块(AQ),死区模块(DB),等等下面分别介绍
时基模块:


这里有点难理解的是,其实PWMA只对上升沿进行延时,PWMB只对下降沿延时,就比如我选了AH,也就是两个信号都不变,那么可以发现的是AH的PWMA和PWMB和上面的图中第2,3个是一样的,也就是上升沿延迟和下降沿延迟,而POLSEL只是对这两个进行取反而已,那么也就决定了死区时间内两个是高电平还是低电平以及是不是取反,切记切记,其实PWMA只对上升沿进行延时,PWMB只对下降沿延时。
配置代码如下:
epwm6只做了一点点修改
想必能看出来修改的只有相位那一部分而已。
其他部分就不再讲述,那么至此epwm模块就讲到这里。
欢迎各位找我讨论,共同进步~
发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/175748.html原文链接:https://javaforall.net
