目录

PWM控制LED硬件电路

PWM周期与LED闪烁

PWM低电平与LED的亮度等级

PWM实现256个等级的LED亮度呼吸灯

STM32CubeMx配置通用定时器

代码功能实现


从STM32基础7--通用定时器,STM32通用定时器可以产生PWM波形,从而控制LED亮度。下面我们更加详细的了解一下,PWM对LED的控制。

PWM控制LED硬件电路

在下面的原理图中,可以看到LED0与LED1连接到STMF407的PF9与PF10引脚上。在电路中,当PF9,PF10分别为低电平的时候,LED0与LED分别导通,也就是这个电路中,PWM周期的低电平周期,LED会被导通。

PWM周期与LED闪烁

在STM32F407中,当我们使用PWM1模式时,进行如下的设置。

当我们使用逻辑分析仪(LA)抓取,可以得到如波形,也就是说Pulse设置的为低电平的时间长度。当我们下载程序进开发板时,发现LED0会一闪一闪的,时间间隔1S(PWM的周期为1S),亮的时间很短。

由于PWM的周期为1S的时间间隔(1Hz),如果人眼希望看不到闪烁就需要将PWM的周期缩小 ,也就是PWM的频率加快,让人眼觉察不到LED在闪烁。按照显示屏的设定是在60HZ,虽然人会觉察不到闪烁。但在70到150赫兹范围内的闪烁确实会导致生产力下降和健康影响。而且前最新的研究结论是频率达到2kHz以上认为对身体不产生影响,通过视觉对身体产生不良影响。

而按照国家规定的读写作业台灯性能要求需要达到3125Hz才可以免除考核。

PWM低电平与LED的亮度等级

当我们使用的PWM周期达到2KHz,以后人眼再也不会感受到LED在闪烁,而且健康也有了保证。但是这个时候我们会发现另外一个问题,就是LED的亮度等级。是什么决定了LED亮度等级?没错就是自动重装计数器的数值。Pulse值决定PWM的低电平的长度,Pulse不能超过自动重装计数器。

如果我们需要将光度等级分为256个等级(0-255),也就是说自动重装计数器的值需要设置为255。

        定时器频率 =时钟频率 /((预分频+1) *(自动重装计数器+1)) 

        预分频 = 时钟频率/((定时器频率) *(自动重装计数器+1)) = 84Mhz /(2Khz* (255+1))-1 =163 

PWM实现256个等级的LED亮度呼吸灯

呼吸灯是控制LED从低亮度到高亮度,然后在从高亮度到低亮度。因此需要不断的,改变Pulse的数值。

STM32CubeMx配置通用定时器

开启PWM输出通道

设置PWM输出

开启定时器中断

中断等级设置

       注:

                1)设定与STM32基础7--通用定时器不一样的地方在于,PWM生成固定的频率。而呼吸灯需要,不断的刷新Pulse的值,因此需要在定时器回调函数中,判断并且刷新低电平的时间。

                2)代表亮度等级为0,也就是LED不亮。

代码功能实现

        main函数中,启动定时器并且开启PWM输出

定义变量控制等级与亮度方向

实现回调函数

