STM32开发(6)----CubeMX配置PWM

这篇具有很好参考价值的文章主要介绍了STM32开发(6)----CubeMX配置PWM。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。


前言

本章介绍使用STM32CubeMX对PWM进行配置的方法,PWM的基本原理,并通过示波器来测试实现结果,如果有LED灯也可以,PWM控制LED灯的亮度。

一、PWM的介绍

PWM(Pulse Width Modulation)脉冲宽度调制,是利用微处理器的数字输出来对模拟电路进行控制的一种非常有效的技术。它是把每一脉冲宽度均相等的脉冲列作为PWM波形,通过改变脉冲列的周期可以调频,改变脉冲的宽度或占空比可以调压,采用适当控制方法即可使电压与频率协调变化。可以通过调整PWM的周期、PWM的占空比而达到控制电流。例如输出占空比为50%,频率为10Hz的脉冲,高电平为3.3V.则其输出的模拟效果相当于输出一个1.65V的高电平。脉冲调制有两个重要的参数,第一个就是输出频率,频率越高,则模拟的效果越好。第二个就是占空比。占空比就是改变输出模拟效果的电压大小。占空比越大则模拟出的电压越大。

广泛应用在从测量、通信到功率控制与变换的许多领域中。STM32内置多个IO输出PWM通道。

stm32cubemx pwm,stm32基础教程,stm32,单片机,嵌入式硬件
脉冲宽度调制模式可以生成一个信号,该信号频率由自动重载寄存器(TIMx_ARR)寄存器值决定,其占空比则由捕获/比较寄存器(TIMx_CCRx) 寄存器值决定。
在 PWM 模式下,计数器寄存器(TIMx_CNT )总是与捕获/比较寄存器(TIMx_CCRx )进行比较,以确定是TIMx_CCRx>TIMx_CNT 还是 TIMx_CNT<TIMx_CCRx(取决于计数器计数方向)。
下图为PWM边沿对齐模式(递增计数配置)。图中CCRx为捕获/比较寄存器,OCxREF为输出比较信号,CCxIF为中断状态标识位。
stm32cubemx pwm,stm32基础教程,stm32,单片机,嵌入式硬件

当CCRX=4时,当捕获/比较寄存器(TIMx_CCRx)比计数器小时,输出高电平,反之则输出低电平。
因此改变CCRx的值就可以改变PWM输出的占空比,改变ARR的值就可以改变PWM输出的频率.

二、实验过程

1.实验材料

  • STM32F103C6T6最小系统开发板

stm32cubemx pwm,stm32基础教程,stm32,单片机,嵌入式硬件

  • ST-LINK V2

stm32cubemx pwm,stm32基础教程,stm32,单片机,嵌入式硬件

  • 杜邦线
  • 示波器

2.STM32CubeMX配置PWM

选择芯片stm32f103c6t6,新建工程

stm32cubemx pwm,stm32基础教程,stm32,单片机,嵌入式硬件

设置时钟源,最小系统外部晶振8Mhz,作为外部高速HSE时钟源。由于没有外接外部低速晶振,这里低速时钟源选择旁路时钟源。

stm32cubemx pwm,stm32基础教程,stm32,单片机,嵌入式硬件

配置时钟树,这里使用官方推荐的配置

stm32cubemx pwm,stm32基础教程,stm32,单片机,嵌入式硬件

配置引脚功能,从datasheet中可以PA9可以复用为TIM1_CH2输出,因此将管脚PA9配置为定时器1的通道2输出。同时TIM1的通道2配置为PWM,这样就可以在PA9管脚得到PWM输出。datasheet截图如下:
stm32cubemx pwm,stm32基础教程,stm32,单片机,嵌入式硬件

配置如下:
stm32cubemx pwm,stm32基础教程,stm32,单片机,嵌入式硬件

前面设置HSE时钟为72MHz;TIM1的时钟挂载在APB2 Time Clocks上为72MHz
stm32cubemx pwm,stm32基础教程,stm32,单片机,嵌入式硬件
预分频系数设置为72-1,向上计数,自动重装载值设为500-1,则计时器时钟频率为1MHz,计时器周期为1us,定时器溢出周期(即PWM周期)为 500 * 1 = 500us,溢出频率(即PWM频率)为1/500us = 2KHz
stm32cubemx pwm,stm32基础教程,stm32,单片机,嵌入式硬件
Code Generator中设置只拷贝使用到的库,分离.c和.h文件

