智能车制作
标题:
求助!正交解码一直没有输出
[打印本页]
作者:
zkshen
时间:
2015-7-23 15:37
标题:
求助!正交解码一直没有输出
LZ第一次玩车,参考的是蓝宙的例程,初始化代码如下:
void FTM_QUAD_init(FTMn ftmn,CHn ch)
{
switch(ftmn)
{
case FTM1:
SIM_SCGC6|=SIM_SCGC6_FTM1_MASK; //使能FTM1时钟
switch(ch)
{
case CH0:
if(FTM1_CH0==PTA8)
{
SIM_SCGC5 |= SIM_SCGC5_PORTA_MASK;
PORT_PCR_REG(PORTA_BASE_PTR, 8) = PORT_PCR_MUX(6); // PTA8
}
else if(FTM1_CH0==PTA12)
{
SIM_SCGC5 |= SIM_SCGC5_PORTA_MASK;
PORT_PCR_REG(PORTA_BASE_PTR, 12) = PORT_PCR_MUX(6); // PTA12
}
else if(FTM1_CH0==PTB0)
{
SIM_SCGC5 |= SIM_SCGC5_PORTB_MASK;
PORT_PCR_REG(PORTB_BASE_PTR, 0) = PORT_PCR_MUX(6); // PTB0
}
break;
case CH1:
if(FTM1_CH1==PTA9)
{
SIM_SCGC5 |= SIM_SCGC5_PORTA_MASK;
PORT_PCR_REG(PORTA_BASE_PTR, 9) = PORT_PCR_MUX(6); // PTA9
}
else if(FTM1_CH1==PTA13)
{
SIM_SCGC5 |= SIM_SCGC5_PORTA_MASK;
PORT_PCR_REG(PORTA_BASE_PTR, 13) = PORT_PCR_MUX(6); // PTA13
}
else if(FTM1_CH1==PTB1)
{
SIM_SCGC5 |= SIM_SCGC5_PORTB_MASK;
PORT_PCR_REG(PORTB_BASE_PTR, 1) = PORT_PCR_MUX(6); // PTB1
}
break;
default:
return;
}
break;
case FTM2:
SIM_SCGC3 |= SIM_SCGC3_FTM2_MASK; //使能FTM2时钟
switch(ch)
{
case CH0:
if(FTM2_CH0==PTA10)
{
SIM_SCGC5 |= SIM_SCGC5_PORTA_MASK;
PORT_PCR_REG(PORTA_BASE_PTR, 10) = PORT_PCR_MUX(6); // PTA10
}
else if(FTM2_CH0==PTB18)
{
SIM_SCGC5 |= SIM_SCGC5_PORTB_MASK;
PORT_PCR_REG(PORTB_BASE_PTR, 18) = PORT_PCR_MUX(6); // PTB18
}break;
case CH1:
if(FTM2_CH1==PTA11)
{
SIM_SCGC5 |= SIM_SCGC5_PORTA_MASK;
PORT_PCR_REG(PORTA_BASE_PTR, 11) = PORT_PCR_MUX(6); // PTA11
}
else if(FTM2_CH1==PTB19)
{
SIM_SCGC5 |= SIM_SCGC5_PORTB_MASK;
PORT_PCR_REG(PORTB_BASE_PTR, 19) = PORT_PCR_MUX(6); // PTB19
}break;
default:
return;
}break;
default:
break;
}
// FTM_QDCTRL_QUADIR_MASK
FTM_MODE_REG(FTMx[ftmn]) |= FTM_MODE_WPDIS_MASK;
FTM_MODE_REG(FTMx[ftmn]) |= FTM_MODE_FTMEN_MASK;
FTM_QDCTRL_REG(FTMx[ftmn]) &= ~FTM_QDCTRL_QUADMODE_MASK ;//AB相同时确定方向和计数值
FTM_CNTIN_REG(FTMx[ftmn])=0;//FTM0计数器初始值为0
FTM_MOD_REG(FTMx[ftmn])=65535;//结束值
FTM_QDCTRL_REG(FTMx[ftmn]) |=FTM_QDCTRL_QUADEN_MASK;//启用FTMn正交解码模式
FTM_MODE_REG(FTMx[ftmn]) |= FTM_MODE_FTMEN_MASK; //FTMnEN=1
FTM_CNT_REG(FTMx[ftmn])=0;
FTM_SC_REG(FTMx[ftmn]) |= FTM_SC_CLKS(3); //选择外部时钟
}
LZ对比了坛子上各种代码感觉并没有问题,但就是没有任何输出啊!
各位大神帮帮忙吧!
作者:
zkshen
时间:
2015-7-23 15:42
后面还有这样一段,调用上面的初始化函数
void FTM_SpeedMeasure_init(void)
{
FTM_QUAD_init(FTM1,CH0);
FTM_QUAD_init(FTM1,CH1);
FTM_QUAD_init(FTM2,CH0);
FTM_QUAD_init(FTM2,CH1);
}
欢迎光临 智能车制作 (http://dns.znczz.com/)
Powered by Discuz! X3.2