首页 > 其他分享 >【嵌入式学习笔记】---- 定时器

【嵌入式学习笔记】---- 定时器

时间:2024-03-23 15:57:24浏览次数:26  
标签:触发 功能 定时器 RTC 嵌入式 ---- 定时 PWM

1 定时器核心原理

定时器的核心就是一个计数器模块,每出现一个计数信号,计数器的值可以自动加一减一。根据计数信号的来源,定时器分为两种工作模式:
①计数模式:计数信号为外界非周期信号,可以对引脚输入的脉冲信号进行计数
②定时模式:计数信号为内部周期性时钟信号,对内部周期性时钟信号进行计数
image

2 定时器分类

image

2.1 systick定时器

在STM32系列微控制器中,SysTick定时器是一个特殊的定时器,它是一个24位倒计时器,通常用于实现系统级别的定时和调度。SysTick定时器是一个内置的硬件定时器,用于提供操作系统或其他软件组件所需的基本定时功能

  • SysTick定时器可以通过特定的寄存器进行配置和控制。在STM32中,SysTick控制寄存器(STK_CTRL)用于启用或禁用SysTick定时器

2.2 基本定时器

在STM32系列微控制器中,基本定时器(Basic Timer)是一个简单而功能有限的定时器,用于生成基本的定时中断或PWM信号。基本定时器通常用于简单的定时功能和PWM输出,适用于一些较为简单的应用场景,例如LED控制、舵机控制、蜂鸣器控制等

2.3 通用定时器

在STM32系列微控制器中,通用定时器(General Purpose Timer)是一种功能强大、灵活多样的定时器,用于实现复杂的定时、PWM输出、输入捕获和输出比较等功能。具有广泛的应用场景和丰富的功能,包括电机控制、音频处理、通信系统、定时触发事件等

2.4 高级定时器

在STM32系列微控制器中,高级定时器(Advanced Timer)是一种功能更为强大和复杂的定时器,相比于基本定时器和通用定时器,高级定时器提供了更多的功能和灵活性,适用于一些对定时精度和功能要求更高的应用场景,如定时器同步、自动输出触发、高级PWM控制等,适用于电机控制、音频处理、通信系统等

  • 定时器同步:高级定时器支持多个定时器之间的同步,可以通过硬件触发信号实现定时器的同步运行,提高了定时器的精度和稳定性

  • 自动输出触发:高级定时器可以配置为在特定条件下自动触发输出事件,例如在定时器计数到特定值时自动触发PWM输出或产生外部触发信号

  • 高级PWM控制:高级定时器提供了更多的PWM控制功能,可以实现高级的PWM调制技术,例如相位差调制(Phase Shift Modulation)和互补输出模式等

2.5 看门狗定时器

在STM32系列微控制器中,看门狗定时器(Watchdog Timer,简称WWDG)是一种特殊类型的定时器,用于监视系统是否正常工作。WWDG定时器是一种硬件保护机制,旨在确保系统在发生故障或崩溃时能够进行自我恢复。如果系统由于某种原因停止响应,例如由于死锁、无限循环或其他故障,看门狗定时器将在预定的时间内未收到系统的“喂狗”信号时触发,从而触发系统的复位或其他故障处理机制

  • 计时功能:WWDG定时器通常配置为在预定的时间间隔内运行。通过设置看门狗定时器的预分频系数和计数器值,可以确定看门狗定时器的计时周期,即喂狗的时间间隔

  • 复位触发:当看门狗定时器超过设定的时间间隔未收到喂狗信号时,它将生成一个复位信号,从而触发系统的复位操作。这有助于在系统停止响应或发生故障时重新启动系统

  • 低功耗应用:在低功耗应用中,WWDG定时器可以被配置为在CPU进入低功耗模式时继续工作,以便在系统睡眠期间保持对系统的监视

2.6 实体时钟RTC

在 STM32 微控制器中,实体时钟定时器(Real-Time Clock,简称 RTC)是一种用于提供实时时钟和日期功能的特殊定时器。RTC 提供了一种可靠的方法来跟踪时间,并且在设备掉电后也能保持时间信息

  • 用途:RTC 主要用于提供实时时钟和日期功能,通常用于需要精确时间信息的应用,如数据记录、事件时间戳、日历功能等

  • 精度:RTC 提供了高精度的时钟,通常可以达到秒级甚至亚秒级的精度,这取决于 RTC 的时钟源和配置

  • 备份电源:RTC 具有备份电源输入,通常连接到电池或超级电容器,以便在主电源中断时保持 RTC 运行并保留时间信息

  • 计时功能:RTC 可以实现年、月、日、时、分、秒的计时功能,并支持闰年计算、12/24 小时制、日期和时间格式等功能

  • 中断功能:RTC 可以生成中断请求,用于在特定时间点触发中断服务程序,以执行任务调度、时间更新等操作

  • 自动校准:某些 RTC 可以支持自动校准功能,以确保时间的准确性,并在长期运行后校正 RTC 的时钟漂移

2.7 低功耗定时器

在 STM32 微控制器中,低功耗定时器(Low-Power Timer,简称LPTIM)是一种特殊的定时器,设计用于在低功耗模式下提供定时功能。LPTIM 提供了一种节能的方法来执行定时任务,并且在低功耗模式下仍能够正常工作

  • 低功耗模式支持:LPTIM 具有低功耗设计,可在微控制器进入低功耗模式(如停止模式、休眠模式)时继续运行。这使得 LPTIM 在需要定时功能但又需要最小功耗的应用中特别有用

  • 定时功能:LPTIM 具有基本的定时功能,可以生成定时中断或触发其他操作,例如唤醒微控制器或执行某些任务

  • 精度:LPTIM 的精度通常取决于其时钟源和配置,可以达到毫秒级甚至更高的精度

  • 时钟源:LPTIM 可以使用内部 RC 振荡器或外部时钟源作为时钟输入。选择不同的时钟源可以根据应用需求来平衡精度和功耗

  • 中断功能:LPTIM 可以生成中断请求,用于在特定时间点触发中断服务程序,以执行任务调度、唤醒微控制器等操作