stm32cubemx pwm,stm32基础教程,stm32,单片机,嵌入式硬件

设置好项目名称和路径,点击GENERATE CODE即可,生成后使用keil5 IDE打开。

stm32cubemx pwm,stm32基础教程,stm32,单片机,嵌入式硬件

3.代码实现

实现一个周期为500us,占空比不断变化的pwm输出功能,代码如下

int main(void)
{
  /* USER CODE BEGIN 1 */

  /* USER CODE END 1 */

  /* MCU Configuration--------------------------------------------------------*/

  /* Reset of all peripherals, Initializes the Flash interface and the Systick. */
  HAL_Init();

  /* USER CODE BEGIN Init */
	uint16_t pwmVal=0;   //PWM占空比
  /* USER CODE END Init */

  /* Configure the system clock */
  SystemClock_Config();

  /* USER CODE BEGIN SysInit */

  /* USER CODE END SysInit */

  /* Initialize all configured peripherals */
  MX_GPIO_Init();
  MX_TIM1_Init();
  /* USER CODE BEGIN 2 */
	
  HAL_TIM_PWM_Start(&htim1, TIM_CHANNEL_2);   //开启定时器PWM输出  
  /* USER CODE END 2 */

  /* Infinite loop */
  /* USER CODE BEGIN WHILE */
   while (1)
  {
  /* USER CODE END WHILE */
 
  /* USER CODE BEGIN 3 */
 
	  while (pwmVal< 500)
	  {
		  pwmVal++;
		  __HAL_TIM_SetCompare(&htim1, TIM_CHANNEL_2, pwmVal);    //修改占空比
		  HAL_Delay(1);
	  }
	  while (pwmVal)
	  {
		  pwmVal--;
		  __HAL_TIM_SetCompare(&htim1, TIM_CHANNEL_2, pwmVal);    //修改占空比
		  HAL_Delay(1);
	  }
	  HAL_Delay(200);
 
  /* USER CODE END 3 */
 }
  /* USER CODE END 3 */
}

4.编译烧录

代码编译成功

stm32cubemx pwm,stm32基础教程,stm32,单片机,嵌入式硬件

在下载前检查keil是否检测到ST-LINK,选择魔法棒进行设置

stm32cubemx pwm,stm32基础教程,stm32,单片机,嵌入式硬件

如图所示,已经检测到ST-LINK 下载器

stm32cubemx pwm,stm32基础教程,stm32,单片机,嵌入式硬件

点击load,自动下载固件

stm32cubemx pwm,stm32基础教程,stm32,单片机,嵌入式硬件

5.硬件连接

烧录器ST-LINK V2和最小系统板的连接如图所示: 四线连接 SWDIO,GND,SWCLK,和3.3V电源

stm32cubemx pwm,stm32基础教程,stm32,单片机,嵌入式硬件

6.实验结果

由于没有找到LED灯,所以使用示波器进行测量,从测试结果可以看到,输出了PA9脚输出了电压为3.3V,周期为500 us的方波,且占空比在不断变化,如下图所示。

stm32cubemx pwm,stm32基础教程,stm32,单片机,嵌入式硬件
下面上个动图,看一下占空比不断变化的过程
stm32cubemx pwm,stm32基础教程,stm32,单片机,嵌入式硬件

总结

本章介绍STM32CubeMX对PWM进行配置的方法,PWM的技术实现原理,最后使用示波器来测试实验结果。文章来源地址https://www.toymoban.com/news/detail-780160.html

