在线时间445 小时
UID2011467
注册时间2013-5-17
NXP金币0
该用户从未签到
金牌会员
 
- 积分
- 5781
- 最后登录
- 1970-1-1
|
发表于 2016-3-10 10:27:21
|
显示全部楼层
三个FTM都可以,
FTM0和FTM1虽然没有FTM_CNTIN寄存器,但是在EPWM和CPWM模式下,CNTIN开始值必须是0,不涉及到设置的问题。
你可以参考这个函数,使能PWM波输出
uint8 FTM_PWM_Init(FTM_MemMapPtr FTM_No, unsigned char PWMModeSelect, unsigned char PWMEdgeSelect)
{
uint8_t channels, i;
/* open the clock gate */
if (FTM0_BASE_PTR == FTM_No)
{
channels = 2;
SIM_SCGC_REG(SIM_BASE_PTR) |= SIM_SCGC_FTM0_MASK;
}
else if(FTM1_BASE_PTR == FTM_No)
{
channels = 2;
SIM_SCGC_REG(SIM_BASE_PTR) |= SIM_SCGC_FTM1_MASK;
}
else if (FTM2_BASE_PTR == FTM_No)
{
channels = 6;
SIM_SCGC_REG(SIM_BASE_PTR) |= SIM_SCGC_FTM2_MASK;
}
else
return FALSE; /* error in FTM address or channel */
FTM_SC_REG(FTM_No) = 0x0; /* diable counter */
FTM_MOD_REG(FTM_No) = FTM_MOD_INIT;
if(FTM_PWMMODE_CENTERALLIGNED == PWMModeSelect) /* enable CPWM */
{
FTM_SC_REG(FTM_No) |= FTM_SC_CPWMS_MASK;
}
else if(FTM_PWMMODE_COMBINE == PWMModeSelect) /* enable combine pwm mode */
{
if(FTM2_BASE_PTR == FTM_No)
{
FTM_MODE_REG(FTM_No) |= FTM_MODE_FTMEN_MASK;
FTM_COMBINE_REG(FTM_No) = FTM_COMBINE_COMBINE0_MASK | FTM_COMBINE_COMP0_MASK | FTM_COMBINE_SYNCEN0_MASK | FTM_COMBINE_DTEN0_MASK |
FTM_COMBINE_COMBINE1_MASK | FTM_COMBINE_COMP1_MASK | FTM_COMBINE_SYNCEN1_MASK | FTM_COMBINE_DTEN1_MASK |
FTM_COMBINE_COMBINE2_MASK | FTM_COMBINE_COMP2_MASK | FTM_COMBINE_SYNCEN2_MASK | FTM_COMBINE_DTEN2_MASK ;
}
else
return FALSE; /* error, only FTM2 has the combine mode */
}
if(FTM_PWM_HIGHTRUEPULSE == PWMEdgeSelect)
{
/* Configure timers PWM High True Pulses */
for(i=0; i<channels; i++)
{
FTM_CnSC_REG(FTM_No,i) = FTM_CnSC_MSB_MASK | FTM_CnSC_ELSB_MASK;
FTM_CnV_REG(FTM_No,i) = FTM_C0V_INIT + i*100;
}
}
else if(FTM_PWM_LOWTRUEPULSE == PWMEdgeSelect)
{
/* Configure timers for PWM Low True Pulses */
for(i=0; i<channels; i++)
{
FTM_CnSC_REG(FTM_No,i) = FTM_CnSC_MSB_MASK | FTM_CnSC_ELSA_MASK;
FTM_CnV_REG(FTM_No,i) = FTM_C0V_INIT + i*100 ;
}
}
FTM_SC_REG(FTM_No) |= FTM_SC_CLKS(FTM_CLOCK_SYSTEMCLOCK); /* system clock */
//FTM_PWMLOAD_REG(FTM_No) |= FTM_PWMLOAD_LDOK_MASK | 0x3F;
return TRUE;
} |
|