金牌会员
- 积分
- 1467
- 威望
- 701
- 贡献
- 410
- 兑换币
- 428
- 注册时间
- 2014-1-6
- 在线时间
- 178 小时
|
abacrya、军 发表于 2014-4-29 19:47
FTM就这三个 没有找到你说i的。。。你给我复制一个把、、。谢谢啦
额,我用的是新库,这是MK60_ftm.c里的函数- //////////////////////////////// 以下为正交解码 //////////////////////////////////////////
- /*!
- * @brief 初始化FTM 的正交解码 功能
- * @param FTMn_e 模块号( FTM1、 FTM2)
- * @since v5.0
- * Sample usage: FTM_QUAD_Init(FTM1); //初始化 FTM1 为正交解码模式
- */
- 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_QDPHB, ALT6);
- }
- else if(FTM2_QDPHB == PTB19)
- {
- port_init(FTM2_QDPHB, ALT6);
- }
- else
- {
- ASSERT(0); //断言,配置的管脚不符合要求
- }
- break;
- default:
- ASSERT(0); //断言,配置的模块有误
- break;
- }
- FTM_MODE_REG(FTMN[ftmn]) |= (0
- | FTM_MODE_WPDIS_MASK //写保护禁止
- //| FTM_MODE_FTMEN_MASK //使能 FTM
- );
- FTM_QDCTRL_REG(FTMN[ftmn]) |= (0
- | FTM_QDCTRL_QUADMODE_MASK
- );
- FTM_CNTIN_REG(FTMN[ftmn]) = 0;
- FTM_MOD_REG(FTMN[ftmn]) = FTM_MOD_MOD_MASK;
- FTM_QDCTRL_REG(FTMN[ftmn]) |= (0
- | FTM_QDCTRL_QUADEN_MASK
- );
- FTM_MODE_REG(FTMN[ftmn]) |= FTM_QDCTRL_QUADEN_MASK;
- FTM_CNT_REG(FTMN[ftmn]) = 0; //计数器。只有低16位可用(写任何值到此寄存器,都会加载 CNTIN 的值)
- }
- /*!
- * @brief 获取FTM 正交解码 的脉冲数
- * @param FTMn_e 模块号( FTM1、 FTM2)
- * @since v5.0
- * Sample usage: int16 count = FTM_QUAD_get(FTM1); //获取 FTM1 交解码 的脉冲数
- */
- int16 FTM_QUAD_get(FTMn_e ftmn)
- {
- int16 val;
- ASSERT( (ftmn == FTM1) || (ftmn == FTM2 ) ); //检查传递进来的通道是否正确
- val = FTM_CNT_REG(FTMN[ftmn]);
- return val;
- }
- /*!
- * @brief 清 FTM 正交解码 的脉冲数
- * @param FTMn_e 模块号( FTM1、 FTM2)
- * @since v5.0
- * Sample usage: FTM_QUAD_clean(FTM1); //复位 FTM1 正交解码 的脉冲数
- */
- void FTM_QUAD_clean(FTMn_e ftmn)
- {
- ASSERT( (ftmn == FTM1) || (ftmn == FTM2 ) ); //检查传递进来的通道是否正确
- FTM_CNT_REG(FTMN[ftmn]) = 0; //计数器。只有低16位可用(写任何值到此寄存器,都会加载 CNTIN 的值)
- }
复制代码
|
|