文章目录

  • 一、定时器介绍
  • 二、STM32C配置项目
    • 1.新建工程
    • 2.配置引脚
    • 3.配置SYS
    • 4.配置GPIO
    • 5.配置定时器
    • 6.配置中断
    • 7.时钟配置
    • 8.创建代码
  • 三、修改keil代码
  • 四、实物连线
  • 五、实验效果
  • 六、总结
  • 七、参考资料

一、定时器介绍

上来说就是用来定时的机器,是存在于STM32单片机中的一个外设。STM32总共有8个定时器,分别是2个高级定时器(TIM1、TIM8),4个通用定时器(TIM2、TIM3、TIM4、TIM5)和2个基本定时器(TIM5、TIM6),如下图所示:

这三种定时器的区别如下:

STM3 的通用 TIMx (TIM2~TIM5 和 TIM9~TIM14)定时器功能包括:
1.16 位/32 位(仅 TIM2 和 TIM5)向上、向下、向上/向下自动装载计数器(TIMx_CNT),注意:TIM9~TIM14 只支持向上(递增)计数方式。
2.16 位可编程(可以实时修改)预分频器(TIMx_PSC),计数器时钟频率的分频系数为 1~ 65535 之间的任意数值。
3.4 个独立通道(TIMx_CH14,TIM9TIM14 最多 2 个通道),这些通道可以用来作为:
A.输入捕获
B.输出比较
C.PWM 生成(边缘或中间对齐模式) ,注意:TIM9~TIM14 不支持中间对齐模式
D.单脉冲模式输出
4.可使用外部信号(TIMx_ETR)控制定时器和定时器互连(可以用 1 个定时器控制另外一个定时器)的同步电路。
5.如下事件发生时产生中断/DMA(TIM9~TIM14 不支持 DMA):
A.更新:计数器向上溢出/向下溢出,计数器初始化(通过软件或者内部/外部触发)
B.触发事件(计数器启动、停止、初始化或者由内部/外部触发计数)
C.输入捕获
D.输出比较
E.支持针对定位的增量(正交)编码器和霍尔传感器电路(TIM9~TIM14 不支持)
F.触发输入作为外部时钟或者按周期的电流管理(TIM9~TIM14 不支持)

二、STM32C配置项目

1.新建工程


2.配置引脚

3.配置SYS

4.配置GPIO

5.配置定时器

这里我们使用定时器2来实现定时的功能。如图所示,依次点击位置1,选中定时器2;位置2,配置定时器2的时钟源为内部时钟;位置3,分频系数为71,向上计数模式,计数周期为5000,使能自动重载模式。

注:分频系数那里虽然写的是71,但系统处理的时候会自动加上1,所以实际进行的是72分频。由于时钟我们一般会配置为72MHZ,所以72分频后得到1MHZ的时钟。1MHZ的时钟,计数5000次,得到时间5000/1000000=0.005秒。也就是每隔0.005秒定时器2会产生一次定时中断。

6.配置中断

开启定时器2的中断

生成定时器2中断优先级配置代码

7.时钟配置

8.创建代码


三、修改keil代码

生成工程后,打开,添加中断响应之后所需的一些代码。在main.c文件中添加如下内容,位置1:

注:该函数表示启动相应的定时器,“h”表示HAL库,“tim2”表示定时器2。所以这行代码的意思就是启动定时器2。
HAL_TIM_Base_Start_IT(&htim2);
位置2:

代码如下:

void HAL_TIM_PeriodElapsedCallback(TIM_HandleTypeDef *htim)
{static uint32_t time_cnt =0;if(htim->Instance == TIM2){if(++time_cnt >= 100){time_cnt =0;HAL_GPIO_TogglePin(D1_GPIO_Port,D1_Pin);}}
}

该函数为定时器的中断回调函数,当产生定时中断的时候,会自动调用这个函数。在函数内部定义了一个静态变量:time_cnt。当它大于等于100的时候,才会执行if里面的代码。也就是说需要发生100次中断,才会让LED的状态翻转。前面已经算过了,一次定时中断的时间是0.005秒,所以100次中断的时间是0.005*100=0.5秒。也就是说每隔0.5秒,LED的状态翻转一次。
修改后,保存,编译、下载,重新上电。可以看到LED1差不多每隔0.5秒翻转一次,实现了我们想要的效果。

四、实物连线

五、实验效果

VID_20221027_212402

六、总结

通过本次实验完成了利用定时器实现LED灯0.5秒周期闪烁,在学习定时器知识的同时也提高了动手能力。

七、参考资料

STM32CUBEMX_定时器控制LED闪烁
STM32-定时器详解

