S32K芯片可以通过FlexTimer和FlexIO这两个模块来产生PWM
它的本质就是一个定时器,通过Counter(计数值)与Mod(周期值)、CnV(占空比值)进行比较来触发对应的电平翻转操作。
PWM根据对齐方式又分为边缘对齐和中心对齐,造成两者的本质原因在于Counter计数方式,一种是Counter计数到Mod值后清0从头开始计数,一种是Counter计数到Mod后,从Mod开始递减到0。
边缘对齐
边缘对齐的计数方式是向上计数,从0开始向上计数,计数到了MOD之后重置为0,周而复始。
中心对齐
Counter的初始值为CNTIN,从0开始向上计数,计数到了MOD之后开始递减至0,周而复始。
极性初始电平
1.配置pwm引脚
2.设置FTM0的时钟和pwm_pal
void pwm1_init(void){
PWM_Init(&pwm_pal1Instance,&pwm_pal1Configs);
}
void pwm1_set(uint16_t period,uint8_t channel,uint16_t duty){
PWM_UpdateDuty(&pwm_pal1Instance,channel,duty);
PWM_UpdatePeriod(&pwm_pal1Instance,channel,period);
}