[plain] view plaincopy
void FTM0_Init(void)
{
PORTC_PCR3= PORT_PCR_MUX(4); // 设置引脚C3引脚为FTM0_CH2功能
PORTC_PCR4= PORT_PCR_MUX(4); // 设置引脚C4引脚为FTM0_CH3功能
SIM_SCGC6|=SIM_SCGC6_FTM0_MASK;//使能FTM0时钟
FTM0_SC=FTM_SC_CLKS(1)|FTM_SC_PS(4);//中断禁止,时钟源来自总线时钟60MHz,16分频后得到3.75MHz,CLKS=01,PS=100,CPWMS=0,递增计数
FTM0_MODE |= FTM_MODE_WPDIS_MASK;//写保护禁止
FTM0_MODE |=FTM_MODE_FTMEN_MASK;//FTMEN=1
FTM0_QDCTRL&=~FTM_QDCTRL_QUADEN_MASK;//禁止正交解码模式
FTM0_COMBINE|=FTM_COMBINE_COMBINE1_MASK;//FTM0通道2,3联合使用
FTM0_COMBINE|=FTM_COMBINE_COMP1_MASK;//FTM0通道2,3互补输出
FTM0_COMBINE|=FTM_COMBINE_SYNCEN1_MASK;//使能FTM0通道2,3 PWM同步
FTM0_COMBINE|=FTM_COMBINE_DTEN1_MASK;//死区插入
FTM0_DEADTIME=FTM_DEADTIME_DTPS(3)|FTM_DEADTIME_DTVAL(63);
FTM0_SYNCONF|=FTM_SYNCONF_SWWRBUF_MASK;//使能MOD,CNTIN,CV寄存器的软件触发同步
FTM0_SYNC=FTM_SYNC_CNTMIN_MASK|FTM_SYNC_CNTMAX_MASK;//设置load point
FTM0_C2SC |= FTM_CnSC_ELSB_MASK;//ELSB=1,ELSA=0,左对齐,先高后低
FTM0_C2SC &= ~FTM_CnSC_ELSA_MASK;
FTM0_C3SC |= FTM_CnSC_ELSB_MASK;//ELSB=1,ELSA=0,左对齐,先高后低
FTM0_C3SC &= ~FTM_CnSC_ELSA_MASK;
FTM0_OUTMASK=0XF3;//通道2,3输出,屏蔽其它通道
FTM0_CNTIN=0;//FTM0计数器初始值为0
FTM0_MOD=37499;//结束值,周期为(MOD-CNTIN+1)*时钟周期=10ms
FTM0_C2V=5625;//高电平1.5ms
FTM0_C3V=20000;
FTM0_CNT=0;
FTM0_SYNC|=FTM_SYNC_SWSYNC_MASK;//使能软件触发
}
|