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

复制代码
硬件开发板:STM32G0B1RET6
软件平台:cubemax+keil+VScode

1 新建cubemax工程

1.1 配置系统时钟RCC

1.2 配置定时器

找到LED所对应的引脚PA5,选择TIM2_CH1模式

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

2 代码

2.1 定义变量

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

2.2 mian函数

c 复制代码
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);
      }
      else
        flag=0;    /*切换为渐灭模式*/
    }
    else       /*执行LED渐灭*/
    {
      pulse-=50;    /*占空比减小*/
      __HAL_TIM_SET_COMPARE(&htim2,TIM_CHANNEL_1,pulse);    /*修改占空比*/
      HAL_Delay(100);
      if (pulse==0)
      {
        flag=1;    /*切换为渐亮模式*/
      }
    }
  }
}
相关推荐
小莞尔31 分钟前
【51单片机】【protues仿真】基于51单片机秒表计时器系统(带存储)
c语言·stm32·单片机·嵌入式硬件·物联网·51单片机
国科安芯1 小时前
ASP3605A电源芯片在高速ADC子卡中的适配性研究
网络·人工智能·单片机·嵌入式硬件·安全
鹓于1 小时前
单片机的开发(未完待续,有时间写)
单片机·嵌入式硬件
GilgameshJSS2 小时前
STM32H743-ARM27例程-TCP_Server
c语言·arm开发·stm32·单片机·tcp/ip
hollq2 小时前
SATM32F103RCT6采集温度并设置阈值报警
stm32·嵌入式硬件
1379号监听员_3 小时前
嵌入式软件架构--显示界面架构(工厂流水线模型,HOME界面,命令界面)
stm32·单片机·架构·命令模式
恒锐丰小吕3 小时前
矽塔 SA8206A 输入耐压36V 过流保护阈值1.4A 过压/过流保护芯片 SOT-23
嵌入式硬件·硬件工程
爱倒腾的老唐4 小时前
07、点亮第一个LED
单片机·51单片机
优信电子4 小时前
ESP32 I2S音频总线学习笔记(二):I2S读取INMP441音频数据
单片机·嵌入式
第二层皮-合肥5 小时前
坦电容做电源滤波,放在陶瓷电容的前面还是后面好
单片机·嵌入式硬件