通过定时器Timer方式实现时间的精准控制

news/2025/1/16 0:08:01/

目录

一、定时器的介绍

1.定时器概念及作用

2.定时器的分类

(1)硬件定时器

(2)软件定时器

(3)系统滴答定时器(SysTick)

(4)实时时钟(RTC)

二、新建cubemx项目

1.选择芯片STM32F103C8T6

2. 配置RCC

3.配置SYS

4.配置IO。LED配置PA5

5. 设置定时器TIM2

 6.配置NVIC

7.生成keil5工程文件

三、keil5工程中操作

1.在main.c中添加代码

2.编译并生成hex文件

四、电路连接

 五、烧录

六、调试结果

​编辑 

 七、心得总结

八、参考博客


一、定时器的介绍

1.定时器概念及作用


    定时器的主要作用是产生一个时基,通俗的讲就是从某一时刻开始,经过一段指定的时间,触发一个中断或超时回调事件,可以在中断或者超时回调函数中处理数据。
    定时器在嵌入式系统中是个基础服务,比如RTOS就要依赖SysTick提供时钟节拍去实现线程延时、线程时间片轮询调度等,定时器可以分软件定时器和硬件定时器,我们还经常听到SysTick,RTC实时时钟等,定时器在生活中的应用也很常见,比如闹钟。

2.定时器的分类

(1)硬件定时器


    顾名思义,芯片本身提供的定时功能。一般是由外部晶振提供给芯片输入时钟,芯片向软件模块提供一组配置寄存器,接受控制输入,到达设定时间值后芯片中断控制器产生时钟中断。硬件 定时器的精度一般很高,可以达到纳秒级别,并且是中断触发方式,简言之,硬件定时器需要硬件资源支持产生稳定的时间基准。

 

(2)软件定时器

软件定时器的功能与硬件定时器类似,但是实现方式不同,软件定时器是由操作系统提供的一类系统接口,它构建在硬件定时器基础之上,使系统能够提供不受数目限制的定时器服务,一般使用SysTick作为基础时钟。
    软件定时器是通过线程实现的而非中断实现,可能会被其它高优先级的线程打断,因此软件定时器只能用于对精度要求不高的场合,一般是毫秒级。

(3)系统滴答定时器(SysTick)

       SysTick需要硬件支持,可以理解为一种简单的硬件定时器,SysTick定时器一般用于延时或作为RTOS中的系统时钟(心跳),实时系统中最小的时间单位就是SysTick定时器的中断周期,也就是1个tick。

(4)实时时钟(RTC)

RTC需要硬件支持,是一个独立的BCD定时器/计数器,主要作用是提供日历功能,不同的MCU,RTC特性可能也略有差异。以下是参数特性:

二、新建cubemx项目

1.选择芯片STM32F103C8T6

2. 配置RCC

3.配置SYS

 

4.配置IO。LED配置PA5

5. 设置定时器TIM2

 

 6.配置NVIC

 

7.生成keil5工程文件

 

 再点击GENERATE CODE,生成项目

三、keil5工程中操作

1.在main.c中添加代码

2.编译并生成hex文件

四、电路连接

3v3-3v3

GND-GND

A5-二极管正极;G-二极管负极

A9-RXD;A10-TXD

 

 五、烧录

 

六、调试结果

 

 七、心得总结

       通过此次实验,对于中断以及定时器的使用的有了更深的理解和运用,另外,对于firetools的使用也更加熟练。可以用定时器来设置定时中断来方便使用,让中断重复发生,让程序可以更好的受到控制,达到我们想要的结果。其中uart中断和定时器的相互结合使用,将前面的知识串联了一遍,也让我对整个嵌入式的理解加深了不少。

八、参考博客

STM32CUBEMX_定时器控制LED闪烁 | MCU起航

HAL库中断方式进行串口通信_醉意丶千层梦的博客-CSDN博客_hal库串口接收中断

 

 

 

 


http://www.ppmy.cn/news/820074.html

相关文章

MFC定时器的使用

MFC 一.简介 这篇说一下在MFC开发过程当中定时器的使用,我们以在界面上显示系统的时间,让定时器工作,每隔1s时间更新一次 二.使用 1.启动定时器 在我们项目的初始化函数当中,添加初始化代码(OnInitDialog&#x…

apache下载

Apache VS17 binaries and modules download php下载地址 PHP For Windows: Home windows.php.net - /downloads/releases/archives/ 历史版本下载 php下载 https://windows.php.net/downloads/releases/archives/php-5.6.37-Win32-VC11-x64.zip https://www.apachehaus.com/…

BOM——定时器

目录 一.创建定时器 二.停止定时器 三.创建重复调用的定时器 四.案例——发送验证码 一.创建定时器 window.setTimeout(调用函数[,延迟毫秒数])//例子(window可以省略) setTimeout(()> {//执行语句 },2000) setTimeout方法是用来设置定时器的&a…

BOM 定时器+回调函数

window对象提供了两种定时器:setTimeout()和setInterval() 1.setTimeout()定时器 window.setTimeout(调用函数,[延迟的毫秒数]); 用于设置一个定时器,该定时器在定时器到期后执行调用函数 注意点: ①window可省略 ②延迟时间单位是毫秒&#xff0…

定时器

1.设置定时器 1.1setTimeout() 作用:到达间隔时间之后,只调用一次回调函数 **语法: ** window.setTimeout(回调函数, 间隔时间) window可以省略间隔时间以毫秒为单位返回这个定时器的标识符,是数字类型 javascript // 创建一个定时器,1秒后执行 // tim…

单片机定时器程序c语言,单片机定时器程序

51单片机定时器中断程序(C语言) 程序:延时1s 方法:1.汇编实现 影响程序运行速度 2.中断 比较快 用C语言实现的,先要定义好定时器的初值 不管你使用多大的晶振,使用51单片机,一般都是12分频出来,也就可以得出一个机器周期 机器周期=12/n(n指晶振频率),假设你要定时的时间…

定时器 消除定时器

定时器: 定时器有两种,setTimeout () 和 setInterval (),二者的区别在于时间到后执行回调函数的次数,setTimeout () 只能执行一次,而 setInterval () 每当间隔这个倒计时一次,就会执行一次回调函数内容 se…

workerman gatawayworker 定时器

workerman初始化定时器,workerman重启定时器 介绍 业务中写的定时器,当遇到workerman异常,重启后会失效,所以想项目初始化时启动所有定时器,定时器写在配置文件中,这样业务每次重启时定时器也会随之生效 代码实现如下…