STM32实现定时器控制LED闪烁相关推荐

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

    定时器控制LED闪烁与产生PWM脉冲宽度调制信号 一.前言 二.定时器基本介绍 (一)STM32定时器 (二)通用定时器主要功能 (三)计数器模式 (四)定时器工作原理 三.实验(1)初识定时器 (一 ...

  2. STM32通过串口控制LED闪烁或者呼吸效果

    STM32通过串口控制LED闪烁或者呼吸效果 目录 STM32通过串口控制LED闪烁或者呼吸效果 1.准备工作 2.思路分析 3.实际操作 4.小结 1.准备工作 1.首先我们需要准备32的最小系统板 ...

  3. 嵌入式小白学习:STM32实现定时器控制LED灯

    嵌入式小白学习:STM32实现定时器控制LED 目录 嵌入式小白学习:STM32实现定时器控制LED Part1.理论基础 Part2.环境的配置 Part3.代码的更改 Part4.实物的连线 Pa ...

  4. 定时器控制LED闪烁

    一.实现功能 通过定时器Timer方式实现时间的精准控制,相当于给CPU上了一个闹钟,CPU平时处理其它任务,当定时时间到二.使用步骤二.使用步骤了以后,处理定时相关的任务.设置一个2秒的定时器,让L ...

  5. STM32实现定时器和LED呼吸灯

    目录 一.实现定时器 1.定时器的介绍 1.1定时器的概念及作用 1.2定时器的分类 2.新建项目 2.1新建 2.2选择STM32F103C8T6芯片 2.3配置SYS 2.4配置RCC 2.5配置 ...

  6. STM32定时器控制LED灯闪烁及PWM练习

    一.STM32定时器控制LED灯闪烁 1.相关配置 1)配置RCC和SYS 2)配置IO 配置PC15,并命名为D1. 3)配置定时器 选定时器2,配置Clock Source为Internal Cl ...

  7. 定时器中断控制LED闪烁(每隔1s)---普中科技开发仪

    定时器中断o,利用中断控制LED闪烁每隔1s闪烁一次(精确的1s) notes: (1)工作方式寄存器TMOD ,低四位用于To,高四位用于T1,(GATE,C/T- ,M1,M0) 一般让GATE ...

  8. 用定时器T0查询方式P0口8位控制LED闪烁

    #include<reg52.h> #define uchar unsigned char #define uint unsigned int void main (void) { uch ...

  9. 用定时器T0查询方式P0口8位控制LED闪烁 T1查询方式P1口8位控制LED闪烁

    //用定时器T0查询方式P0口8位控制LED闪烁 T1查询方式P1口8位控制LED闪烁 #include<reg52.h>        //  包含52单片机寄存器定义的头文件 #def ...

最新文章

  1. Linux ALSA声卡驱动之六:ASoC架构中的Machine
  2. matlab画扇区,NFCDemo NFC读写测试 ,自动读取每个扇区 块的值 matlab 238万源代码下载- www.pudn.com...
  3. 双循环格局对话国际农民丰收节交易会 谋定农业贸易高质量
  4. 使用缓冲流有什么好处_使用PVC石笼网有什么好处?
  5. oracle基本笔记整理及案例分析1
  6. python教学查询,python基础教程之查询集 QuerySet和管理器Manager
  7. 文件管理系统(开发文档)
  8. SpringBoot拦截全局异常并发送邮件给指定邮箱
  9. 自然数简化到素数:黎曼猜想RiemannHypothesis及其解释(公号回复“黎曼猜想”下载PDF经典收藏版彩标资料)
  10. [COGS 2479] [HZOI 2016] 偏序
  11. Openstack 环境下虚拟机KVM之间的互通
  12. Android应用内存管理机制
  13. 基于C++的《元素战争》基于win32框架的电脑游戏设计
  14. 设计模式--有道笔记的整理
  15. 在酒店怎么让你电脑的网速比别人快?
  16. 设计模式之工厂模式(Factory)
  17. Goolg Maps android API V2版详解(二)新地图get~
  18. 因故意引入漏洞,整所大学被禁止为Linux内核做贡献,回应来了!
  19. 计算机应用基础模拟试卷 一,计算机应用基础模拟试卷一模拟试卷-02answer
  20. 基于 Ubuntu 20.04 系统 部署 NetBox

热门文章

  1. JavaScript define
  2. 小程序-滑块+iconfont下载本地使用
  3. 科大讯飞也推AI智能硬件,K12“知识图谱型”AI教育“真香”?
  4. sofa server端处理client端请求流程
  5. wx.saveImageToPhotosAlbum将图片保存到本地
  6. Quartus II 功能仿真设置流程
  7. Mac还是Win?告诉你哪些人适合买Mac!
  8. 广州住房公积金管理中心综合业务管理系统容灾项目中标公告
  9. 程序猿之华丽转身:必备技术面试手册
  10. 河南理工大学c语言程序第六章答案,河南理工大学C语言课后习题答案精解第六章..ppt...