【STM32CubeMX——PWM配置】

使用CubeMX对STM32进行PWM配置

一、使用CubeMX进行基本配置
1、选择定时器通道

随便选择一个为例子,TIM2channel 1
在这里插入图片描述

2、对TIM2 channel1的预分频器、自动重装值等进行设置

时钟配置的是72MHZ的,预分频器就设置的71
在这里插入图片描述
关于PWM的模式选择
一、向上计数模式(Up-Counting):
1、在向上计数模式下,PWM计数器从0开始递增计数,直到达到预设的自动重载值(ARR)。
2、一旦计数器达到ARR值,它将产生一个计数器溢出事件,并且计数器会重新从0开始计数。
3、PWM的输出电平会根据计数器的值与比较匹配寄存器(CCR)之间的关系来确定。通常,当计数器的值小于CCR时,PWM输出高电平;当计数器的值大于或等于CCR时,PWM输出低电平。
二、向下计数模式(Down-Counting):
1、在向下计数模式下,PWM计数器从预设的自动重载值(ARR)开始递减计数,直到达到0。
一旦计数器达到0值,它将产生一个计数器溢出事件,并且计数器会重新从ARR开始递减计数。
2、PWM的输出电平也会根据计数器的值与CCR之间的关系来确定,与向上计数模式类似。
三、上下计数模式(Up-Down Counting):
1、在上下计数模式下,PWM计数器首先从0开始递增计数,直到达到预设的自动重载值(ARR)。然后,计数器从ARR开始递减计数,直到达到0值。这个过程会不断重复,形成一个周期性的上下计数循环。
2、PWM的输出电平在计数器的值小于CCR时输出高电平,而在计数器的值大于或等于CCR时输出低电平
PWM频率:Freq = CK_PSC/(PSC+1)/(ARR+1)
PWM占空比:Duty = CRR/(ARR+1)
PWM分辨率:Reso = 1/(ARR+1)

二、在keil 5 中进一步完善
1、开启定时器1的通道1的PWM输出

stm32f1xx_hal_tim.c里面找到HAL_TIM_PWM_Start()函数开启定时器1的通道1的PWM输出

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

在主函数里面或者其它地方都可以,我是在定时器的初始化里面开启的

2、改变CCR的值(改变占空比)

有两种方法,一种是调用hal库里面的__HAL_TIM_SetCompare()函数,还有一种就是直接操作寄存器`

  /* USER CODE BEGIN 2 */
	int speed=0;
	__HAL_TIM_SetCompare(&htim2,TIM_CHANNEL_1,speed);
	 TIM2->CCR1 = speed;         与上方作用相同
  /* USER CODE END 2 */

### STM32 CubeMX PWM 配置教程 #### 一、系统时钟配置 在使用STM32CubeMX进行PWM配置之前,需先完成系统的时钟配置。通常情况下,会使用外部晶振作为时钟源,并将其倍频至目标主频。例如,在STM32F407VET6中,可以将外部8 MHz晶振通过PLL倍频到168 MHz[^3]。 #### 二、定时器功能选择 进入STM32CubeMX软件界面后,找到需要使用的定时器外设(如TIM1、TIM2等),并为其分配功能。对于PWM输出模式,应选择“Timer Output Compare”;而对于输入捕获,则选择“Input Capture Channel”。这一步骤决定了后续的硬件资源分配以及中断服务函数的生成方式[^1]。 #### 三、参数设定 ##### 输出模式下的主要参数调整包括但不限于以下几个方面: - **预分频系数(PSC)** 和 **自动重装载寄存器(ARR)** 的组合决定载波频率。 载波周期 \( T_c = (PSC + 1)(ARR + 1)/f_{clk} \),其中\( f_{clk} \) 是定时器的工作时钟频率。如果希望得到500kHz的PWM信号,可以通过设置合适的 PSC 值和 ARR 来实现。比如当 PSC=7, ARR=15 时可满足条件[^4]。 - **极性和死区时间** 设置依据具体应用场景而定,默认无特殊需求下保持常规选项即可。 - 对于高级控制型定时器(TIMERx), 还存在互补通道及其对应保护机制等相关属性可供调节。 ##### 输入捕捉模式则重点在于触发边沿的选择上——上升沿还是下降沿亦或是双边沿触发来启动一次转换过程从而获取脉宽数据或者计算周期长度等等. #### 四、代码生成与调试验证 完成上述图形化界面操作之后点击GENERATE CODE按钮让工具自动生成初始化框架文件夹结构连同必要的驱动库一起打包导出供IDE编译链接运行测试之用[^2]. 以下是简单的PWM开启关闭实例演示片段: ```c // 启动 TIM15 CH1 上的 PWM 波形输出 功率为最大即占空比为百分之百. HAL_TIM_PWM_Start(&htim15,TIM_CHANNEL_1); __HAL_TIM_SET_COMPARE(&htim15,TIM_CHANNEL_1,15); // 关闭 TIM15 CH1 上的 PWM 波形输出 即使能端口处于低电平状态相当于完全截止电流流动情况. HAL_TIM_PWM_Stop(&htim15,TIM_CHANNEL_1); __HAL_TIM_SET_COMPARE(&htim15,TIM_CHANNEL_1,0); ``` ---
评论 14
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值