PWM输出,呼吸灯

2022-12-19,,

一、初始化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 = ;
/* 定时器时间间隔1微秒 */
TIM_TimeBaseStructure.TIM_Prescaler = ;
TIM_TimeBaseStructure.TIM_ClockDivision = ;
/* 向上计数 */
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 = ;
/* 设置小于匹配值时为高电平 */
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()
{
if(CCR3_Val >= && CCR3_Val <= )
{
CCR3_Val -= ;
Delay();
}
else
{
CCR3_Val = ;
Delay();
}
TIM3->CCR4 = CCR3_Val;
Delay();
}

PWM输出,呼吸灯的相关教程结束。

《PWM输出,呼吸灯.doc》

下载本文的Word格式文档,以方便收藏与打印。