到了这里,关于STM32开发(6)----CubeMX配置PWM的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 用STM32CubeMX配置输出PWM信号控制多路舵机(HAL)

    (1)编程平台:Keil5 (2)CubeMX (1)本此使用最小核心板STM32F103C8T6为例 (2)一个舵机:SG90或者MG996等均可 (3)ST-link 下载器 (4)杜邦线若干         舵机的控制一般需要一个20ms左右的时基脉冲,该脉冲的高电平部分一般为0.5ms-2.5ms范围内的角度控制脉冲部分,总间隔为2ms。以180度角度

    2023年04月09日
    浏览(42)
  • STM32 PWM模式与输出比较模式的区别。PWM占空比不生效,在STM32CubeMX中配置PWM的两种模式——蓝桥杯嵌入式

      🎊【蓝桥杯嵌入式】专题正在持续更新中,原理图解析✨,各模块分析✨以及历年真题讲解✨都已更新完毕,欢迎大家前往订阅本专题🎏 🎏【蓝桥杯嵌入式】蓝桥杯第十届省赛真题 🎏【蓝桥杯嵌入式】蓝桥杯第十二届省赛程序真题 🎏【蓝桥杯嵌入式】蓝桥杯第十三届

    2023年04月15日
    浏览(67)
  • STM32 HAL库 STM32CubeMX -- PWM(呼吸灯)

    PWM (Pulse Width Modulation)就是对外输出脉宽(即占空比)可调的方波信号,简称脉宽调制; 信号频率由自动重装寄存器ARR 的值决定,占空比由比较寄存器CCR 的值决定。 PWM模式1 : 在向上计数时 ,一旦TIMx_CNTTIMx_CCR1时通道1为有效电平,否则为无效电平; 在向下计数时 ,一旦

    2024年02月01日
    浏览(52)
  • STM32开发(16)----CubeMX配置DMA

    本章介绍使用STM32CubeMX对DMA进行配置的方法,DMA的原理、概念和特点,配置各个步骤的功能,并通过串口DMA传输实验方式验证。 DMA(Direct Memory Access),即直接存储器访问。 DMA 传输方式无需 CPU 直接控制传输,也没有中断处理方式那样保留现场和恢复现场的过程,通过硬件为

    2024年02月15日
    浏览(46)
  • STM32开发(18)----CubeMX配置RTC

    本章介绍使用STM32CubeMX对RTC进行配置的方法,RTC的原理、概念和特点,配置各个步骤的功能,并通过实验方式验证。 RTC (Real Time Clock),实质是一个 掉电后还继续运行的定时器。从定时器的角度来说,相对于通用定时器 TIM 外设,它十分简单,只有很纯粹的计时和触发中断的

    2023年04月27日
    浏览(41)
  • STM32开发(9)----CubeMX配置外部中断

    本章介绍使用STM32CubeMX对引脚的外部中断进行配置,介绍了中断架构体系,外部中断/事件控制器(EXTI),嵌套向量中断控制器(NIVC),并通过实验展示配置后的效果。 中断是指计算机运行过程中,出现某些意外情况需主机干预时,机器能自动停止正在运行的程序并转入处理

    2024年02月15日
    浏览(46)
  • STM32开发(14)----CubeMX配置ADC

    本章介绍使用STM32CubeMX对ADC进行配置的方法,ADC的原理、概念和特点,配置各个步骤的功能,并通过单通道,多通道,DMA三种方式实现采集。 ADC 即模拟数字转换器,英文详称 Analog-to-digital converter,可以将外部的模拟信号转换为数字信号。 以下是datasheet当中的内容,我就做个

    2023年04月13日
    浏览(47)
  • STM32开发(10)----CubeMX配置基本定时器

    本章介绍使用STM32CubeMX对基本定时器进行配置的方法,STM32F103高性能系列设备包括基本定时器、高级控制定时器、通用定时器、看门狗定时器和 SysTick 定时器,但是STM32F103C6t6上资源比较有限(高级定时器TIM1,通用定时器TIM2和TIM3),没有真正的基本定时器,其实通用定时器和

    2024年02月16日
    浏览(70)
  • STM32 CubeMX 定时器(普通模式和PWM模式)

    定时器打开与关闭 开启PWM通道 设置PWM,占空比 方式1 方式2 值越大灯越亮

    2024年02月15日
    浏览(34)
  • STM32 通过PWM输出一个方波并通过定时器输入捕获模式测量方波的周期(cubeMX+keil配置)

    前言:本文章用cubeMX和keil来进行代码编写,实现STM32的相应功能 本文章使用的STM32核心板是STM32H743VIT6,如果使用的是其他的核心板操作过程类似,可以尝试使用此教程。 (1)首先点击左侧的Timers  (2)选择一个定时器配置PWM 我选择的是TIM5,如上图 点击TIM5 Mode的配置如下

    2024年02月19日
    浏览(52)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包