FreeRTOS-软件定时器

一.软件定时器简介

裸机上也有学习过定时器,但是裸机上属于硬件定时器

1.什么是软件定时器?

答:具有定时功能的软件,可设置定时周期,当指定时间到达后调用回调函数,用户在回调函数中处理信息。

2.软件定时器的优缺点

优点:(1)硬件定时器数量有限,软件定时器理论上内存足够,就可以创建多个        (2)使用简单、成本低

缺点:(3)软件定时器精度不高(因为它一系统时钟为基准,系统时钟中断优先级低,容易被打断),对于精度要求高的场合,不建议使用软件定时器。

3.软件定时器特点

(1)可裁剪:使用软件定时器时,需要将configUSE_TIMERS配置为1

(2)单次和周期:软件定时器支持:单次定时器(运行一次)和周期定时器

注意:软件定时器的超时回调函数是由软件定时器服务任务调用的,软件定时器的超时回调函数本身是函数,因此不能再回调函数中调用可能导致任务阻塞的API函数。

软件定时器服务任务:在调用vTaskStartScheduler()开启任务调度器时自动创建,用于管理软件定时器的任务。   

软件定时器服务任务作用:(1)负责软件定时器超时的逻辑判断  (2)调用超时软件定时器的回调函数

                                           (3)处理软件定时器命令队列

4.什么是软件定时器命令队列?

答:FreeRTOS中有许多软件定时器相关的API函数,通过这些API函数往定时器队列中写入消息(发送命令),该队列是提供给软件定时器使用的,用户不能直接访问。

5.软件定时器的相关配置

(1)将配置项configUSE_TIMERS设置为1,在启动任务调度器时,会自动创建软件定时器的服务/守护任务prvTimerTask()

(2)软件定时器服务任务的优先级为configTIMER_TASK_PRIORITY=31,设置为最高

(3)定时器的命令队列长度为config_QUEUE_LENGYH=5

注意:软件定时器的任务回调函数在软件定时器服务任务中调用,服务任务不单单为一个软件定时器服务,还处理其他定时器。  a.回调函数要尽快执行,不能进入阻塞态。  b.访问队列或信号量的非零阻塞时间的API函数不能调用(阻塞时间只能设置为0)。

6.软件定时器的状态

(1)休息态:软件定时器可以通过其句柄被引用,但因为没有运行,所以不执行超时回调函数

(2)运行态:当到达指定时间后,调用超时回调函数

注意:新创建的软件定时器处于休眠状态,也就是未运行,通过发送命令队列,启动定时器

二.软件定时器相关API函数

1.软件定时器结构体成员介绍

2.创建软件定时器  xTimerCreate()

 3.开启软件定时器  xTimerStart()

 4.复位软件定时器   xTimerReset()

5.更改软件定时器超时时间   xTimerChangePeriod()

 

综合实验(CubMX自动生成):

1.创建两个定时器,创建任务TaskKEY

定时器1:周期定时器,每1s打印提示语句

定时器2:单次定时器,启动后2s打印提示语句

TaskKEY:按键控制软件定时器的开启与关闭

2.CubeMX配置

(1)使能软件定时器功能

开启软件定时器的功能,设置软件定时器服务任务的优先级为最高,定时器命令队列长度为5,任务堆栈大小为256字节

(2)创建两个定时器

软件自动生成代码,创建两个定时器,注意:没有为定时器赋予定时的时间(此时默认1ms),需要在开启定时器时调用封装函数osTimerStatr(定时器句柄,定时时间)

(3)定时器的回调函数

(4)按键控制开启和关闭软件定时器

 现象1(CubeMX自动生成):

 

 

综合实验:

1.创建第三个定时器,模式为单次定时器,定时500ms

TaskKEY:按键控制软件定时器的开启与关闭

2.CubeMX配置

(1)使能软件定时器功能

......省略.....

3.代码部分

(1)创建软件定时器3,定时500ms,单次定时器

(2)定时器3的回调函数

(3)按键控制函数

现象2:增加Timer定时器3

 ​​​​​​​

 

 

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值