首页 > 其他分享 >STM32-PWM配置流程及作用

STM32-PWM配置流程及作用

时间:2024-07-03 22:55:21浏览次数:20  
标签:使能 定时器 TIM14 流程 STM32 TIM GPIO PWM

STM32F407ZET6单片机配置PWM(脉冲宽度调制)

PWM配置流程

STM32F407ZET6单片机配置PWM的流程通常包括以下几个步骤:

  1. 时钟使能:
    • 首先,需要使能定时器和相关IO口的时钟。这通常通过调用RCC(Reset and Clock Control)相关的函数来实现,比如RCC_APB1PeriphClockCmd()用于使能APB1总线上的定时器时钟,RCC_AHB1PeriphClockCmd()用于使能AHB1总线上的GPIO时钟。
  2. IO口初始化:
    • 接着,需要初始化用于PWM输出的IO口。这包括设置IO口的模式为复用功能输出(因为PWM输出通常是通过定时器的复用功能实现的),并配置IO口的输出类型(如推挽输出)、速度等参数。
  3. 复用映射:
    • 将GPIO引脚复用映射到指定的定时器上。这是通过调用GPIO的复用映射函数实现的,比如GPIO_PinAFConfig()
  4. 定时器初始化:
    • 初始化定时器,包括设置定时器的预分频器(Prescaler)、自动重装载寄存器(ARR)的值、时钟分频(ClockDivision)等。这些参数决定了PWM的频率和周期。
  5. PWM模式配置:
    • 配置定时器的输出比较参数,以设置PWM的模式(如PWM模式1或PWM模式2)、输出状态(使能或禁用)、输出极性(高电平有效或低电平有效)等。
  6. 使能预装载寄存器:
    • 使能定时器的预装载寄存器,以确保在更新事件发生时,新的参数值能够正确地加载到活动寄存器中。
  7. 使能定时器:
    • 最后,使能定时器,开始PWM波形的生成。

PWM的作用

PWM在STM32F407ZET6单片机中有多种应用,主要包括:

  1. 控制电机速度:

    • 通过改变PWM波的占空比,可以控制直流电机或步进电机的速度。占空比越大,电机转速越快;占空比越小,电机转速越慢。
  2. 调节灯光亮度:

    • PWM信号同样可以用于调节LED等光源的亮度。通过调整PWM波的占空比,可以改变LED的平均电流,从而改变其亮度。
  3. 精确控制电源:

    • 在一些需要精确控制电源输出的场合,如开关电源、逆变器等,PWM信号可以用来调节输出电压或电流的大小。
  4. 信号传输:

    • 在通讯等信号传输领域,PWM信号因其数字形式的优点(如抗干扰能力强)而得到广泛应用。通过PWM编码,可以将模拟信号转换为数字信号进行传输。

    综上所述,STM32F407ZET6单片机配置PWM的流程涉及多个步骤,包括时钟使能、IO口初始化、复用映射、定时器初始化、PWM模式配置、使能预装载寄存器和使能定时器等。而PWM的作用则主要体现在电机控制、灯光调节、电源控制和信号传输等方面。

    代码示例

    /*******************************************************************
    *
    *	函数名称:	TIM14_Config
    *	函数功能:   配置定时器输出pwm,改变LED的亮度
    * 	函数参数:	无
    *   返回结果:   
    * 	注意事项:   None
    * 	函数作者:  [email protected]
    *	创建日期:   2024/04/25
    *	修改历史:
    *	函数版本:	V1.0
    * *****************************************************************/
    void  TIM14_Config()
    {
    	//1.打开TIM14+GPIOF的时钟
    	RCC_APB1PeriphClockCmd(RCC_APB1Periph_TIM14,  ENABLE);
    	RCC_AHB1PeriphClockCmd(RCC_AHB1Periph_GPIOF,  ENABLE);
    	
    	GPIO_InitTypeDef GPIO_InitStructure;
    	GPIO_InitStructure.GPIO_Pin = GPIO_Pin_9;
    	GPIO_InitStructure.GPIO_Mode = GPIO_Mode_AF;
    	GPIO_InitStructure.GPIO_Speed = GPIO_Speed_100MHz;
    	GPIO_InitStructure.GPIO_OType = GPIO_OType_PP;
    	GPIO_InitStructure.GPIO_PuPd = GPIO_PuPd_UP ;
    	GPIO_Init(GPIOF, &GPIO_InitStructure);
    	GPIO_PinAFConfig(GPIOF, GPIO_PinSource9, GPIO_AF_TIM14);
    	
    	//2.定义结构体变量并对结构体变量的成员进行赋值,1s可以生成100个脉冲
        TIM_TimeBaseInitTypeDef  TIM_TimeBaseStructure;
        //预分频值,TIM14的时钟是84MHZ,所以可以降低频率 100us计数一次
    	TIM_TimeBaseStructure.TIM_Prescaler = 8400-1;
        //计数次数,这个值会写入自动重载寄存器 100us * 100 = 10ms    
    	TIM_TimeBaseStructure.TIM_Period = 100-1;
        //计数模式,基本定时器TIM6和TIM7只允许递增计数
    	TIM_TimeBaseStructure.TIM_CounterMode = TIM_CounterMode_Up; 
        
    	//3.对定时器进行初始化
    	TIM_TimeBaseInit(TIM14, &TIM_TimeBaseStructure);
        TIM_OCInitTypeDef  TIM_OCInitStructure;
    	TIM_OCInitStructure.TIM_OCMode = TIM_OCMode_PWM1;
    	TIM_OCInitStructure.TIM_OutputState = TIM_OutputState_Enable;
    	TIM_OCInitStructure.TIM_Pulse = 95;//可以改变此占空比改变CCR的值
    	TIM_OCInitStructure.TIM_OCPolarity = TIM_OCPolarity_Low; //此赋值为低电平有效 
    	TIM_OC1Init(TIM14, &TIM_OCInitStructure);
    
    	TIM_OC4PreloadConfig(TIM14, TIM_OCPreload_Enable);
    
        TIM_ARRPreloadConfig(TIM14, ENABLE);
    	//6.打开定时器TIM14
    	TIM_Cmd(TIM14, ENABLE);
    }
    

