打印
[STM32L5]

【STM32L562 DK试用】点灯,呼吸效果没有做到传说中那么好(四)

[复制链接]
83|2
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
地瓜patch|  楼主 | 2025-3-5 22:22 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
拿到开发版,不点个灯便称英雄也枉然。
开个定时器,变个频。

友情提示,Tim1的channal1对应的是下图中的IO

代码如下
在main()中声明以后调用

while (1)
  {
               
       
                if(PULSE1_ADD == 1)
                {
                        PULSE1_V++;
                        if(PULSE1_V >= 900 )
                        {
                                        PULSE1_SUB = 1;
                                        PULSE1_ADD = 0;
                        }
                       
                }
                else if(PULSE1_SUB == 1)
                {
                                PULSE1_V--;
                                if(PULSE1_V <= 100 )
                                {
                                                PULSE1_SUB = 0;
                                                PULSE1_ADD = 1;
                                }
                                HAL_Delay(20);       
                }
                HAL_Delay(20);       
                TIM1_Config(PULSE1_V);
                HAL_TIM_PWM_Start(&htim4, TIM_CHANNEL_1);
  }


定时器配置,以下配置为定时器tim1的时钟频率为4MHz,
输出PWM频率为1kHz,占空比在主函数中先递增再递减。

void TIM1_Config(uint8_t PULSE1_V)
{
  TIM_MasterConfigTypeDef sMasterConfig = {0};
  TIM_OC_InitTypeDef sConfigOC = {0};
  htim4.Instance = TIM4;
  htim4.Init.Prescaler = 1;//3
  htim4.Init.CounterMode = TIM_COUNTERMODE_UP;
  htim4.Init.Period = 1000;//39   
  htim4.Init.ClockDivision = TIM_CLOCKDIVISION_DIV1;
  htim4.Init.AutoReloadPreload = TIM_AUTORELOAD_PRELOAD_DISABLE;
  if (HAL_TIM_PWM_Init(&htim4) != HAL_OK)
  {
    Error_Handler();
  }
  sMasterConfig.MasterOutputTrigger = TIM_TRGO_RESET;
  sMasterConfig.MasterSlaveMode = TIM_MASTERSLAVEMODE_DISABLE;
  if (HAL_TIMEx_MasterConfigSynchronization(&htim4, &sMasterConfig) != HAL_OK)
  {
    Error_Handler();
  }
  sConfigOC.OCMode = TIM_OCMODE_PWM1;
  sConfigOC.Pulse = PULSE1_V;//20   50%
  sConfigOC.OCPolarity = TIM_OCPOLARITY_HIGH;
  sConfigOC.OCFastMode = TIM_OCFAST_DISABLE;
  if (HAL_TIM_PWM_ConfigChannel(&htim4, &sConfigOC, TIM_CHANNEL_1) != HAL_OK)
  {
    Error_Handler();
  }
}


使用特权

评论回复
沙发
Wxy8030| | 2025-3-6 06:56 | 只看该作者
这效果可以了

使用特权

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

本版积分规则

个人签名:出一块TI-PLABS-AMP-EVM

1374

主题

13486

帖子

27

粉丝