#define RELAY_CTRL(A) TIM_SetCompare1(TIM14,A)//输出0-100‰的pwm
void pwm_init14()
{
TIM_TimeBaseInitTypeDef TIM_TimeBaseStructure;
TIM_OCInitTypeDef TIM_OCInitStructure;
GPIO_InitTypeDef GPIO_InitStructure;
/* Enable GPIOA clock */
RCC_AHBPeriphClockCmd(RCC_AHBPeriph_GPIOA, ENABLE);
/* GPIOA Configuration: PA6(TIM3 CH1) as alternate function push-pull */
GPIO_InitStructure.GPIO_Mode = GPIO_Mode_AF;
GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;
GPIO_InitStructure.GPIO_Pin = GPIO_Pin_4;
GPIO_Init(GPIOA, &GPIO_InitStructure);
GPIO_PinAFConfig(GPIOA, GPIO_PinSource4, GPIO_AF_4);
/* Enable TIM1 clock */
RCC_APB1PeriphClockCmd(RCC_APB1Periph_TIM14, ENABLE);
/* Time Base configuration */
TIM_TimeBaseStructInit(&TIM_TimeBaseStructure);
TIM_TimeBaseStructure.TIM_Period = 100-1;//不分频,PWM 频率=72000/72000=1Khz//设置自动重装载寄存器周期的值
TIM_TimeBaseStructure.TIM_Prescaler = 23;//设置用来作为TIMx时钟频率预分频值,100Khz计数频率
TIM_TimeBaseStructure.TIM_ClockDivision = 0x0;//设置时钟分割:TDTS = Tck_tim
TIM_TimeBaseStructure.TIM_CounterMode = TIM_CounterMode_Up;//TIM向上计数模式
TIM_TimeBaseInit(TIM14, &TIM_TimeBaseStructure);
//PWM初始化 //根据TIM_OCInitStruct中指定的参数初始化外设TIMx
/* Channel1 Configuration in PWM mode */
TIM_OCInitStructure.TIM_OCMode = TIM_OCMode_PWM1;//cnt<ccr1 为有效
TIM_OCInitStructure.TIM_OutputState = TIM_OutputState_Enable;//PWM输出使能
TIM_OCInitStructure.TIM_Pulse = 1200;
TIM_OCInitStructure.TIM_OCPolarity = TIM_OCPolarity_High;
TIM_OC1Init(TIM14, &TIM_OCInitStructure);
TIM_OC1PreloadConfig(TIM1,TIM_OCPreload_Enable);
/* Enable TIM1 */
TIM_Cmd(TIM14, ENABLE);
TIM_CtrlPWMOutputs(TIM14, ENABLE);
/* Enable GPIOA clock */
RCC_AHBPeriphClockCmd(RCC_AHBPeriph_GPIOA, ENABLE);
/* Enable TIM1 clock */
TIM_OC1PreloadConfig(TIM14,TIM_OCPreload_Enable);
/* Enable TIM3 */
TIM_Cmd(TIM14, ENABLE);
TIM_CtrlPWMOutputs(TIM14, ENABLE);
}
stm32f030k6t6定时器14设置为PWM模式输出0-100占空比
最新推荐文章于 2024-05-16 19:57:50 发布
![](https://img-home.csdnimg.cn/images/20240611030827.png)