打印
[STM32F1]

VSCODE STM32 裸机之LED呼吸灯

[复制链接]
657|0
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
开发环境:VSCODE(gcc编译链)+STM32CubeMX(也可以使用HUAWEI-LiteOS-Studio) 。
代码:链接:https://pan.baidu.com/s/1uXfIR0GFQOBZPl1NfQP08w  
提取码:6b0c

PWM介绍
PWM定义:脉冲宽度调制(PulseWidthModulation,PWM)简称脉宽调制。通俗讲,PWM是一种对模拟信号电平进行数字编码的方法。通过高分辨率计数器的使用,方波的占空比被调制用来对一个具体模拟信号的电平进行编码。PWM信号仍然是数字的,因为在给定的任何时刻,满幅值的直流供电要么完全有(ON),要么完全无(OFF)。电压或电流源是以一种通(ON)或断(OFF)的重复脉冲序列被加到模拟负载上去的。通的时候即是直流供电被加到负载上的时候,断的时候即是供电被断开的时候。只要带宽足够,任何模拟值都可以使用PWM进行编码。

占空比定义:占空比就是高电平所占整个周期的时间,如下图所示:









1.选择TIM3
2.设置定时器时钟源为内部时钟源
设置定时器CH1为PWM模式
3.对应管脚自动设置为复用模式
4.可自行选择是否开启定时器中断
Channel1~4  就是设置定时器通道的功能     (输入捕获、输出比较、PWM输出、单脉冲模式)

Mode   选择PWM模式1
Pulse(占空比值)  先给0
Fast Mode   PWM脉冲快速模式    :  和我们配置无关,不使能
PWM 极性:   设置为低电平        PS:  由于LED是低电平点亮,所以我们把极性设置为low
#include "pwm_led.h"

uint16_t pwmVal=0;   //PWM占空

void TimCH_Config(void)
{
    // HAL_TIM_PWM_Start(&htim3,TIM_CHANNEL_2);
    // HAL_TIM_PWM_Start(&htim3,TIM_CHANNEL_3);
     HAL_TIM_PWM_Start(&htim3,TIM_CHANNEL_2);
}

void TIMCH_PWM_LED(void)
{

        while(pwmVal<2000)
        {
                pwmVal ++;
                __HAL_TIM_SetCompare(&htim3, TIM_CHANNEL_2, pwmVal);  //PWM CH2
                //__HAL_TIM_SetCompare(&htim3, TIM_CHANNEL_3, pwmVal);        //PWM CH3       
                //__HAL_TIM_SetCompare(&htim3, TIM_CHANNEL_4, pwmVal);  //PWM CH4
                HAL_Delay(1);
        }
       
        while(pwmVal)
        {
                pwmVal --;
                __HAL_TIM_SetCompare(&htim3, TIM_CHANNEL_2, pwmVal);  //PWM CH2
                //__HAL_TIM_SetCompare(&htim3, TIM_CHANNEL_3, pwmVal);        //PWM CH3       
                //__HAL_TIM_SetCompare(&htim3, TIM_CHANNEL_4, pwmVal);  //PWM CH4
                HAL_Delay(1);
        }
        HAL_Delay(200);
       
}


使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

33

主题

89

帖子

1

粉丝