前言:封装函数控制PWM的频率和占空比
一、CubeMX配置:
定时器配置:
二、代码部分:
在main中开启定时器:
HAL_TIM_PWM_Start(&htim3,TIM_CHANNEL_1);
创建MyPWM.h和MyPWM.c文件用于写关于PWM的代码
MyPWM.h代码:
#ifndef _MYPWM_H
#define _MYPWM_H
#include "main.h"
void PWMset(TIM_HandleTypeDef htim, uint32_t Channel, uint32_t Fre, float Duty);
#endif
MyPWM.c代码:
#include "MyPWM.h"
void PWMset(TIM_HandleTypeDef htim, uint32_t Channel, uint32_t Fre, float Duty){
__HAL_TIM_SetAutoreload(&htim, 1000000 / Fre - 1); //TIMx->ARR = 1000000 / Fre - 1
__HAL_TIM_SetCompare(&htim, Channel, 1000000 / Fre * Duty); //TIMx->CCRx = 1000000 / Fre * Duty
}
解释:__HAL_TIM_SetAutoreload设置TIMx的ARR,__HAL_TIM_SetCompare设置TIMx的CHANNELx的CCR。
另:若要修改分频系数,使用__HAL_TIM_SET_PRESCALER(&htim, prescaler);
主程序中处理方法:
PWMset(htim3,TIM_CHANNEL_1,200,0.8);