金牌会员
- 积分
- 2024
- 威望
- 1060
- 贡献
- 610
- 兑换币
- 688
- 注册时间
- 2015-8-13
- 在线时间
- 177 小时
- 毕业学校
- 中计大
|
FTM模块写寄存器互补输出,D4\D5管角互补输出,以下代码哪里有问题请高手指教啊谢谢一个脚有输出一个脚没有输出,不是硬件问题。
void MotorPWM_Register_Init(void){
//PWM IO设置
PORTD_PCR4= PORT_PCR_MUX(4); // 设置引脚D4引脚为FTM0_CH4功能
PORTD_PCR5= PORT_PCR_MUX(4); // 设置引脚D5引脚为FTM0_CH5功能
SIM_SCGC6|=SIM_SCGC6_FTM0_MASK; //使能FTM0时钟
FTM0_SC=FTM_SC_CLKS(1)|FTM_SC_PS(2); //中断禁止,时钟源来自总线时钟
FTM0_MODE |= FTM_MODE_WPDIS_MASK; //写保护禁止
FTM0_MODE |=FTM_MODE_FTMEN_MASK; //FTMEN=1
FTM0_QDCTRL&=~FTM_QDCTRL_QUADEN_MASK; //禁止正交解码模式
FTM0_COMBINE|=FTM_COMBINE_COMBINE2_MASK;//FTM0通道0,1联合使用
FTM0_COMBINE|=FTM_COMBINE_COMP2_MASK; //FTM0通道0,1互补输出
FTM0_COMBINE|=FTM_COMBINE_SYNCEN2_MASK; //使能FTM0通道0,1 PWM同步
FTM0_SYNCONF|=FTM_SYNCONF_SWWRBUF_MASK;//使能MOD,CNTIN,CV寄存器的软件触发同步
FTM0_SYNC=FTM_SYNC_CNTMIN_MASK|FTM_SYNC_CNTMAX_MASK;//设置load point
FTM0_C4SC |= FTM_CnSC_ELSB_MASK;//ELSB=1,ELSA=0,左对齐,先高后低
FTM0_C4SC &= ~FTM_CnSC_ELSA_MASK;
FTM0_C5SC |= FTM_CnSC_ELSB_MASK;//ELSB=1,ELSA=0,左对齐,先高后低
FTM0_C5SC &= ~FTM_CnSC_ELSA_MASK;
FTM0_OUTMASK=0XDF;//通道4、5输出,屏蔽其它通道
FTM0_CNTIN=0;//FTM0计数器初始值为0
FTM0_MOD=2250;//结束值,周期为(MOD-CNTIN+1)*时钟周期=10ms
FTM0_C4V=0;//高电平1.5ms
FTM0_C5V=1125;
FTM0_CNT=0;
FTM0_SYNC|=FTM_SYNC_SWSYNC_MASK;//使能软件触发
}
|
|