STM32基础8--通用定时器(PWM控制LED)相关推荐

  1. PWM控制LED亮度(2-呼吸灯)-STM32电控学习笔记10

    PWM控制LED亮度(2-呼吸灯)-STM32电控学习笔记10 day10:2022/9/29 前面学了两三天的PWM了,PWM本身不难理解,至于为啥进度缓慢,还不是这时钟定时器分频值重装载啥的太难理 ...

  2. 【STM32】HAL库——定时器PWM输出

    前期准备: STM32CubeMX STM32RCT6核心板 IDE Keil(MDK-ARM) STM32CubeMX部分 1. 配置时钟 选择STM32F103RCTx系列芯片,配置时钟的同时会自 ...

  3. 控制led亮度C语言程序,单片机pwm控制led亮度原理图

    单片机pwm控制led亮度原理图 用51产生PWM去控制LED,首先要确定PWM的周期T和占空比D,确定了这些以后,可以用定时器产生一个时间基准t,比如定时器溢出n次的时间是PWM的高电平的时间,则D ...

  4. 自动感光调节LED灯亮度C语言程序,PWM控制LED灯的亮度(C 语言)

    控制LED灯的亮度,通过调节电压的方式可以达到,但不理想,而且可调的范围很小,电压稍高,还容易把LED烧毁,唯一可行的方法就是通过PWM(脉冲宽度调节)来控制其亮度. 以下程序是在单片机中控制LED. ...

  5. PWM控制LED亮度变化的原理(超详解)

    PWM控制LED亮度变化的原理 通过ARR寄存器来设定预装载值,以确定循环频率和周期,计数器寄存器CNT从0开始计数,设定一个CCR寄存器的值,来跟CNT的计数值进行比较,当CNT的值小于CCR寄存器 ...

  6. STM32的一个通用定时器理论上可以当做N个来用

    这个想法还是来自于PLC,学过PLC的都知道,在PLC中定时器是用很多的,西门子S7-1200中定时器是这样的 想用更多的定时器可以这样 而且这么多定时器同时或者不同时工作都不会相互影响,原因就是相当 ...

  7. 基于XLINX的PWM控制LED模块设计

    1.原理: PWM脉冲宽度调制,即调节脉冲的占空比.当输出的脉冲频率一定时,输出的脉冲占空比越大,相当于输出的有效电平越大,这样实现由FPGA来控制模拟量. 2.代码实现 PWM控制模块 module ...

  8. STM32之定时器中断控制LED闪烁

    上篇博客我们是用延时函数实现了LED的闪烁,今天我们使用STM32的定时器来使LED闪烁. 关于32的定时器的种类,今天我在这先不做过多的说明,有时间我会再另写一篇博客来专门介绍32的定时器.今天我们 ...

  9. STM32学习笔记——通用定时器的PWM介绍及配置

    脉冲宽度调制(PWM),是英文"Pulse Width Modulation"的缩写,简称脉宽调制,是利用微处理器的数字输出来对模拟电路进行控制的一种非常有效的技术.简单一点,就是 ...

  10. STM32 基础系列教程 6 - PWM

    前言 学习stm32 基本定时器的使用,用基本定时器产生定时PWM, 来控制LED,通过并控制PWM波的占空比,实现呼吸灯效果 示例详解 基于硬件平台: STM32F10C8T6最小系统板, MCU ...

最新文章

  1. 清华、北大教授同台激辩:脑科学是否真的能启发AI?
  2. diamond专题(一)-- 简介和快速使用
  3. 腾讯云 cloudbase 云开发使用笔记
  4. 为什么BCH有了0确认还要缩短时间
  5. 本地服务器文件恢复,本地服务器文件恢复
  6. 剑指offer——变态跳台阶
  7. 如何确定固定资产入账价值
  8. Python 提取数据库(Postgresql)并邮件发送
  9. 贪心法田忌赛马问题Java代码,hdoj 1052 Tian Ji - The Horse Racing【田忌赛马】 【贪心】...
  10. c# RegistryKey 的相关简单操作
  11. mysql 报错从 新安装
  12. 小米MIX 4概念渲染图曝光:无孔屏下摄像头果真科幻
  13. 通达信自动交易软件步骤分析
  14. python创建excel并冻结首行
  15. 栅格化处理激光雷达点云数据
  16. Linux | Ubuntu | 查看路由 | 修改路由
  17. 目标跟踪算法_Camshift函数(学习笔记)
  18. H5 vue实现百度下拉列表交互操作示例
  19. Tensorflow知识整理(二)——数据持久化
  20. Java中创建目录 或 创建文件

热门文章

  1. win10计算机 需要新应用,win10 计算器提示:需要新应用打开此calculator
  2. 运行npm install 出现thon Python is not set from command line or npm configuration解决方案
  3. shiro中的过滤器
  4. java 什么是过滤器_java中的过滤器是什么
  5. mapreduce 和hive 的区别
  6. 数据库身份证号用什么类型_《PHP和MySQL Web 开发》第8章 设计Web数据库
  7. 饶了我的耳朵吧,音乐
  8. HTK搭建大词汇量连续语音识别系统(三)
  9. isolation cell、levelshifter
  10. vector函数用法