一、初始化GPIO
使用PB1,查芯片手册对应TIM3_CH4
GPIO_InitTypeDef GPIO_InitStructure; RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOB, ENABLE); RCC_APB1PeriphClockCmd(RCC_APB1Periph_TIM3,ENABLE); GPIO_InitStructure.GPIO_Pin = GPIO_Pin_1; GPIO_InitStructure.GPIO_Mode = GPIO_Mode_AF_PP; GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz; GPIO_Init(GPIOB, &GPIO_InitStructure);
二、初始化TIM和PWM
TIM_TimeBaseInitTypeDef TIM_TimeBaseStructure; TIM_OCInitTypeDef TIM_OCInitStructure; /* 周期1000 */ TIM_TimeBaseStructure.TIM_Period = 999; /* 定时器时间间隔1微秒 */ TIM_TimeBaseStructure.TIM_Prescaler = 0; TIM_TimeBaseStructure.TIM_ClockDivision = 0; /* 向上计数 */ TIM_TimeBaseStructure.TIM_CounterMode = TIM_CounterMode_Up; /* 配置 */ TIM_TimeBaseInit(TIM3, &TIM_TimeBaseStructure); /* 选择PWM1模式 */ TIM_OCInitStructure.TIM_OCMode = TIM_OCMode_PWM1; /* 允许输出模式 */ TIM_OCInitStructure.TIM_OutputState = TIM_OutputState_Enable; /* 匹配值 */ TIM_OCInitStructure.TIM_Pulse = 1000; /* 设置小于匹配值时为高电平 */ TIM_OCInitStructure.TIM_OCPolarity = TIM_OCPolarity_High; /* 使能通道1 */ TIM_OC4Init(TIM3, &TIM_OCInitStructure); TIM_OC4PreloadConfig(TIM3, TIM_OCPreload_Enable); TIM_ARRPreloadConfig(TIM3, ENABLE); TIM_Cmd(TIM3, ENABLE);
三、main函数部分
通过修改CCRx寄存器,改变占空比。从而调整电流大小
while(1) { if(CCR3_Val >=0 && CCR3_Val <= 1000) { CCR3_Val -= 50; Delay(1); } else { CCR3_Val = 1000; Delay(1); } TIM3->CCR4 = CCR3_Val; Delay(1); }