STM32F103 CubeMX 定时器输出PWM控制呼吸灯

使用的cubmx 软件的版本:6.2.0
最新版本 6.10(2024年3月11日)

1. 生成代码

1. 1 配置外部时钟,SWD口

在这里插入图片描述

1.2 配置定时器3

定时器的配置为500 ,所以250对应的就是50% 的占空比。
在这里插入图片描述

1.3 配置定时器2

使能定时器,
在这里插入图片描述
使能定时器的中断服务函数,这样下面就可以添加中断了。
在这里插入图片描述

时钟运行在72M上
在这里插入图片描述
下面就是配置工程,和生成代码
在这里插入图片描述

2. 代码编写的部分

这里启动了定时器2和定时器3,定时器2 是做为中断使用,定时器3则是直接调用的。

  /* USER CODE BEGIN 2 */
  HAL_TIM_Base_Start_IT(&htim2);
  HAL_TIM_PWM_Start(&htim3,TIM_CHANNEL_1);
  /* USER CODE END 2 */

在while循环中对占空比进行调节,从0-499的范围。
代码中__HAL_TIM_SetCompare 这个是用来控制定时器的占空比情况
也可以使用__HAL_TIM_SET_COMPARE 这个来替换,两个完全相同


  /* Infinite loop */
  /* USER CODE BEGIN WHILE */
 while (1)
  {
    /* USER CODE END WHILE */

    /* USER CODE BEGIN 3 */
	  while (pwmVal< 500)
	  {
		  pwmVal++;
		  __HAL_TIM_SetCompare(&htim3, TIM_CHANNEL_1, pwmVal);    //修改比较值,修改占空比
//		  TIM3->CCR1 = pwmVal;    与上方相同
		  HAL_Delay(1);
	  }
	  while (pwmVal)
	  {
		  pwmVal--;
		  __HAL_TIM_SetCompare(&htim3, TIM_CHANNEL_1, pwmVal);    //修改比较值,修改占空比
//		  TIM3->CCR1 = pwmVal;     与上方相同
		  HAL_Delay(1);
	  }
	  HAL_Delay(200);

  }
  /* USER CODE END 3 */

这个是定时器的中断服务函数,每次中断中翻转GPIO,
需要注意中断中不要增加比较费时的代码,

/* USER CODE BEGIN 4 */
void HAL_TIM_PeriodElapsedCallback(TIM_HandleTypeDef *htim)
{
    static unsigned char ledState = 0;
    if (htim == (&htim2))
    {
        if (ledState == 0)
            HAL_GPIO_WritePin(GPIOA,GPIO_PIN_4,GPIO_PIN_RESET);
        else
            HAL_GPIO_WritePin(GPIOA,GPIO_PIN_4,GPIO_PIN_SET);
        ledState = !ledState;
    }
}

/* USER CODE END 4 */

相关推荐

  1. STM32学习和实践笔记(24):PWM输出实验:呼吸

    2024-03-15 14:20:02       11 阅读

最近更新

  1. TCP协议是安全的吗?

    2024-03-15 14:20:02       19 阅读
  2. 阿里云服务器执行yum,一直下载docker-ce-stable失败

    2024-03-15 14:20:02       19 阅读
  3. 【Python教程】压缩PDF文件大小

    2024-03-15 14:20:02       20 阅读
  4. 通过文章id递归查询所有评论(xml)

    2024-03-15 14:20:02       20 阅读

热门阅读

  1. 【研发体系】CMMI 3 级和 5 级有什么区别?

    2024-03-15 14:20:02       17 阅读
  2. CatBoost高级教程:深度集成与迁移学习

    2024-03-15 14:20:02       23 阅读
  3. 通透!从头到脚讲明白线程锁

    2024-03-15 14:20:02       19 阅读
  4. points_foerstner

    2024-03-15 14:20:02       20 阅读
  5. python中列表常用函数

    2024-03-15 14:20:02       23 阅读
  6. C:数据结构王道

    2024-03-15 14:20:02       21 阅读
  7. Spring MVC LocaleResolver原理解析

    2024-03-15 14:20:02       19 阅读
  8. css动画和js动画的区别?

    2024-03-15 14:20:02       20 阅读