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

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

  • [1. 生成代码](#1. 生成代码)
    • [1. 1 配置外部时钟,SWD口](#1. 1 配置外部时钟,SWD口)
    • [1.2 配置定时器3](#1.2 配置定时器3)
    • [1.3 配置定时器2](#1.3 配置定时器2)
  • [2. 代码编写的部分](#2. 代码编写的部分)

使用的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则是直接调用的。

c 复制代码
  /* 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 这个来替换,两个完全相同

c 复制代码
  /* 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,

需要注意中断中不要增加比较费时的代码,

c 复制代码
/* 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 */
相关推荐
李永奉3 小时前
中科蓝讯SDK开发-BT893x 面条耳机连接vivo手机后连接APP端,最后手机端设置页面手动断开蓝牙连接,此时耳机端假断开
c语言·开发语言·嵌入式硬件·物联网·智能手机·电脑
大爱编程♡3 小时前
STM32-DMA
stm32·单片机·嵌入式硬件
云泽8084 小时前
STM32 USART 详解(三):硬件架构、内部寄存器与物理层收发原理
stm32·嵌入式硬件·硬件架构
天空'之城4 小时前
单片机基础核心知识点汇总(三十三)
数据库·单片机·嵌入式硬件
数字新视界6 小时前
机房动环监控的智能化管理与安全提升探索
嵌入式硬件·物联网·数据中心·数据中心基础设施管理·dcim管理系统
@嵌入式扫地僧7 小时前
TFLite Micro STM32/ESP32 开箱即用推理骨架 + INT8 量化脚本实战:零调试跑通端侧 AI 推理完整步骤
人工智能·嵌入式硬件·tinyml·端侧ai·tflite micro
自小吃多7 小时前
高云FPGA ModelSim中的仿真
笔记·嵌入式硬件·fpga开发
单片机仿真设计7 小时前
基于 STM32 的家庭环境监测与火灾报警灭火系统(Proteus 仿真)
stm32·单片机·嵌入式硬件·proteus·毕设
深圳市恒锐丰科技杨生8 小时前
EG4321 锂电池 CC‑CV 充电管理控制器|屹晶 EGmicro
嵌入式硬件·硬件工程
辰域电子8 小时前
STM32项目开源:智能万年历/智能闹钟设计(代码+原理图+仿真)
stm32·单片机·嵌入式硬件·开源·proteus