1. 什么是呼吸灯: 就是led从亮慢慢到暗再慢慢变亮的一个过程。可以通过延时长短的方法来实现呼吸灯效果,但是这里我们用的是PWM波来实现呼吸灯效果。
  2. PWM简单介绍:PWM也叫脉冲宽度调制,可以通过改变占空比来达到想要的效果,废话不多说直接上代码。
  3. 代码部分:

    void Init_pwm(u16 arr,u16 psc)
    {
            RCC_APB1PeriphClockCmd(RCC_APB1Periph_TIM3|RCC_APB2Periph_AFIO,ENABLE);
            RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOB,ENABLE);//使能或者失能APB2外设时钟
          GPIO_PinRemapConfig(GPIO_PartialRemap_TIM3, ENABLE);    //部分重映射使用GPIO_PartialRemap_TIM3

    //NVIC_InitTypeDef NVIC_InitStructure;
            TIM_TimeBaseInitTypeDef TIM_TimeBaseStructure;
            GPIO_InitTypeDef GPIO_InitStructure;    
          TIM_OCInitTypeDef TIM_OCInitStructure;
        
            GPIO_InitStructure.GPIO_Pin = GPIO_Pin_5;
            GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;//最高输出速率50MHz
            GPIO_InitStructure.GPIO_Mode = GPIO_Mode_AF_PP;//复用推挽输出
            GPIO_Init(GPIOB, &GPIO_InitStructure);//初始化外设GPIOx寄存器
        
            TIM_TimeBaseStructure.TIM_ClockDivision = TIM_CKD_DIV1;//TDTS = Tck_tim
            TIM_TimeBaseStructure.TIM_CounterMode = TIM_CounterMode_Up;//向上计数模式
            TIM_TimeBaseStructure.TIM_Prescaler = psc;//预分频值
            TIM_TimeBaseStructure.TIM_Period = arr;//在下一个更新事件装入活动的自动重装载寄存器周期的值
            TIM_TimeBaseInit(TIM3,&TIM_TimeBaseStructure);//初始化
        
            TIM_OCInitStructure.TIM_OCMode=TIM_OCMode_PWM2;
            TIM_OCInitStructure.TIM_OCPolarity=TIM_OCPolarity_High;
            TIM_OCInitStructure.TIM_OutputState=TIM_OutputState_Enable;
          TIM_OC2Init(TIM3,&TIM_OCInitStructure);
            TIM_OC2PreloadConfig(TIM3,TIM_OCPreload_Enable);
            
        TIM_Cmd(TIM3, ENABLE);//使能或者失能TIMx外设
    }


  4. 注意事项:这里我用的是我的led灯(PB5)是定时器3通道2中,需要重映射,如下图:

所以,这里我们要打开AFIO时钟以及重映射(如果你的定时器和通道不是在最右边而是在旁边这一格 也就是默认复用功能 就不需要下面的代码),也就是:RCC_APB1PeriphClockCmd(RCC_APB2Periph_AFIO,ENABLE);

GPIO_PinRemapConfig(GPIO_PartialRemap_TIM3, ENABLE);

最后,就是main里面的代码:

u16 t=1,k=1;

Init_pwm(899,0);//PWM frequency=72000000/900=80KHz根据需要设置周期
    while(1)
    {
            delay_us(100);
        if(k)t++;
        else t--;
        if(t>300)k=0;
        if(t==1)k=1;
            TIM_SetCompare2(TIM3,t);//通过改变占空比来达到呼吸灯效果
    }

源代码工程:

链接:https://pan.baidu.com/s/1wzoXsMTTOY8EUtZqv5nE8A?pwd=1028 
提取码:1028

