0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
会员中心
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

软件定时器简介及程序配置

CHANBAEK 来源:南山府嵌入式 作者:南山府嵌入式 2022-12-06 16:10 次阅读

1- 简介

1.1 软件定时器简述

软件定时器就是允许函数设置一定的等待时间,然后执行。定时器执行的函数被称为定时器的回调函数。定时器从启动到执行回调函数之间的时间称为定时器的周期。定时器的回调函数在定时器的时间到达时执行。

软件定时器要先创建才能使用。

1.2 软件定时器有效的实现

软件定时器功能的实现是非常容易的,但是想要有效的实现可能会优点困难,FreeRTOS的定时器,不会从中断中执行定时器的回调函数,除非定时器到达了,否则不会消耗任何的运算时间,不会像时钟中添加任何的运算负担,如果中断禁用了,也不会遍历任何的链表结构。

定时器服务任务主要利用了FreeRTOS的一些特性,允许像应用程序添加定时器功能,而对于应用程序可执行的程序影响最小。

1.3 有关定时器的回调函数

定时器回调函数在定时器服务任务中进行执行,所以定时器回调函数不要试图阻塞。比如,定时器回调函数在访问队列或信号量时不能调用vTaskDelay()、vTaskDelayUntil()或指定非零阻塞时间。

2- 定时器服务和定时器命令队列

计时器功能是可选的,不是FreeRTOS核心内核的一部分。相反,它是由定时器服务任务提供的。

FreeRTOS提供了一组与定时器相关的API函数。其中许多函数使用标准的FreeRTOS队列向计时器服务任务发送命令。用于此目的的队列称为timer command queue。timer command queue是FreeRTOS定时器实现的私有命令,不能直接访问。

下图演示了这种情况。左边的代码表示一个函数,它是用户应用程序的一部分,并从作为同一用户应用程序的一部分创建的任务中调用。右边的代码表示定时器服务任务的实现。定时器命令队列是连接应用任务和定时器服务任务的纽带。在本例中,从应用程序代码调用xTimerReset() API函数。这导致将重置命令发送到定时器命令队列,由定时器服务任务处理。应用程序代码只调用xTimerReset() API函数——它没有(也不能)直接访问定时器命令队列。

poYBAGOO-EaABfqsAADtD4Vgwbw653.png

3-软件定时器程序配置

要使FreeRTOS 软件计时器 API在应用程序中可用,只需:

将 FreeRTOS/Source/timers.c 源文件添加到您的项目中,以及在应用程序 FreeRTOSConfig.h 头文件中定义。下面这个表是一些常量:

pYYBAGOO-FuAaOzyAAGPk18N7Rg346.png

4- 自动冲加载

定时器有两种类型:单触发定时器和自动重新加载定时器。一旦启动,单触发定时器只会执行它的回调函数一次。它可以手动重新启动,但不能自动重新启动。相反,自动重新加载定时器一旦启动,在每次执行回调函数后都会自动重新启动,导致周期性的回调执行。

下图演示了,单触发定时器和自动重载之间的区别,在此图中,定时器1为周期等于100的单次定时器,计时器2是自动重加载周期等于200次的定时器。

poYBAGOO-GyASKx4AAC0Gt24NK0955.png

5-定时器的重置

重新设置已经开始运行的定时器。重置定时器会导致定时器重新计算其达到的时间,这种行为在下面的图中得到了展示,其中定时器1是一个周期为5秒的单触发定时器。

poYBAGOO-H6ATd1lAADB0gtm3sk332.png

声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
  • 软件定时器
    +关注

    关注

    0

    文章

    18

    浏览量

    6738
  • 定时器
    +关注

    关注

    23

    文章

    3246

    浏览量

    114714
  • FreeRTOS
    +关注

    关注

    12

    文章

    484

    浏览量

    62136
  • 回调函数
    +关注

    关注

    0

    文章

    87

    浏览量

    11554
