STM32 PWM工作过程

以通道1为例:

CCR1:捕获比较(值)寄存器(x=1,2,3,4):设置比较值。

CCMR1: OC1M[2:0]位:

对于PWM方式下,用于设置PWM模式1【110】或者PWM模式2【111】

CCER:CC1P位:输入/捕获1输出极性。0:高电平有效,1:低电平有效。

CCER:CC1E位:输入/捕获1输出使能。0:关闭,1:打开。

PWM模式1 & PWM模式2

void TIM_OC2PreloadConfig(TIM_TypeDef* TIMx, uint16_t TIM_OCPreload);

void TIM_ARRPreloadConfig(TIM_TypeDef* TIMx, FunctionalState NewState);

STM32 定时器3输出通道引脚

PWM输出库函数

void TIM_OCxInit(TIM_TypeDef* TIMx, TIM_OCInitTypeDef* TIM_OCInitStruct);

 设置比较值函数:

void TIM_SetCompareX(TIM_TypeDef* TIMx, uint16_t Compare2);

使能输出比较预装载:

void TIM_OC2PreloadConfig(TIM_TypeDef* TIMx, uint16_t TIM_OCPreload);

使能自动重装载的预装载寄存器允许位:

void TIM_ARRPreloadConfig(TIM_TypeDef* TIMx, FunctionalState NewState);

PWM输出实验:

使用定时器3的PWM功能,输出占空比可变的PWM波,用来驱动LED灯,从而达到LED【PB5】亮度由暗变亮,又从亮变暗,如此循环。

PWM输出配置步骤:

①     使能定时器3和相关IO口时钟。

使能定时器3时钟:RCC_APB1PeriphClockCmd();

使能GPIOB时钟:RCC_APB2PeriphClockCmd();

②     初始化IO口为复用功能输出。函数:GPIO_Init();

GPIO_InitStructure.GPIO_Mode = GPIO_Mode_AF_PP;

③     这里我们是要把PB5用作定时器的PWM输出引脚,所以要重映射配置,

所以需要开启AFIO时钟。同时设置重映射。

        RCC_APB2PeriphClockCmd(RCC_APB2Periph_AFIO,ENABLE);

GPIO_PinRemapConfig(GPIO_PartialRemap_TIM3, ENABLE);

④    初始化定时器:ARR,PSC等:TIM_TimeBaseInit();

⑤    初始化输出比较参数:TIM_OC2Init();

⑥   使能预装载寄存器: TIM_OC2PreloadConfig(TIM3, TIM_OCPreload_Enable);

⑦   使能定时器。TIM_Cmd();

⑧   不断改变比较值CCRx,达到不同的占空比效果:TIM_SetCompare2();

重要代码:

timer.c:

main.c:

下载程序后,红灯由暗变亮由亮变暗循环。


总结

只能说是粗略了解了PWM的相关原理和基本用法,PWM输出会在后期经常用到,所以希望我自己在学到之后的内容后再回来重新好好整理一下该部分的内容!

