/* Init Timer-Base Control Register for EPWM1-EPWM3*/ \
(*ePWM[ch1]).TBCTL.all = PWM_INIT_STATE; \
(*ePWM[ch2]).TBCTL.all = PWM_INIT_STATE; \
(*ePWM[ch3]).TBCTL.all = PWM_INIT_STATE; \
上面代码是对TBCTL的设置,其中PWM_INIT_STATE是下面代码,
#define PWM_INIT_STATE ( FREE_RUN_FLAG + \
PRDLD_IMMEDIATE + \
TIMER_CNT_UPDN + \
HSPCLKDIV_PRESCALE_X_8 + \
CLKDIV_PRESCALE_X_8 + \
PHSDIR_CNT_UP + \
CNTLD_DISABLE )
我想单独设置HSPCLKDIV和CLKDIV两个时钟的分频系数,但是编写如下代码后,TBCTL寄存器的值仍然和PWM_INIT_STATE的设置一致,然后我将
HSPCLKDIV_PRESCALE_X_8 + \ CLKDIV_PRESCALE_X_8 + \这两句删除以后,寄存器的值还是和我配置的不一样。
(*ePWM[ch1]).TBCTL.bit.HSPCLKDIV = 0x0100; \
(*ePWM[ch2]).TBCTL.bit.HSPCLKDIV = 0x0100; \
(*ePWM[ch3]).TBCTL.bit.HSPCLKDIV = 0x0100; \
\
(*ePWM[ch1]).TBCTL.bit.CLKDIV = 0x0400; \
(*ePWM[ch2]).TBCTL.bit.CLKDIV = 0x0400; \
(*ePWM[ch3]).TBCTL.bit.CLKDIV =0x0400; \
请问:怎样才能单独改变两个分频系数?
比如说我在中断中改变分频系数的值(进一次中断改变一次两个分频系数的值)应该怎么做?
Seven Han:建议您参考下Example_2833xEPwmUpAQ例程。