金牌会员
- 积分
- 2431
- 威望
- 1520
- 贡献
- 669
- 兑换币
- 447
- 注册时间
- 2015-1-25
- 在线时间
- 121 小时
- 毕业学校
- 济南大学
|
/*************************************************************************
* 济南大学1209电机拖动实验室
* 函数名称:FTM_QUAD_Iint(void)
* 功能说明:两路,(FTM模块的正交解码功能)使用FTM2_PHA(PTA10),FTM2_PHB(PTA11)和FTM1_PHA(PTA8),FTM1_PHB(PTA9)
* 引脚输入作为旋转编码器的A相和B相输入。AB相同时确定方向和计数值,a项用于计数,b相用于判断计数值得增减方向
* FTM2_CNT; FTM1_CNT为计数值寄存器、从这里读取计数值
*************************************************************************/
void FTM_QUAD_init(void) //编码器计数器初始化
{
SIM_SCGC5 |= SIM_SCGC5_PORTA_MASK;
PORTA_PCR8 = PORT_PCR_MUX(6); // 设置引脚A8引脚为FTM1_PHA功能
PORTA_PCR9 = PORT_PCR_MUX(6); // 设置引脚A9引脚为FTM1_PHB功能
PORTA_PCR10 = PORT_PCR_MUX(6); // 设置引脚A10引脚为FTM2_PHA功能
PORTA_PCR11 = PORT_PCR_MUX(6); // 设置引脚A11引脚为FTM2_PHB功能
SIM_SCGC6 |= SIM_SCGC6_FTM1_MASK; //选通FTM1时钟
SIM_SCGC3 |= SIM_SCGC3_FTM2_MASK; //选通FTM2时钟
FTM1_CNTIN = 0x0000u;
FTM1_CNT =0x1234;
FTM1_MOD = 0xffff; // FTM counter is free running counter
FTM2_CNTIN = 0x0000u;
FTM2_CNT =0x1234;
FTM2_MOD = 0xffff; // FTM counter is free running counter
FTM1_MODE |= FTM_MODE_FTMEN_MASK;
FTM2_MODE |= FTM_MODE_FTMEN_MASK;
FTM1_C0SC |= FTM_CnSC_ELSA_MASK; //捕捉输入上升沿,通道中断禁止;
FTM1_QDCTRL |= FTM_QDCTRL_QUADMODE_MASK //Count and direction encoding mode
| FTM_QDCTRL_QUADEN_MASK; // 使能正交解码模式
FTM2_C0SC |= FTM_CnSC_ELSA_MASK; //捕捉输入上升沿
FTM2_QDCTRL |= FTM_QDCTRL_QUADMODE_MASK //Count and direction encoding mode
| FTM_QDCTRL_QUADEN_MASK; // 使能正交解码模式
FTM1_CONF |= FTM_CONF_BDMMODE(3); //bdm调试时,计数器冻结
FTM2_CONF |= FTM_CONF_BDMMODE(3); //bdm调试时,计数器冻结
FTM1_SC |= FTM_SC_PS(0) | FTM_SC_CLKS(1);
FTM2_SC |= FTM_SC_PS(0) | FTM_SC_CLKS(1);
}
|
|