欢迎来到尧图网

客户服务 关于我们

您的位置:首页 > 教育 > 高考 > 【STM32+HAL库】---- 通用定时器PWM输出实现呼吸灯

【STM32+HAL库】---- 通用定时器PWM输出实现呼吸灯

2024/10/25 16:23:25 来源:https://blog.csdn.net/weixin_66509332/article/details/141867125  浏览:    关键词:【STM32+HAL库】---- 通用定时器PWM输出实现呼吸灯
硬件开发板:STM32G0B1RET6
软件平台:cubemax+keil+VScode

1 新建cubemax工程

1.1 配置系统时钟RCC

image

1.2 配置定时器

找到LED所对应的引脚PA5,选择TIM2_CH1模式
image
TIM2中,时钟源选择内部时钟Internal Clock,通道1选择PWM输出PWM Generation CH1,设置预分频系数63和重装载值999,此时对应时间周期是1ms,占空比设置为0即可,后续通过软件进行修改
image

2 代码

2.1 定义变量

uint16_t pulse=0;   /*占空比,重装载值设置为999*/
uint8_t flag=1;     /*LED标志位,用于判断是渐亮还是渐灭*/

2.2 mian函数

int main(void)
{HAL_Init();SystemClock_Config();MX_GPIO_Init();MX_TIM2_Init();HAL_TIM_PWM_Start(&htim2,TIM_CHANNEL_1);  /*启动定时器2通道1的PWM输出*/while (1){if (flag==1)    /*执行LED渐亮*/{if (pulse<1000){pulse+=50;   /*占空比增大*/__HAL_TIM_SET_COMPARE(&htim2,TIM_CHANNEL_1,pulse);    /*修改占空比*/HAL_Delay(100);}elseflag=0;    /*切换为渐灭模式*/}else       /*执行LED渐灭*/{pulse-=50;    /*占空比减小*/__HAL_TIM_SET_COMPARE(&htim2,TIM_CHANNEL_1,pulse);    /*修改占空比*/HAL_Delay(100);if (pulse==0){flag=1;    /*切换为渐亮模式*/}}}
}

版权声明:

本网仅为发布的内容提供存储空间,不对发表、转载的内容提供任何形式的保证。凡本网注明“来源:XXX网络”的作品,均转载自其它媒体,著作权归作者所有,商业转载请联系作者获得授权,非商业转载请注明出处。

我们尊重并感谢每一位作者,均已注明文章来源和作者。如因作品内容、版权或其它问题,请及时与我们联系,联系邮箱:809451989@qq.com,投稿邮箱:809451989@qq.com