1、配置GPIO
新建完项目后,右键项目找到"S32 Configuration Tools"--》"Open Pins"进入PIN脚操作页面配置GPIO。这里用的MCU为S32K144:

在"外设信号"窗口选择FTM0(这里选择的是FTM0),选择对应引脚进行配置,保存

2、添加PWM外设组件
右键项目找到"S32 Configuration Tools"--》"Open Peripherals"进入外设组件界面

选择Drivers搜索"pwm",添加完双击"flexTimer_pwm_1",修改pwm配置信息后保存,添加一个"PWM Independent Configuration",更新源码

3、初始化
初始化完成功后PWM就打开了
c
ftm_state_t ftmStateStruct;//这个变量得时全局变量
CLOCK_DRV_Init(&clockMan1_InitConfig0);//时钟初始化
PINS_DRV_Init(NUM_OF_CONFIGURED_PINS0, g_pin_mux_InitConfigArr0);//引脚初始化
/* Initialize FTM instance */
FTM_DRV_Init(INST_FLEXTIMER_PWM_1, &flexTimer_pwm_1_InitConfig, &ftmStateStruct);
/* Initialize FTM PWM */
FTM_DRV_InitPwm(INST_FLEXTIMER_PWM_1, &flexTimer_pwm_1_PwmConfig);
4、其他函数
c
//更改频率,输入变量为频率HZ,例如输入1KHZ则Frequency=1000
void PWM_FrequencyChange(uint32_t Frequency){
FTM_DRV_UpdatePwmPeriod(INST_FLEXTIMER_PWM_1,FTM_PWM_UPDATE_IN_DUTY_CYCLE,Frequency,true);
PWM_DutyCycleChange(Pwm_CurrentDutyCycle);//保持占空比不变
}
//更换占空比,输入变量为百分比值,例如百分之10则DutyCycle=10
void PWM_DutyCycleChange(uint32_t DutyCycle){
Pwm_CurrentDutyCycle=DutyCycle;
uint16_t dutyValue=(0x8000*(100-DutyCycle))/100;
FTM_DRV_UpdatePwmChannel(INST_FLEXTIMER_PWM_1,
flexTimer_pwm_1_IndependentChannelsConfig[0].hwChannelId,
FTM_PWM_UPDATE_IN_DUTY_CYCLE, dutyValue,
0U,
true);
}