3 定时器功能介绍

3.1 定时功能

定时器可以用于生成特定时间间隔的定时中断或触发其他操作。其原理是通过配置定时器的预分频系数和比较寄存器的值来确定定时的时间周期。当定时器的计数器达到或超过比较寄存器的值时,定时器会触发定时中断或执行其他操作

3.2 PWM输出功能

定时器可以用于生成脉冲宽度调制(PWM)信号,用于控制电机、LED调光等应用。其原理是通过配置定时器的计数周期(自动重装载值)和比较寄存器的值来确定 PWM 的周期和占空比。当计数器的值小于比较寄存器的值时,输出信号为高电平;当计数器的值大于比较寄存器的值时,输出信号为低电平

3.3 输入捕获功能

定时器可以用于捕获外部事件的时间戳,例如测量脉冲宽度、测量输入信号的频率等。其原理是通过配置定时器的捕获模式和触发条件,当外部事件发生时,定时器会记录下当前的计数器值作为时间戳

3.4 输出比较功能

定时器可以与输出比较功能结合使用,以产生输出触发信号,例如用于产生精确的脉冲信号或控制外部设备。其原理是通过配置比较寄存器的值和输出触发模式,当计数器的值与比较寄存器的值相等或满足特定条件时,定时器会触发输出比较事件

标签:触发,功能,定时器,RTC,嵌入式,----,定时,PWM
From: https://www.cnblogs.com/zxr-blog/p/17952607

相关文章

  • C语言的算符优先级
    C语言中提供许多算符,比如算术运算、逻辑运算、关系运算等,必须规定它们的优先级,否则将它们放到一起运算肯定要出乱子,正如算术中有先乘除后加减的规则,C语言同样要有确定的运算规则。C语言定义了15个算符优先级,其优先级规则如下:规则1:优先级高的先运算规则2:同一个优先级则需要按照结......
  • xpath和contains模糊匹配
    来源:https://www.cnblogs.com/kaibindirver/p/12072546.html最近在弄数据爬取,研究了下xpath,也参考了很多文章,这篇总结不错,就直接复制过来了。xpath可以以标签定位,也可以@任意属性:如:以input标签定位:driver.find_element_by_xpath("//input[@id='kw']")如:@type属性:driver.find_......
  • Kubernetes之Pod工作负载
    Pod工作负载,亦称Pod控制器。在Kubernetes平台上,我们很少会直接创建一个Pod,因为直接管理单个Pod的工作量将会非常繁琐。我们可以使用KubernetesAPI创建工作负载对象,这些对象所表达的是比Pod更高级别的抽象概念,Kubernetes 控制平面根据我们定义的工作负载对象规......
  • minikube部署Traefik【2】
    目录minikube初体验【1】minikube部署Traefik【2】接上篇,安装完成minikube后,原生单机版的k8s集群已经搭建完毕,本次是为minikube安装traefik。那问题来了,什么是traefik?为什么要用traefik?traefik简介Traefik是一款反向代理、负载均衡服务,使用golang实现,能......
  • 华为路由协议优先级
    名称优先级DIRECT0OSPF10IS-IS15STATIC60RIP100OSPFASE150OSPFNSSA150IBGP255EBGP255......
  • Golang: Redislock源码分析
    Golang:Redislock源码分析源码https://github.com/bsm/redislock实现Lua脚本obtain.lua--obtain.lua:arguments=>[value,tokenLen,ttl]--Obtain.luatrytosetprovidedkeys'swithvalueandttliftheydonotexists.--Keyscanbeoverrideniftheyal......
  • Linux 创建用户不创建家目录,配置ssh密钥的方式
    创建用户不创建家目录useradd-Mtest-user创建ssh密钥对文件#一路会车使用默认值ssh-keygen-trsa-mPEM配置test-user使用密钥vim编辑sshd_config配置文件。vim/etc/ssh/sshd_config添加以下内容,AuthorizedKeysFile配置密钥(公钥)文件所属的位置。MatchUsercodi......
  • March - May 做题合集
    「省选联考2024」迷宫守卫首先考虑是最大化字典序,因此按位贪心。考虑第一位怎么求。有一个简单的做法就是二分,然后转换成\(0\)/\(1\)然后dp。就是令\(f_{u,0/1}\)表示让u这个点开始,走的第一个叶子最优是\(0\)/\(1\)的最小花费。然后再判断是否小于等于\(k\)。这个做......
  • B - Make Many Triangles
    原题链接题解1.我们可以用若干条直线把所有点串起来,串起来的要求是不同直线不共点,这样以每条直线上的两点为底,直线外另一点为顶点配对令最大的直线上的点数为k,如果n-k>=k/2+k%2,那么这条直线上的点一定可以被消除。否则不行就变成了若干集合彼此相消,当最大集合大小超过剩余集......
  • BABYRE 【攻防世界】 Reverse
    题目 丢进ExeinfoPE里面,得到64bit,无壳丢进IDApro(x64)里面,找到主函数 代码中有一个花指令:*(unsignedint(__fastcall**)(char*))judge)(input) unsignedint(__fastcall**)(char*):这是一个函数指针类型,指向一个接受char*类型参数并返回unsignedint类型的函......