收藏 人收藏

    评论

    相关推荐

    基于STM32的软件定时器设计

    软件定时器是用程序模拟出来的定时器,可以由一个硬件定时器模拟出成千上万个软件
    发表于 07-03 17:06 1050次阅读
    基于STM32的<b class='flag-5'>软件</b><b class='flag-5'>定时器</b>设计

    定时器中断简介

    定时器中断1. 定时器中断简介2. 硬件设计3. 软件设计3.1 STM32CubeMX设置3.2 MDK-ARM编程4. 下载验证
    发表于 08-12 06:29

    最简单的滴答定时器程序简介

    最简单的滴答定时器程序简介SysTick实验配置步骤和方法1.设置滴答的次数2.设置时长3.停止计数实验代码简介SysTick—系统
    发表于 01-20 08:16

    基于Win32的控制软件定时器程序的编写

    基于Win32的控制软件定时器程序的编写
    发表于 02-07 18:01 9次下载

    stm32定时器中断程序

    STM32的定时器是个强大的模块,定时器使用的频率也是很高的,定时器可以做一些基本的定时,还可以做PWM输出或者输入捕获功能。 以下是进行stm32
    发表于 10-12 16:59 1.3w次阅读

    μC/OS-II的软件定时器的改进的方法

    1、概述 软件定时器是一种软件措施,通过它可以使一项特定的任务在给定的时间段后被执行。软件定时器广泛地应用于内核设计和应用
    发表于 10-31 16:57 0次下载
    μC/OS-II的<b class='flag-5'>软件</b><b class='flag-5'>定时器</b>的改进的方法

    555定时器应用设计软件免费下载

    本文档的主要内容详细介绍的是555定时器应用设计软件免费下载,本软件是一款555定时器设计软件,使用非常方便。
    发表于 12-17 08:00 51次下载
    555<b class='flag-5'>定时器</b>应用设计<b class='flag-5'>软件</b>免费下载

    设计软件定时器

    软件定时器搬来使用2、自己设计软件定时器这里我只介绍第二种方法,我们知道,硬件定时器是通过对系统时钟周期进行计数实现的,那么
    发表于 11-05 18:35 2次下载
    设计<b class='flag-5'>软件</b><b class='flag-5'>定时器</b>

    stm32—定时器配置

    目录定时器组成通用寄存通用寄存简介:通用定时器 TIMx (TIM2-TIM5 )的功能:通用定时器
    发表于 11-22 17:51 11次下载
    stm32—<b class='flag-5'>定时器</b><b class='flag-5'>配置</b>

    基于硬件定时器软件定时器

    概括硬件定时器很精确,软件定时器无论如何都有延迟,主要用在不需要精确定时的地方,而且软件定时比较
    发表于 11-25 09:51 8次下载
    基于硬件<b class='flag-5'>定时器</b>的<b class='flag-5'>软件</b><b class='flag-5'>定时器</b>

    ESP32 之 ESP-IDF 教学(三)——通用硬件定时器(Timer)

    配置定时器【1】定时器初始化函数`timer_init()`简介配置结构体`timer_config_t`
    发表于 11-26 11:36 37次下载
    ESP32 之 ESP-IDF 教学(三)——通用硬件<b class='flag-5'>定时器</b>(Timer)

    freeRTOS软件定时器的使用

    freeRTOS中加入了软件定时器这个功能组件,是一个可选的、不属于freeRTOS内核的功能,由定时器服务(其实就是一个定时器任务)来提供。
    的头像 发表于 02-10 13:55 2145次阅读

    Free RTOS的软件定时器

    软件定时器是FreeRTOS中的一个重要模块,使用软件定时器可以方便的实现一些与超时或周期性相关的功能。
    的头像 发表于 02-10 15:53 2333次阅读
    Free RTOS的<b class='flag-5'>软件</b><b class='flag-5'>定时器</b>

    什么是软件定时器软件定时器的实现原理

    软件定时器是用程序模拟出来的定时器,可以由一个硬件定时器模拟出成千上万个软件
    的头像 发表于 05-23 17:05 2774次阅读

    定时器中断程序怎么写

    定时器中断程序怎么写  在嵌入式系统中,定时器被广泛应用于各种任务。它们在实时系统中可用于轮询,计时等任务。定时器可以被配置为周期性
    的头像 发表于 09-01 10:17 1949次阅读