【学习记录】 STM32 PWM输出实验相关推荐

  1. STM32 PWM输出实验总结

    本实验是基于STM32 407的板子,使用的是通用定时器TIM14,相关的博文其实有很多,本文主要是基于他们结合个人学习理解总结整理,并非完全原创,只希望能帮助更好理解PWM输出的过程尤其是TIM_A ...

  2. TM4C123G学习记录(5)--PWM输出

    因为想申请 CSDN 博客认证需要一定的粉丝量,而我写了五年博客才 700 多粉丝,本文开启关注才可阅读全文,很抱歉影响您的阅读体验 为了准备电赛临时学一下TM4C123G,简单记录学习内容 大家可以 ...

  3. STM32 PWM输出实验

    定时器用来产生PWM输出: STM32 的定时器除了 TIM6 和 7.其他的定时器都可以用来产生 PWM 输出.其中高级定时器 TIM1 和 TIM8 可以同时产生多达 7 路的 PWM 输出.而通 ...

  4. STM32L475裸机例程学习 定时器中断和PWM输出实验

    定时器中断和PWM输出实验 所以阿-笔记的重要性哇!之前看过的内容在做后面的内容涉及到了发现没有笔记,看的时间太久远,竟然全部忘记了,真是个悲伤的故事:( 那就重来吧.由于这两个实验都跟TIM定时器关 ...

  5. Arduino小白的学习记录:RGB-LED传感器实验

    在上一个实验中我们介绍了双色LED灯的实验,但如果仅有两种颜色是不是觉得有些单调呢,接下来就让我们通过这个实验来组合出更多的颜色吧! 一.介绍 RGB-LED模块可以发出各种颜色的光.红色.绿色和蓝色 ...

  6. STM32 PWM输出之TIM_SetCompare函数的应用

    STM32 PWM输出之TIM_SetCompare函数的应用 想必输出PWM大家都应该会了吧,但是如何更加灵活方便的使用PWM,可能大家还存在着问题,今天我给大家介绍一下TIM_SetCompare ...

  7. 【手拉手 带你准备电赛】PWM究竟是什么(附:PWM输出实验完整代码)

    目录 PWM简介 PWM原理 PWM实验内容 PWM实验步骤 PWM实验代码 PWM解惑时刻 1.向上计数 2.刹车.死区 附录 初始化函数的完整代码 主函数的完整代码 都知道BMW,那么你们知道PW ...

  8. 基于STM32F103ZET6库函数PWM输出实验

    基于STM32F103ZET6库函数PWM输出实验 PWM 简介 硬件设计 软件设计 使 用 TIM3 的通道 2,把通道 2 重映射到 PB5,产生 PWM 来控制 DS0 的亮度. PWM 简介 ...

  9. STM32学习笔记(五 定时器及应用 3 PWM输出实验 )

    一.PWM 简介 脉冲宽度调制(PWM) Pulse Width Modulation (调制) 简单来说就是对脉冲宽度的控制. 高级定时器 TIM1 和 TIM8: 可以同时产生多达 7 路的 PW ...

最新文章

  1. windows server 2016 安装指南
  2. ListView性能[译]
  3. OpenGL动感模糊
  4. 红茶一杯话Binder
  5. SharePoint Server 2007 简单安装指南
  6. 《Office 365开发入门指南》上市说明和读者服务
  7. 计算机编程是考研什么专业,程序员考研该不该继续选择计算机专业
  8. Android--手机root获取与判断应用是否获取
  9. CCF201604-3 路径解析(解法三)(90分)(废除!!!)
  10. SSH学习之MVC和三层架构的区别
  11. 昆仑通态屏幕制作(连载5)---基础篇(串口接收,文本与灯显示)
  12. Access2016学习12
  13. 天下武功唯快不破,实时分析让企业决策又快又准
  14. 判断点P是否在三角形ABC内
  15. C# SmtpClient好像不支持STARTTLS,outlook邮箱不能发了
  16. python爬取餐饮数据_使用 Python 分析全国所有必胜客餐厅
  17. linux:压缩某个文件夹的实现方法
  18. 使用高德API接口查询两个地址之间的行车距离
  19. 百度何中军:机器翻译——从设想到大规模应用
  20. 女生适合学数据分析吗?过来人告诉你

热门文章

  1. HTML中的form表单及其提交原理
  2. ISINQDLKAITDMLLTEQIRERQRYLADLRQRLLEK-NH2|117680-39-4
  3. 史上最牛逼的 Eclipse 快捷键,提高开发效率!
  4. python canvas教程_Canvas
  5. koa 设置cache_koa文档参考
  6. mac笔记本网络失效_投屏
  7. 常见Android开源框架使用笔记之——xUtils框架
  8. 房企“变形记”,好戏还远
  9. ALEXNET 论文总结
  10. 使用idea打出版权_今天了解版权及其使用