嵌入式STM32入门之定时器控制LED闪烁与产生PWM脉冲宽度调制信号

本文介绍了STM32定时器的使用,通过定时器实现LED灯的周期性闪烁和PWM生成呼吸灯效果。首先讲解了定时器的基本概念,包括定时器类型和工作原理。接着,通过实验步骤详细阐述了如何配置定时器2来控制LED闪烁和串口发送数据。最后,探讨了PWM信号,并展示了如何利用定时器产生不同占空比的PWM波形以实现呼吸灯效果。
摘要由CSDN通过智能技术生成

一、前言

前面的实验中,我们学习了如何进行串口通信、中断的方式实现,但是在这之前的功能都是通过delay函数实现的。这种方式,相当于让CPU一直在做无用功,还不能做别的事情。这一节通过定时器的方式实现时间的精准控制,相当于给CPU上了一个闹钟,CPU平时处理其它任务,当定时时间到了以后,处理定时相关的任务。
定时器作为微控制器不可缺少的外设,在STM32中也是如此。相信不少初学者学到定时器的时候对STM32的学习热情就大打折扣甚至想要放弃了,因为这一部分知识确实比较复杂。但是,如果你在之前对GPIO、串口通信、外部中断的学习中把这些外设掌握了的话,学习这个新知识并不难。
我们将从两个方面去学习定时器:

1. 第一个是设置一个5秒的定时器,每隔5秒从串口发送“hello windows!”;同时设置一个2秒的定时器,让LED等周期性地闪烁。
2. 使用TIM3和TIM4,分别输出一个PWM波形,PWM的占空比随时间变化,去驱动你外接的一个LED以及最小开发板上已焊接的LED(固定接在 PC13 GPIO端口),实现2个 LED呼吸灯的效果。

二、定时器基本介绍

(一)STM32定时器

上来说就是用来定时的机器,是存在于STM32单片机中的一个外设。STM32总共有8个定时器,分别是2个高级定时器(TIM1、TIM8),4个通用定时器(TIM2、TIM3、TIM4、TIM5)和2个基本定时器(TIM5、TIM6),如下图所示:
在这里插入图片描述
共有8个定时器,它们是:TIM1~TIM8。STM32的定时器分为基本定时器、通用定时器和高等定时器。
TIM6、TIM7(基本定时器):基本定时器是只能向上计数的16位定时器,基本定时器只能有定时的功能,没有外部IO口,所以没有捕获和比较通道。
TIM2、TIM3、TIM4、TIM5(通用定时器):通用定时器是可以向上计数,也可以向下计数的16位定时器。通用定时器可以定时、输出比较、输入捕捉,每个通用定时器具有4个外部IO口。
TIM1、TIM8(高级定时器):高级定时器是是可以向上计数,也可以向下计数的16位定时器。高等定时器可以定时、输出比较、输入捕捉、还可以输出三相电机互补信号,每个高等定时器有8个外部IO口。

即:高级定时器具有捕获/比较通道和互补输出,通用定时器只有捕获/比较通道,基本定时器没有以上两者。

(二)通用定时器主要功能

通用TIMx (TIM2、TIM3、TIM4和TIM5)定时器功能包括:

  1. 16位向上、向下、向上/向下自动装载计数器
  2. 16位可编程(可以实时修改)预分频器,计数器时钟频率的分频系数为1~65536之间的任意
    数值
  3. 4个独立通道:
  • 输入捕获
  • 输出比较
  • PWM生成(边缘或中间对齐模式)
  • 单脉冲模式输出
    使用外部信号控制定时器和定时器互连的同步电路
  1. 如下事件发生时产生中断/DMA:
  2. 更新:计数器向上溢出/向下溢出,计数器初始化(通过软件或者内部/外部触发)
  • 触发事件(计数器启动、停止、初始化或者由内部/外部触发计数)
  • 输入捕获
  • 输出比较
  • 支持针对定位的增量(正交)编码器和霍尔传感器电路

通用定时器计数模式
向上计数,向下计数,中心对齐

(三)计数器模式

通用定时器可以向上计数、向下计数、向上向下双向计数模式。

①向上计数模式:计数器从0计数到自动加载值(TIMx_ARR),然后重新从0开始计数并且产生一个计数器溢出事件。

②向下计数模式:计数器从自动装入的值(TIMx_ARR)开始向下计数到0,然后从自动装入的值重新开始,并产生一个计数器向下溢出事件。

③中央对齐模式(向上/向下计数):计数器从0开始计数到自动装入的值-1,产生一个计数器溢出事件,然后向下计数到1并且产生一个计数器溢出事件;然后再从0开始重新计数。

在这里插入图片描述

(四)定时器工作原理

下面就是STM32定时器的工作款图了,是学习STM32定时器必须要掌握的。很多学习者学会了通过库函数来配置定时器,实现了简单的应用却忽略了基本原理,这就对导致在复杂应用的设计上出现低级的错误。所以建议读者认真掌握定时器的工作框图,明白内在的原理
在这里插入图片描述
从时钟源产生框可以看到
定时器时钟有四种来源:
● 内部时钟(CK_INT)
● 外部时钟模式1:外部输入脚(TIx) (输入捕获的引脚)
● 外部时钟模式2:外部触发输入(ETR)
● 内部触发输入(ITRx):(定时器级联)使用一个定时器作为另一个定时器的预分频器,如可以配置一个定时器Timer1而作为另一个定时器Ti

评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值