智能车制作
标题:
野火FTM问题求助
[打印本页]
作者:
寻,路者
时间:
2014-3-29 13:05
标题:
野火FTM问题求助
自己做的核心板,芯片是MK60DN256VLL10,用的野火的库V5.0版本
有时候,在单步调试或连续运行程序时,程序运行正常,
但关掉电源,再开启时,程序就无法运行了,一点反应都没有,液晶都不亮了,这是为什么?
但有时候又可以运行,真心觉得无解啊,
还有个问题,为啥我的FTM1 可以正常计数,FTM2却不行,模式是AB相模式。
void QD_Init(void)
{
FTM_QUAD_Init(FTM1);
FTM_QUAD_Init(FTM2);
}
inline void GetWheelSpeed(void) //注意符号的转化,底层库函数输出的是无符号数
{
gL_Speed = FTM_QUAD_get(FTM1); // 左轮速度
FTM_QUAD_clean(FTM1); //清除计数
gR_Speed = -FTM_QUAD_get(FTM2); //右轮速度
FTM_QUAD_clean(FTM2);
}
对野火底层函数修改如下,因为它默认的是加减计数模式,我用的AB相模式
void FTM_QUAD_Init(FTMn_e ftmn)
{
ASSERT( (ftmn == FTM1) || (ftmn == FTM2 ) ); //检查传递进来的通道是否正确
/******************* 开启时钟 和 复用IO口*******************/
switch(ftmn)
{
case FTM1:
SIM_SCGC6 |= SIM_SCGC6_FTM1_MASK; //使能FTM1时钟
if(FTM1_QDPHA == PTA8) //管脚复用
{
port_init(FTM1_QDPHA, ALT6);
}
else if(FTM1_QDPHA == PTA12)
{
port_init(FTM1_QDPHA, ALT7);
}
else if(FTM1_QDPHA == PTB0)
{
port_init(FTM1_QDPHA, ALT6);
}
else
{
ASSERT(0); //断言,配置的管脚不符合要求
}
if(FTM1_QDPHB == PTA9)
{
port_init(FTM1_QDPHB, ALT6);
}
else if(FTM1_QDPHB == PTA13)
{
port_init(FTM1_QDPHB, ALT7);
}
else if(FTM1_QDPHB == PTB1)
{
port_init(FTM1_QDPHB, ALT6);
}
else
{
ASSERT(0); //断言,配置的管脚不符合要求
}
break;
case FTM2:
SIM_SCGC3 |= SIM_SCGC3_FTM2_MASK; //使能FTM2时钟
if(FTM2_QDPHA == PTA10) //管脚复用
{
port_init(FTM2_QDPHA, ALT6);
}
else if(FTM2_QDPHA == PTB18)
{
port_init(FTM2_QDPHA, ALT6);
}
else
{
ASSERT(0); //断言,配置的管脚不符合要求
}
if(FTM2_QDPHB == PTA11) //管脚复用
{
port_init(FTM2_QDPHA, ALT6);
}
else if(FTM2_QDPHB == PTB19)
{
port_init(FTM2_QDPHA, ALT6);
}
else
{
ASSERT(0); //断言,配置的管脚不符合要求
}
break;
default:
ASSERT(0); //断言,配置的模块有误
break;
}
FTM_MODE_REG(FTMN[ftmn]) |= FTM_MODE_FTMEN_MASK ; //FTM2EN=1
FTM_CNTIN_REG(FTMN[ftmn]) = 0; //FTM计数器初始值为0
FTM_CNT_REG(FTMN[ftmn]) = 0;
FTM_MOD_REG(FTMN[ftmn]) = 0xFFFF;//结束值
FTM_QDCTRL_REG(FTMN[ftmn]) |= 0; //AB相模式 // 0x8u,加减计数模式
FTM_QDCTRL_REG(FTMN[ftmn]) |=FTM_QDCTRL_QUADEN_MASK ; //使能
}
求帮助有什么问题啊
欢迎光临 智能车制作 (http://dns.znczz.com/)
Powered by Discuz! X3.2