26-软件定时器

软件定时器

一、什么是软件定时器?

自带的定时器是硬件定时器。

硬件定时器是芯片自身提供的一个功能。一般是通过外部晶振提供给芯片输入时钟,芯片向软件模块提供一组配置的寄存器,通过对寄存器的设置,能够实现定时的功能,当到达指定的时候后,芯片中断控制器会产生一个时钟中断。然后在中断函数中触发。

定时器,是指从指定的时刻开始,经过一个指定时间,然后触发一个超时事件,用户可以自定义定时器的周期与频率。

软件定时器相当于是一个任务,但这个任务触发然后去调用一个函数(回调函数),在回调函数中不能设置任何阻塞的API函数。

FreeRTOS 操作系统提供软件定时器功能,软件定时器的使用相当于扩展了定时器的数量,允许创建更多的定时业务。FreeRTOS 软件定时器功能上支持:

●裁剪:能通过宏关闭软件定时器功能。

●软件定时器创建。

●软件定时器启动。

●软件定时器停止。

●软件定时器复位。

●软件定时器删除。

软件定时器有单次执行和周期执行的两种模式(相当于定闹钟的只响一次和每天都响)

    1. 软件定时器应用场景

硬件定时器不够用,定时精度不高的场合

1.2 软件定时器的精度

在软件定时器中,通常以系统节拍周期为计数单位(SysTick,系统节拍相当于人的心跳,在FreeRTOS.config中可以配置。默认设置为1000,相当于1秒可以跳1000次。跳一次1ms

二、使用软件定时器时候要注意以下几点:

●软件定时器的回调函数中应快进快出,绝对不允许使用任何可能引软件定时器起任务挂起或者阻塞的 API 接口,在回调函数中也绝对不允许出现死循环。

●软件定时器使用了系统的一个队列和一个任务资源,软件定时器任务的优先级默认为 configTIMER_TASK_PRIORITY,为了更好响应,该优先级应设置为所有任务中最高的优先级。

●创建单次软件定时器,该定时器超时执行完回调函数后,系统会自动删除该软件定时器,并回收资源。

●定时器任务的堆栈大小默认为 configTIMER_TASK_STACK_DEPTH 个字节。

三、软件定时器控制块

  1. 软件定时器的名称,一般调试的时候才用
  2. 软件定时器的列表项,用于插入定时器的列表
  3. 软件定时器的周期,单位是系统节拍周期,系统节拍设置为1000,相当于1ms,这个周期设置为多少,就是多少ms
  4. 软件定时器是否重置。如果设置为FALSE,则相当于单次模式,如果设置为TRUE,则相当于周期模式
  5. 软件定时器的ID,在回调函数中用来寻找是那个软件定时器。一般用于多个软件定时器调用一个回调函数。
  6. 软件定时器的回调函数
  7. 标记定时器使用的内存,删除时判断是否需要释放内存

四、API函数

软件定时器创建函数 xTimerCreate()

软件定时器启动函数xTimerStart()  

软件定时器停止函数xTimerStop()

软件定时器删除函数 xTimerDelete()

软件定时器创建函数 xTimerCreate()

  1. 软件定时器的名称,一般只有调试的时候用
  2. 软件定时器的系统周期
  3. 用来设置软件定时器是单次还是周期
  4. 设置软件定时器的ID,在回调函数中进行匹配

(一个回调函数分配给多个软件定时器的时候,根据这个ID的值来处理不同的软件定时器)

  1. 回调函数

软件定时器启动函数xTimerStart()  

软件定时器创建完成后,处于休眠状态,需要启动函数,才能开启。

由于xTicksToWait这个参数在启用调度器前不起作用,所以软件定时器启动函数需要放在启用调度器之后

可以看到有两个参数  xTimer  软件定时器的任务句柄    xTicksToWait  软件定时器启动函数把启动命令执行前的阻塞时间

由于xTicksToWait这个参数在启用调度器前不起作用,所以软件定时器启动函数需要放在启用调度器之后

  1. 软件定时器的句柄
  2. 软件定时器启动命令
  3. 获取当前系统的节拍
  4. 用户自定义阻塞的时间

xTimerStartFromISR()

软件定时器停止函数xTimerStop()

xTimerStopFromISR()

软件定时器删除函数 xTimerDelete()

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值