标签:使能,定时器,TIM14,流程,STM32,TIM,GPIO,PWM
From: https://www.cnblogs.com/zkbklink/p/18282695

相关文章

  • FreeRTOS移植到STM32
    本内容主要是讲解关于如果把FreeRTOS移植到STM32中去的操作。明白各部分的作用以及打通思路,具体操作按照下列进行相应的操作。第一:早一个STM32的裸机程序我们这里用的是STM32F103的芯片为例。 二、去官网上下载FreeRTOSV9.0.0源码在移植之前,我们首先要获取到......
  • 微信小程序-详细登录流程 - (图解+代码流程)
    目录项目准备     注册小程序和创建项目一、登录页面效果图头部区域头部区域代码展示布局组件和图片组件的使用弹性布局display:flex;登录内容区域登录内容区域代码展示bindsubmit="uplogin"代码注解切换登录区域切换登录区域代码展示<radio-group/><radio/>......
  • activiti流程配置——vue整合bpmn.js
    acitivti提供了流程图绘制的应用,可以整合到流程项目钟。但是现在很多项目都是前后端分离,vue前端开发比较多。所以,我用vue整合了一下bpmn。具体的整合过程,网上有大把的资料可以参考;我这边就不罗列了。我主要记录一下,vue整合bpmn过程中,对于activiti流程而言有几个地方要注意:......
  • STM32F407如何点亮一个呼吸灯(库函数)
    /*********************************************************************************@filemain.c*@author*@version*@date2024/07/03*@brief实现利用基本定时器TIM14实现定时10ms,每隔10ms从灭到亮逐渐变亮,再隔10ms从 亮到......
  • STM32基本定时器、通用定时器、高级定时器区别
    一.STM32基本定时器、通用定时器、高级定时器区别STM32系列微控制器中的定时器资源分为基本定时器(BasicTimer)、通用定时器(GeneralPurposeTimer)和高级定时器(AdvancedTimer)三类,它们在功能和复杂性上有所不同。以下是这三类定时器的详细区别:1.基本定时器(BasicTimer)功能特......
  • 2.测试流程
    一、软件测试流程获取测试需求---编写测试计划---制定测试方案---开发与设计测试用例---执行测试---提交缺陷报告---测试分析与评审---提交测试总结----准备下一版本测试二、软件测试过程模型测试过程的质量将直接影响测试结果的准确性和有效性。 1、V模型(要记图)优点:揭示......
  • 流程图
    流程图流程图和活动图都是用于描述程序执行过程的控制流,它们及其类似,需要主要的是活动图是有一些面向对象的思想,比如对象流,可以描述并发。流程图是面向面向过程的图。基本元素包含开始结束椭圆(活动图里面是实心圆和圆环+实心圆),一般用圆角矩形开始结束标记可以很明显的不......
  • 流程表单设计器开源优势多 助力实现流程化!
    实现流程化办公是很多职场企业的发展目标。应用什么样的软件可以实现这一目的?低代码技术平台、流程表单设计器开源的优势特点多,在推动企业降本增效、流程化办公的过程中作用明显,是理想的软件平台。那么,流程表单设计器开源的优势特点在哪里?一起在本文中寻找答案吧。当前,数字化转型......
  • 2024.07.03【读书笔记】|医疗科技创新流程(第二章 创新创造 商业模式基础)
    目录一级目录二级目录三级目录4.4商业模式基础引言商业模式定义商业模式的重要性商业模型的筛选影响客户与创新互动的主要因素商业模式的选择商业模式的变革创新者的角色总结一级目录二级目录三级目录4.4商业模式基础引言在医疗设备领域,商业模式通常是指如......
  • spring-security安全框架(超精细版附带流程讲解图)
    目录一、回顾一下二、security使用2.1覆盖掉默认配置「自定义配置」2.2如何自定义认证2.3纯纯自定义2.4jwt2.5官网认证流程2.6 RBAC模型4.1.创建表结构2.7如何实现权限流程一、回顾一下security干啥的?认证和授权使用方式引入依赖,基于springboo......