//FTM定时器
/******************** LQ_K60_函数库 v1.0 ********************
* 文件名 :FTM.H
* 功能 :设置FTM工作模式
***/
#ifndef _FTM_H_
#define _FTM_H_
/********************************** FTM(引脚复用) ***************************************/
// PWM输出通道 端口 可选范围 建议
#define FTM0_CH0 PTC1 //PTC1、PTA3 PTA3不要用(与JLINK冲突)
#define FTM0_CH1 PTC2 //PTC2、PTA4
#define FTM0_CH2 PTC3 //PTC3、PTA5
#define FTM0_CH3 PTC4 //PTC4、PTA6
#define FTM0_CH4 PTA7 //PTD4、PTA7
#define FTM0_CH5 PTD5 //PTD5、PTA0 PTA0不要用(与JLINK冲突)
#define FTM0_CH6 PTD6 //PTD6、PTA1 PTA1不要用(与JLINK冲突)
#define FTM0_CH7 PTD7 //PTD7、PTA2 PTA2不要用(与JLINK冲突)
// PWM输出通道 端口 可选范围 建议
#define FTM1_CH0 PTA12 //PTA8、PTA12、PTB0
#define FTM1_CH1 PTA13 //PTA9、PTA13、PTB1
// PWM输出通道 端口 可选范围 建议
#define FTM2_CH0 PTB18 //PTA10、PTB18
#define FTM2_CH1 PTB19 //PTA11、PTB19
//正交解码模块通道 端口 可选范围 建议
#define FTM1_QDPHA PTA12 //PTA8、PTA12、PTB0
#define FTM1_QDPHB PTA13 //PTA9、PTA13、PTB1
#define FTM2_QDPHA PTB18 //PTA10、PTB18
#define FTM2_QDPHB PTB19 //PTA11、PTB19
#ifdef MK60FX
// 模块通道 端口 可选范围
#define FTM3_CH0 PTE5 // PTE5、PTD0
#define FTM3_CH1 PTE6 // PTE6、PTD1
#define FTM3_CH2 PTE7 // PTE7、PTD2
#define FTM3_CH3 PTE8 // PTE8、PTD3
#define FTM3_CH4 PTE9 // PTE9、PTC8
#define FTM3_CH5 PTE10 // PTE10、PTC9
#define FTM3_CH6 PTE11 // PTE11、PTC10
#define FTM3_CH7 PTE12 // PTE12、PTC11
#endif
//定义占空比精度,意思即使把一个周期分成多少分,分多越多这样精度越高,设置占空比的时候duty的范围就是0-FTM0_PRECISON
#define FTM_PRECISON 5000
//定义FTM模块号
typedef enum
{
FTM0,
FTM1,
FTM2,
#ifdef MK60FX
FTM3,
#endif
FTM_MAX,
} FTMn_e;
//定义FTM 通道号
typedef enum
{
FTM_CH0,
FTM_CH1,
FTM_CH2,
FTM_CH3,
FTM_CH4,
FTM_CH5,
FTM_CH6,
FTM_CH7,
} FTM_CHn_e;
typedef enum
{
FTM_Rising, //上升沿捕捉
FTM_Falling, //下降沿捕捉
FTM_Rising_or_Falling //跳变沿捕捉
} FTM_Input_cfg;
#define FTM_IRQ_EN(FTMn,CHn) FTM_CnSC_REG(FTMN[FTMn],CHn) |= FTM_CnSC_CHIE_MASK //开启 FTMn_CHn 中断
#define FTM_IRQ_DIS(FTMn,CHn) FTM_CnSC_REG(FTMN[FTMn],CHn) &= ~FTM_CnSC_CHIE_MASK //关闭 FTMn_CHn 中断
///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
/**************************************************************************************************************************
FTM PWM输出函数
**************************************************************************************************************************/
///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
/*------------------------------------------------------------------------------------------------------
【函 数】FTM_PwmInit
【功 能】初始化FTM模式PWM通道
【参 数】ftmn : 模块名FTM0,FTM1,FTM2
【参 数】ch : 通道号 对应引脚参考ftm.h文件
【参 数】freq : 设置PWM的频率
【参 数】duty : 设置PWM的占空比
【返 回 值】无
【实 例】FTM_PwmInit(FTM0, FTM_CH0, 10000, 500); //频率10KHZ,占空比为百分之(500/FTM_PRECISON *100);
【注意事项】
--------------------------------------------------------------------------------------------------------*/
void FTM_PwmInit(FTMn_e ftmn, FTM_CHn_e ch, uint16_t freq, uint16_t duty);
/*------------------------------------------------------------------------------------------------------
【函 数】FTM_PwmDuty
【功 能】初始化FTM模式PWM通道
【参 数】ftmn : 模块名FTM0,FTM1,FTM2
【参 数】ch : 通道号 对应引脚参考ftm.h文件
【参 数】duty : 设置PWM的占空比
【返 回 值】无
【实 例】FTM_PwmDuty(FTM0, FTM_CH0, 500); //占空比为百分之(500/FTM_PRECISON *100);
【注意事项】
--------------------------------------------------------------------------------------------------------*/
void FTM_PwmDuty(FTMn_e ftmn, FTM_CHn_e ch, u16 duty);
///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
/**************************************************************************************************************************
FTM 正交解码函数
**************************************************************************************************************************/
///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
/*------------------------------------------------------------------------------------------------------
【函 数】FTM_ABInit
【功 能】初始化FTM模式正交解码模式
【参 数】ftmn : 模块名FTM1,FTM2
【返 回 值】无
【实 例】FTM_ABInit(FTM1); //FTM1为正交解码模式
【注意事项】使用管脚在ftm.h文件查看
--------------------------------------------------------------------------------------------------------*/
void FTM_ABInit(FTMn_e ftmn);
/*------------------------------------------------------------------------------------------------------
【函 数】FTM_ABGet
【功 能】获取正交解码的计数数值
【参 数】ftmn : 模块名FTM1,FTM2
【返 回 值】计数值
【实 例】FTM_ABGet(FTM1); //FTM1正交解码值
【注意事项】使用管脚在ftm.h文件查看
--------------------------------------------------------------------------------------------------------*/
short FTM_ABGet(FTMn_e ftmn);
#endif
k60驱动代码学习(12)
猜你喜欢
转载自blog.csdn.net/weixin_44146373/article/details/104213706
今日推荐
周排行