高级会员
- 积分
- 550
- 威望
- 369
- 贡献
- 95
- 兑换币
- 152
- 注册时间
- 2015-1-25
- 在线时间
- 43 小时
- 毕业学校
- 南阳
|
K60正交解码得出的数据都是正的。正转正常,反转就是6万多。我以为是数据类型的问题,但是定义的是有符号的16位数据类型
void FTM1_QUAD_Iint(void)
{
PORTA_PCR12= PORT_PCR_MUX(7); // 设置引脚A8引脚为FTM1_PHA功能
PORTA_PCR13= PORT_PCR_MUX(7); // 设置引脚A9引脚为FTM1_PHB功能
PORT_PCR_REG(PORTA_BASE_PTR, 12) |= PORT_PCR_PE_MASK | PORT_PCR_PS_MASK ; //开弱上拉
PORT_PCR_REG(PORTA_BASE_PTR, 13) |= PORT_PCR_PE_MASK | PORT_PCR_PS_MASK ; //开弱上拉
SIM_SCGC6|=SIM_SCGC6_FTM1_MASK;//使能FTM1时钟
FTM1_MODE |= FTM_MODE_WPDIS_MASK;//写保护禁止
FTM1_QDCTRL|=FTM_QDCTRL_QUADMODE_MASK;//AB相同时确定方向和计数值
FTM1_CNTIN=0;//FTM0计数器初始值为0
FTM1_MOD=65535;//结束值
FTM1_QDCTRL|=FTM_QDCTRL_QUADEN_MASK;//启用FTM1正交解码模式
FTM1_MODE |= FTM_MODE_FTMEN_MASK;//FTM1EN=1
FTM1_CNT=0;
}
//*****************************************************************************
// FTM2 编码器2 引脚 PTA 10-11
//*****************************************************************************
void FTM2_QUAD_Iint(void)
{
PORTB_PCR18 = PORT_PCR_MUX(6); // 设置引脚A10引脚为FTM2_PHA功能
PORTB_PCR19 = PORT_PCR_MUX(6); // 设置引脚A11引脚为FTM2_PHB功能
PORT_PCR_REG(PORTB_BASE_PTR, 18) |= PORT_PCR_PE_MASK | PORT_PCR_PS_MASK ; //开弱上拉
PORT_PCR_REG(PORTB_BASE_PTR, 19) |= PORT_PCR_PE_MASK | PORT_PCR_PS_MASK ; //开弱上拉
SIM_SCGC3 |= SIM_SCGC3_FTM2_MASK; // 使能FTM2时钟
FTM2_MODE |= FTM_MODE_WPDIS_MASK; // 写保护禁止
FTM2_QDCTRL |= FTM_QDCTRL_QUADMODE_MASK; // AB相同时确定方向和计数值
FTM2_CNTIN = 0; // FTM0计数器初始值为0
FTM2_MOD = 65535; // 结束值
FTM2_QDCTRL |= FTM_QDCTRL_QUADEN_MASK; // 启用FTM2正交解码模式
FTM2_MODE |= FTM_MODE_FTMEN_MASK; // FTM2EN=1
FTM2_CNT = 0;
}
求解!
while(1)
{
printf("当前值是%d\n", FTM1_CNT);
}
|
|