PWM呼吸灯(小白版)相关推荐

  1. LabVIEW控制Arduino实现PWM呼吸灯(基础篇—5)

    目录 1.实验目的 2.实验环境 3.程序设计 4.实验演示 1.实验目的 利用LIAT中的模拟I/O函数库,通过LabVIEW和Arduino Uno控制板实现LED灯亮度的调节,产生灯会呼吸的效果 ...

  2. STM32F030C8T6单片机PWM呼吸灯寄存器配置

    STM32F030C8T6单片机PWM呼吸灯寄存器配置: TIM3_CR1:控制寄存器 BIT8~BIT9:CKD 与外部输入时钟有关,不使用外部时钟输入,所以不操作BIT8~BIT9,设置为00 B ...

  3. FPGA项目三:PWM呼吸灯

    文章目录 第一节 项目背景 第二节 设计目标 第三节 设计实现 3.1顶层设计 3.2 信号设计 3.3 信号定义 第四节 综合和上板 4.1 新建工程 4.2 综合 4.3 配置管脚 4.4 再次综 ...

  4. 赛元微SC92F7352 PWM呼吸灯应用

    赛元微SC92F7352 PWM呼吸灯应用 单片机脚位图 #include <SC92F735X_C.H> #include "intrins.h" #define u ...

  5. 基于FPGA开发板使用Verilog设计PWM呼吸灯实验

    基于FPGA开发板使用Verilog设计PWM呼吸灯实验 1,实验原理 2,实验模块设计 2.1 RTL设计,呼吸灯模块设计 2.2,测试数据,下载到FPGA开发板板级的数据 2.3,两个模块综合的n ...

  6. STM32 CubeMx(二)定时器中断和PWM呼吸灯

    STM32 CubeMx(一)时钟树配置与GPIO输入输出 文章目录 1.定时器 1.1 定时器概念 1.2 定时器分类 1.3 定时器功能 1.4 配置过程和编写代码 1.5 代码分享 2.PWM产 ...

  7. 【Verilog HDL 训练】第 10 天(PWM 呼吸灯)

    5月8日 PWM 用verilog实现PWM控制呼吸灯.呼吸周期2秒:1秒逐渐变亮,1秒逐渐变暗.系统时钟24MHz,pwm周期1ms,精度1us. 今天的题目我是第一次见,答案借鉴大神的:Veril ...

  8. 软件模拟PWM——呼吸灯小程序的理解

    呼吸灯就是类似人的呼吸一样,一呼一吸,灯的变化是从亮到灭再到亮的过程,是一个循序渐进的过程,而不是一个跳变. 通过软件模拟PWM,可以达到呼吸灯的效果. PWM即脉冲宽度调制,简单地说,就是一段时间为 ...

  9. OpenWrt PWM呼吸灯

    欢迎使用Markdown编辑器 我想在Linkit Smart MT7688上使用PWM做个呼吸灯,使用的内核版本OpenWrt,chaos_calmer 15.05固件,参考的小鱼儿的博客.步骤如下 ...

  10. stm32定时器输出pwmIO口模拟pwm——呼吸灯

    文章目录 前言 一.pwm(脉冲宽度调制) 1.基本原理 2.PWM的优点 3.PWM波的控制方法 二.定时器的相关介绍 1.stm32定时器 2.通用定时器计数模式 3.定时器的基本工作原理 三.定 ...

最新文章

  1. Nature: 海洋病毒对环境基因组和潜在的生物地球化学影响
  2. php 实现tab切换_微信小程序实例:实现顶部tab切换以及滑动切换时导航栏会随着移动的效果(代码)...
  3. QT中利用Qlabel显示当前的时间:年-月-日-时-分-秒-星期
  4. C:如何分解整数(从末位往前取以及从首位往后取)
  5. 数据结构入门学习笔记-1
  6. Spring boot变量的初始化顺序
  7. IPSEC的NAT兼容性
  8. 的向上取整函数_计算机二级Excel常用函数解析
  9. 你越努力,越没有领导潜力
  10. 关于哈希,分布式哈希表,一致性哈希
  11. sh执行文件 参数传递_shell中脚本参数传递的两种方式
  12. EXCEL 宏 拆分数据表 VBA 视频教程下载
  13. 2023年前实现大型工业企业5G应用渗透率超35%!模组企业如何保驾护航?
  14. 【PMP】PMBOK 笔记 第3章 项目管理过程
  15. 平面设计的核心本质是什么
  16. overleaf/latex 使用IEEE tran模板同名作者用横线替代
  17. android 取消蓝牙配对框 实现自动配对,Android 取消蓝牙配对框实现自动配对功能...
  18. 破解网页禁用鼠标右键方法
  19. python实现直播功能rtmo_30 行 Python 代码实现 Twitch 主播上线实时通知
  20. java帮助文档mye_【SpringMVC】使用Myeclipse创建SpringMVC项目【超详细教程】

热门文章

  1. Using insecure protocols with repositories(已解决)
  2. requested an insecure resource的解决方法
  3. matlab飞思卡尔工具包,IMX6开发板飞思卡尔系统烧写工具MFGTool2工具详解-迅为电子...
  4. 重构分析21: 被拒绝的遗赠(Refused Bequest)
  5. AMiner发布2022 AI 2000人工智能最具影响力学者名单
  6. 朱晔的互联网架构实践心得S2E6:浅谈高并发架构设计的16招
  7. 5G相关协议下载路径
  8. GPS定位准确度CEP、RMS
  9. 在线计算机表格制作,excel表格制作,教您excel怎么制作表格
  10. 柔性电流传感器(柔性电流探头)的工作原理和特点是什么?