用SDK包开发K66FX18学习笔记(3)

mac2024-05-28  38

FTM输出PWM

1、宏定义

#define FTM_INSTANCE FTM2 //FTM端口 #define FTM_CHANNAL0 0U //FTM通道 #define FTM_CHANNAL1 1U //FTM通道 #define FTM_CLKFREQ() CLOCK_GetFreq(kCLOCK_BusClk) //获取总线时钟频率 #define FTM_PORT PORTB //PORT端口 #define FTM_PIN1 18U //PWM引脚 #define FTM_PIN2 19U //PWM引脚

2、PWM初始化

void FWM_INIT(void) { ftm_config_t FTMconfig;//初始化结构体句柄 CLOCK_EnableClock(kCLOCK_PortB);//GPIOB端口时钟初始化 PORT_SetPinMux(FTM_PORT,FTM_PIN1,kPORT_MuxAlt3);//端口复用为FTM模式 PORT_SetPinMux(FTM_PORT,FTM_PIN2,kPORT_MuxAlt3);//端口复用为FTM模式 ftm_chnl_pwm_signal_param_t FTM_PARAM[2]; //初始化参数配置数组 FTM_PARAM[0].chnlNumber = FTM_CHANNAL0; //配置通道 FTM_PARAM[0].dutyCyclePercent = 0U; //初始化的占空比 FTM_PARAM[0].firstEdgeDelayPercent = 10U; //死区时间 FTM_PARAM[0].level = kFTM_HighTrue; //极性为高电平 FTM_PARAM[1].chnlNumber = FTM_CHANNAL1; //配置通道 FTM_PARAM[1].dutyCyclePercent = 0U; //初始化的占空比 FTM_PARAM[1].firstEdgeDelayPercent = 10U; //死区时间 FTM_PARAM[1].level = kFTM_HighTrue; //极性为高电平 FTM_GetDefaultConfig(&FTMconfig); //配置重置 FTM_Init(FTM_INSTANCE,&FTMconfig); //初始化配置 FTM_SetupPwm(FTM_INSTANCE,FTM_PARAM,2U,kFTM_EdgeAlignedPwm,200000,FTM_CLKFREQ());//配置PWM FTM_StartTimer(FTM_INSTANCE,kFTM_SystemClock);//开启定时器,时钟源配置为系统时钟 }

其中,FTM_SetupPwm函数的参数为:

status_t FTM_SetupPwm(FTM_Type *base, //FTM端口号 const ftm_chnl_pwm_signal_param_t *chnlParams, //初始化参数配置数组地址 uint8_t numOfChnls, //通道个数 ftm_pwm_mode_t mode, //PWM模式,一般选择边沿触发 uint32_t pwmFreq_Hz, //输出PWM频率 uint32_t srcClock_Hz) //时钟源

FTM_StartTimer的函数

static inline void FTM_StartTimer(FTM_Type *base, //FTM端口号 ftm_clock_source_t clockSource)//时钟源(系统时钟)

3、改变占空比

void FTM_UpdatePwmDutycycle(FTM_Type *base, //FTM端口号 ftm_chnl_t chnlNumber, //通道号 ftm_pwm_mode_t currentPwmMode, pwm模式(一般为边缘触发) uint8_t dutyCyclePercent) //占空比(0-100) //行如: FTM_UpdatePwmDutycycle(FTM0_INSTANCE,FTM0_CHANNAL0,kFTM_EdgeAlignedPwm,duty);

4、使能软件流控制

static inline void FTM_SetSoftwareTrigger(FTM_Type *base,//FTM端口号 bool enable) //布尔值(0或1) //行如: FTM_SetSoftwareTrigger(FTM_INSTANCE,1);

这里注意一点:每次改变完占空比后都要使能软件流控制,不然不会执行,也就是没有PWM输出

最新回复(0)