0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

STM32CubeMX之定时器PWM输出

嵌入式技术 来源:嵌入式技术 作者:嵌入式技术 2022-05-31 09:19 次阅读

脉冲宽度调制模式(PWM)可以产生一个由TIMx_ARR寄存器确定频率、由TIMx_CCRx寄存器确定占空比的信号
  本示例实现 IO 输出模式–PWM 波形输出。 以 LED 驱动为例, 使用定时器高级功能(PWM 模式), 实现呼吸灯效果。

1.硬件接口

  本硬件平台有3个LED灯分别为LED2、LED3、LED4LED2接PA1,LED2接PB8,LED4接PB9,硬件原理图如下:

在这里插入图片描述

根据STM32引脚定义手册或者STM32CUbeMX软件我们可得知定时器4的CH1和CH2对应外部引脚PB8和PB9。

在这里插入图片描述

2 软件设计

  打开STM32CubeMX工具,配置定时器4,将PB8配置为定时器4通道3(复用推挽输出),PB9配置为定时器4通道4(复用推挽输出)。

poYBAGKUlTGAc1sYAAElSouWhz0140.pngpoYBAGKUltuAMEWcAABoD6KovpU624.png#pic_centerpoYBAGKUlWuAeKGkAAHYA-wq1gs266.png

3.参数说明

模式 说明
Input capture direct mode 输入捕获直接模式
Input capture indirectmode 输入捕获间接模式
Input capture triggered by TRC 输入捕获触发器模式
Output compare no output 输出比较(冻结模式000 )
Output compare CH3 输出比较(001)
PWM Generation No output PWM产生无输出
PWM Generation CH3 PWM输出到CH3
CH3 Combined channels 联合通道
xor activation 定时器输入异或模式
poYBAGKUltuAPC4pAABw31jFoKE208.png#pic_center

4. 代码生成

pYYBAGKUlfmAUAOiAAO_mg10V2w646.png

PWM模式配置:

在这里插入图片描述

PB8、PB9引脚配置和PWM模式使能

HAL_TIM_PWM_Start(timHandle,TIM_CHANNEL_3);//初始化通道3
HAL_TIM_PWM_Start(timHandle,TIM_CHANNEL_4);//初始化通道4

引脚模式配置及PWM初始化

pYYBAGKUljKAABDwAAPS43L0PPg238.png

4.呼吸灯主函数示例

while (1)
  {
    /* USER CODE END WHILE */

    /* USER CODE BEGIN 3 */
		/*实现呼吸灯*/
		if(flag==0)i++;
		else i--;
		if(i>=300)flag=1;
		if(i==0)flag=0;
		HAL_Delay(3);
		htim4.Instance->CCR3=i;//调节占空比
		htim4.Instance->CCR4=i;
  }

5.HAL库定时器常用函数介绍

HAL库中定时器基本功能函数源码均在stm32f1xx_hal_tim.c中,高级功能函数在stm32f1xx_hal_tim_ex.c中,本小节主要介绍几个常用函数。(以下列举函数可能需要用户调用或修改)。

/*硬件层初始化:时钟、中断,DMA*/
void HAL_TIM_Base_MspInit(TIM_HandleTypeDef *htim);
/*中断方式开启定时器*/
HAL_StatusTypeDef HAL_TIM_Base_Start_IT(TIM_HandleTypeDef *htim);
/*DMA方式开启定时器*/
HAL_StatusTypeDef HAL_TIM_Base_Start_DMA(TIM_HandleTypeDef *htim, uint32_t *pData, uint16_t Length);
/*开启定时器PWM模式*/
HAL_StatusTypeDef HAL_TIM_PWM_Start(TIM_HandleTypeDef *htim, uint32_t Channel);
/*获取状态*/
HAL_TIM_StateTypeDef HAL_TIM_Base_GetState(TIM_HandleTypeDef *htim);
/*中断方式开启定时器输入捕获功能*/
HAL_StatusTypeDef HAL_TIM_IC_Start_IT(TIM_HandleTypeDef *htim, uint32_t Channel)

6.软件仿真效果展示

  通过KEIL软件仿真,查看引脚电平变化,KEIL软件相关设置:
CPU DLL:SARMCM3.DLL
Dialog DLL:DARMSTM.DLL Parameter:-pSTM32F103C8

watermark,type_d3F5LXplbmhlaQ,shadow_50,text_Q1NETiBASVRf6Zi_5rC0,size_20,color_FFFFFF,t_70,g_se,x_16#pic_center

进入仿真模式:

在这里插入图片描述

查看引脚电平变化波形:

在这里插入图片描述pYYBAGKUlpuAZh-iAAOSwTacxpY098.png

波形效果:

watermark,type_d3F5LXplbmhlaQ,shadow_50,text_Q1NETiBASVRf6Zi_5rC0,size_20,color_FFFFFF,t_70,g_se,x_16#pic_center

声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
  • PWM
    PWM
    +关注

    关注

    114

    文章

    4820

    浏览量

    209559
  • STM32
    +关注

    关注

    2232

    文章

    10649

    浏览量

    347875
  • 定时器
    +关注

    关注

    23

    文章

    3124

    浏览量

    111898
  • 呼吸灯
    +关注

    关注

    9

    文章

    106

    浏览量

    42457
  • kell
    +关注

    关注

    0

    文章

    3

    浏览量

    1965
