一、初始化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);
-
}