在线时间2 小时
UID177828
注册时间2010-3-23
NXP金币0
该用户从未签到
注册会员

- 积分
- 80
- 最后登录
- 1970-1-1
|
FTM2无故停止运行,且除复位外无法恢复运行,每次为运行一段时间后停止运行,已找原因多天,无法解决!
void FTM2_Init()
{
//PORTC_PCR3= PORT_PCR_MUX(4); // 设置引脚C3引脚为FTM0_CH2功能
//PORTC_PCR4= PORT_PCR_MUX(4); // 设置引脚C4引脚为FTM0_CH3功能
//PTD4-7引脚为FTM0_CH4-7功能
SIM->SCGC3|=SIM_SCGC3_FTM2_MASK;//使能FTM0时钟
SIM->SOPT4|=SIM_SOPT4_FTM2FLT0_MASK;//FTM2的故障输入0选择CMP0输出
FTM2->SC=FTM_SC_CLKS(1)|FTM_SC_PS(2);//中断禁止,时钟源来自总线时钟50MHz,不分频,CLKS=01,PS=0,CPWMS=0,递增计数
FTM2->MODE =FTM_MODE_WPDIS_MASK|FTM_MODE_FTMEN_MASK|FTM_MODE_FAULTM(3);//写保护禁止,FTMEN=1,
//PWMSYNC=0 MOD,CnV, OUTMASK,和FTM counter几个寄存器的同步可以选择软件触发或硬件触发
FTM2->QDCTRL&=~FTM_QDCTRL_QUADEN_MASK;//禁止正交解码模式
FTM2->CONTROLS[0].CnSC = FTM_CnSC_ELSB_MASK|FTM_CnSC_DMA_MASK|FTM_CnSC_CHIE_MASK;//ELSB=1,ELSA=0,右对齐,先低后高
FTM2->CONTROLS[1].CnSC = FTM_CnSC_ELSB_MASK|FTM_CnSC_DMA_MASK|FTM_CnSC_CHIE_MASK;
FTM2->FLTCTRL=//FTM_FLTCTRL_FFLTR0EN_MASK|//故障输入0 过滤器使能
FTM_FLTCTRL_FAULT0EN_MASK;//故障输入0 使能
FTM2->OUTMASK=0X0FE;//通道0输出,屏蔽其它通道
FTM2->OUTINIT = 0; /* 输出初始化默认 对应于0~7通道 */
FTM2->EXTTRIG =0; /* 禁用外部触发 */
FTM2-> OL = 0; /* 输出极性 0 高电平有效 */
FTM2->INVCTRL = 0; /* 反转控制 */
FTM2->SWOCTRL = 0; /* 软件输出控制 */
FTM2->CNT=0;
FTM2->CNTIN=0;//FTM0计数器初始值为0
FTM2->MOD=_FTM2MOD_;//结束值,周期为(MOD-CNTIN+1)*时钟周期=10ms
FTM2->CONTROLS[0].CnV=10;
FTM2->CONTROLS[1].CnV=_NEND;//高电平1.5ms
FTM2-> WMLOAD = FTM_PWMLOAD_LDOK_MASK; /* FTM PWM Load */
FTM2->COMBINE= FTM_COMBINE_COMBINE0_MASK | //FTM2通道(0,1)联合使用
FTM_COMBINE_SYNCEN0_MASK|// |//使能FTM0通道(0,1)PWM同步
FTM_COMBINE_FAULTEN0_MASK;//故障控制使能
FTM2->SYNCONF=FTM_SYNCONF_SWWRBUF_MASK;//使能MOD,CNTIN,CV寄存器的软件触发同步
FTM2->SYNC=FTM_SYNC_CNTMIN_MASK|FTM_SYNC_CNTMAX_MASK|FTM_SYNC_SWSYNC_MASK|FTM_SYNC_REINIT_MASK ;//设置load point//使能软件触发同步
}
在中断中有调整频率的代码。
FTM2->MOD=Error;//结束值,周期为(MOD-CNTIN+1)*时钟周期=10ms
FTM2->CONTROLS[0].CnV=10;//高电平1.5ms
FTM2->CONTROLS[1].CnV=Error-20;//高电平1.5ms
FTM2->SYNC=
FTM_SYNC_CNTMIN_MASK|FTM_SYNC_CNTMAX_MASK|FTM_SYNC_SWSYNC_MASK|FTM_SYNC_REINIT_MASK ;//设置load point//使能软件触发同步
|
|