收藏 人收藏

    评论

    相关推荐

    STM32CubeMx入门教程(3):定时器的使用

    导语“ 使用STM32CubeMx 生成初始化定时器代码,实现定时器特定定时
    发表于 07-11 15:22 2209次阅读
    <b class='flag-5'>STM32CubeMx</b>入门教程(3):<b class='flag-5'>定时器</b>的使用

    STM32CubeMx入门教程(4):PWM应用

    导语“使用STM32CubeMx配置定时器输出PWM波,生成初始化代码。”
    发表于 07-11 15:23 870次阅读
    <b class='flag-5'>STM32CubeMx</b>入门教程(4):<b class='flag-5'>PWM</b>应用

    stm32cubemx配置定时器

    stm32cubemx配置定时器,文章目录前言keil主函数时钟配置中断响应CUBE主函数配置函数中断响应前言本文主要介绍使用keil和STM32CubeMX两种工具实现基本定时器功能
    发表于 08-10 07:55

    Stm32CubeMx基本定时器的概念

    Stm32CubeMx基本定时器基本定时器概念Stm32CubeMx 配置基本配置配置LED灯配置晶振时钟配置串口时钟数配置TIM6定时器
    发表于 08-18 08:18

    STM32CubeMX基本定时器接口怎么使用?

    STM32CubeMX基本定时器接口怎么使用?
    发表于 11-24 07:35

    基于STM32CUBEMX的高级定时器输出两路PWM

    STM32CUBEMX配置教程(五)高级定时器输出两路PWM波基于STM32H743VI使用STM32C
    发表于 03-02 07:02

    【技术精选】嵌入式STM32原创征文活动精选文章

    网络协议栈移植步骤与方案STM32CubeMX定时器PWM输出STM32CubeMx
    发表于 07-27 18:26

    【MCU】基于STM32CubeMX定时器中断实现LED闪烁

    基于STM32CubeMX定时器中断实现 LED 闪烁本实验基于STM32CubeMX实现对STM32开发板的配置,通过定时器中断实现 LE
    发表于 10-29 11:06 20次下载
    【MCU】基于<b class='flag-5'>STM32CubeMX</b><b class='flag-5'>定时器</b>中断实现LED闪烁

    STM32CUBEMX配置教程(十二)STM32定时器触发的固定频率ADC采样(使用DMA)

    STM32CUBEMX配置教程(十二)STM32定时器触发的固定频率ADC采样(使用DMA)
    发表于 11-24 13:51 83次下载
    <b class='flag-5'>STM32CUBEMX</b>配置教程(十二)<b class='flag-5'>STM32</b>的<b class='flag-5'>定时器</b>触发的固定频率ADC采样(使用DMA)

    STM32CUBEMX配置教程(十三)STM32定时器触发的固定频率DAC输出(使用DMA)

    STM32CUBEMX配置教程(十三)STM32定时器触发的固定频率DAC输出(使用DMA)
    发表于 11-24 14:06 44次下载
    <b class='flag-5'>STM32CUBEMX</b>配置教程(十三)<b class='flag-5'>STM32</b>的<b class='flag-5'>定时器</b>触发的固定频率DAC<b class='flag-5'>输出</b>(使用DMA)

    STM32CubeMX实战教程(五)——通用定时器PWM输出

    前言在上一章《STM32CubeMX实战教程(四)——基本定时器(还是点灯)》中,已经介绍过基本定时器的功能及用法,在这一章中,我讲主要介绍一下通用定时器的相关功能以及配置方法,废话不
    发表于 11-26 15:36 13次下载
    <b class='flag-5'>STM32CubeMX</b>实战教程(五)——通用<b class='flag-5'>定时器</b>(<b class='flag-5'>PWM</b><b class='flag-5'>输出</b>)

    STM32CubeMX_定时器中断_PWM

    文章目录前言STM32CubeMX新建工程基本定时器配置生成代码定时器中断PWM配置工程代码前言STM32CubeMX_环境搭建_GPIO_
    发表于 12-05 13:51 13次下载
    <b class='flag-5'>STM32CubeMX</b>_<b class='flag-5'>定时器</b>中断_<b class='flag-5'>PWM</b>

    STM32CUBEMX(1)--PWM

    本篇文章主要介绍如何使用STM32CubeMX输出PWM,并制作呼吸灯效果。
    的头像 发表于 11-14 15:29 2006次阅读
    <b class='flag-5'>STM32CUBEMX</b>(1)--<b class='flag-5'>PWM</b>

    STM32CUBEMX开发GD32F303(12)----输出PWM及修改PWM频率与占空比

    本章STM32CUBEMX配置STM32F103,并且在GD32F303中进行开发,同时通过开发板内进行验证。 本章主要配置定时器输出PWM
    的头像 发表于 11-30 14:40 2966次阅读
    <b class='flag-5'>STM32CUBEMX</b>开发GD32F303(12)----<b class='flag-5'>输出</b><b class='flag-5'>PWM</b>及修改<b class='flag-5'>PWM</b>频率与占空比

    STM32CUBEMX开发GD32F303(13)----定时器TIM捕获PWM测量频率与占空比

    概述 本章STM32CUBEMX配置STM32F103,并且在GD32F303中进行开发,同时通过开发板内进行验证。 本章STM32CUBEMX配置STM32F103
    的头像 发表于 12-07 10:15 2719次阅读
    <b class='flag-5'>STM32CUBEMX</b>开发GD32F303(13)----<b class='flag-5'>定时器</b>TIM捕获<b class='flag-5'>PWM</b>测量频率与占空比