当前位置: 首页 > news >正文

基于STM32单片机PWM讲解(HAL库)

基于STM32单片机PWM讲解

一、PWM简介

PWM波形(Pulse Width Modulation,脉冲宽度调制波形)是一种占空比可变的脉冲波形。这种调制方式通过改变脉冲的宽度来控制电路中的信号强度和频率。具体来说,PWM波形中的高电平持续时间和低电平持续时间可以根据需要进行调整,从而实现对模拟信号电平的数字编码。

二、PWM原理图

输出比较可以通过**比较定时计数器的值 CNT 与设定的比较值 CCR,**可以控制输出引脚的电平状态(置高或置低),从而实现生成一定频率和占空比的 PWM 波形。
以下是PWM大致原理框图
在这里插入图片描述
以下是PWM大体时序图
在这里插入图片描述
以下是PWM重要参数:
频率 = 1/Ts
占空比 = Ton / Ts【高电平占该周期的比例】
分辨率 = 占空比变化步距【精确占空比变化】
在这里插入图片描述

三、PWM配置

TIM_HandleTypeDef pwm_handle = {0};//有结构体就要寻址到底
TIM_OC_InitTypeDef pwm_config = {0};
void PWM_init(uint16_t ARR,uint16_t PSC)
{pwm_handle.Instance = TIM4;//定时器选择pwm_handle.Init.Prescaler = PSC;//PSC预分频pwm_handle.Init.Period = ARR;//重载寄存数值pwm_handle.Init.CounterMode = TIM_COUNTERMODE_UP;//计数模式(向上计数)pwm_handle.Init.AutoReloadPreload =  TIM_OUTPUTSTATE_DISABLE;//重载寄存器HAL_TIM_PWM_Init(&pwm_handle);pwm_config.OCMode = TIM_OCMODE_PWM1;//PWM模式向上模式pwm_config.Pulse = ARR/2;        //CRR值后面要改现在无所谓pwm_config.OCPolarity = TIM_OCPOLARITY_LOW; //有效电平HAL_TIM_PWM_ConfigChannel(&pwm_handle,&pwm_config,TIM_CHANNEL_3);HAL_TIM_PWM_Start(&pwm_handle,TIM_CHANNEL_3);
}//map初始化
void HAL_TIM_PWM_MspInit(TIM_HandleTypeDef *htim)//弱函数
{if(htim->Instance == TIM4){GPIO_InitTypeDef gpio_initstruct;//设结构体//打开GPIO的时钟__HAL_RCC_GPIOB_CLK_ENABLE();__HAL_RCC_TIM4_CLK_ENABLE();gpio_initstruct.Pin = GPIO_PIN_8;//根据自己所需功能改引脚gpio_initstruct.Mode = GPIO_MODE_AF_PP;//复用推挽模式gpio_initstruct.Speed = GPIO_SPEED_FREQ_HIGH;//高速gpio_initstruct.Pull = GPIO_PULLUP;         //上拉//调用GPIO初始函数HAL_GPIO_Init(GPIOB,&gpio_initstruct);}
}//修改ccr寄存器值
void set_pwmprogrem(uint16_t val)//修改ccr的值从而(ARR),从而改变脉冲
{__HAL_TIM_SET_COMPARE(&pwm_handle,TIM_CHANNEL_3,val);
}

附图
在这里插入图片描述

http://www.xdnf.cn/news/157015.html

相关文章:

  • HTTP 协议深度解析:从基础到实战的完整指南
  • 运算放大器版图设计与后仿真实战指南
  • 如何在项目中使用双token机制?
  • Python类和对象三(十二)
  • 多线程(1)——认识线程
  • 交换机之配置系统基本信息(Basic Information of the Configuration System for Switches)
  • 架构进阶:105页PPT学习数字化转型企业架构设计手册【附全文阅读】
  • 【Python】使用uv管理python虚拟环境
  • 【计算机网络】信息时代的数字神经系统
  • 新电脑工作环境初始化2025
  • Python基于Django的全国二手房可视化分析系统【附源码】
  • 搭建spark-local模式
  • html css js网页制作成品——HTML+CSS+js美甲店网页设计(5页)附源码
  • 毕业项目-基于深度学习的入侵检测系统
  • 北斗导航 | Transformer增强BiLSTM网络的GNSS伪距观测量误差探测
  • 冯·诺依曼和哈佛架构​​​​两种架构的总线组成及核心特点
  • LiveCharts.WPF图表模块封装
  • asammdf 库的信号处理和数据分析:深入挖掘测量数据
  • 自然语言处理——语言转换
  • Redis常见面试题——List对象
  • 26 Arcgis软件常用工具有哪些
  • JUC多线程:辅助类CountDownLatch、CyclicBarrier、Semaphore实战指南(附保姆级代码)
  • AIGC在自动化测试领域的创新应用:智能生成测试用例与缺陷预测
  • 云原生--核心组件-容器篇-2-认识下Docker(三大核心之镜像,容器,仓库)
  • 前端与Rust后端交互:跨越语言鸿沟 (入门系列三)
  • JS自动化获取网站信息开发说明
  • Dify框架面试内容整理-Dify如何实现模型调用与管理?
  • 使用Django框架表单
  • 软件设计案例分析学习笔记
  • 如何创建一个导入模板?全流程图文解析