初学stm32-PWM的应用-呼吸灯

这里写目录标题

PWM概述

  • 脉冲宽度调制(PWM),是英文“Pulse Width Modulation”的缩写,简称脉宽调制,是利用微处理器的数字输出来对模拟电路进行控制的一种非常有效的技术。简单一点,就是对脉冲宽度的控制,PWM 原理如图:
    在这里插入图片描述
     
  • STM32F4 的定时器除了 TIM6 和 7。其他的定时器都可以用来产生 PWM 输出。通过查看开发板的原理图(如下),可发现PF9引脚连接LED0,同时也是作为TIM14_CH1的复用输出端口,知道此前提,我们就可以开始搞事情了。
    在这里插入图片描述

PWM输出步骤

  • 使能定时器14和相关IO口时钟。
    使能定时器14时钟:RCC_APB1PeriphClockCmd();
    使能GPIOF时钟:RCC_AHB1PeriphClockCmd ();
  • 初始化IO口为复用功能输出。函数:GPIO_Init();
    GPIO_InitStructure.GPIO_Mode = GPIO_Mode_AF; //复用功能
  • GPIOF9复用映射到定时器14
    GPIO_PinAFConfig(GPIOF,GPIO_PinSource9,GPIO_AF_TIM14);
  • 初始化定时器:ARR,PSC等:TIM_TimeBaseInit();
  • 初始化输出比较参数:TIM_OC1Init();
  • 使能预装载寄存器: TIM_OC1PreloadConfig(TIM14, TIM_OCPreload_Enable);
  • 使能自动重装载的预装载寄存器允许位 TIM_ARRPreloadConfig(TIM14,ENABLE);
  • 使能定时器。
  • 不断改变比较值CCRx,达到不同的占空比效果:TIM_SetCompare1();

呼吸灯实现

pwm.c

#include "pwm.h"

/*
引脚说明:
LED0灯连接PF9,TIM14通道1
TIM14 -- APB1,定时器频率:84MHZ
*/

void Pwm_Led0_Init(void)
{
   
	GPIO_InitTypeDef GPIO_InitStruct;
	TIM_TimeBaseInitTypeDef TIM_TimeBaseStruct;
	TIM_OCInitTypeDef  TIM_OCInitStruct; 	//定时一个该结构体
	
	//开启 TIM14 和 和 GPIO时钟,配置 PF9选择复用功能 AF9 (TIM14)输出。
	//库函数使能 TIM14 时钟
	RCC_APB1PeriphClockCmd(RCC_APB1Periph_TIM14
  • 0
    点赞
  • 8
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值