FreeRTOS(4):软件定时器、中断管理

本文详细介绍了FreeRTOS中延时函数的分类(vTaskDelay和HAL_Delay区别)、软件定时器的概念、优缺点、原理、配置以及使用方法,包括单次和周期定时器,同时涵盖中断管理的基础知识和实战示例。

目录

一、延时函数

延时函数分类

vTaskDelay 与 HAL_Delay 的区别

二、软件定时器

什么是定时器?

软件定时器优缺点

软件定时器原理

软件定时器相关配置

单次定时器和周期定时器

1. 创建软件定时器

2. 开启软件定时器

3. 停止软件定时器

4. 复位软件定时器

5. 更改软件定时器定时时间

实操

实验需求

cubeMX配置

代码实现

三、中断管理

中断定义

中断优先级

相关注意

实操

实验需求

cubeMX配置

代码实现


一、延时函数

延时函数分类

        相对延时:vTaskDelay

        绝对延时:vTaskDelayUntil

 

vTaskDelay 与 HAL_Delay 的区别

vTaskDelay 作用是让任务阻塞,任务阻塞后,RTOS系统调用其它处于就绪状态的优先级最高的任务来执行。

HAL_Delay 一直不停的调用获取系统时间的函数,直到指定的时间流逝然后退出,故其占用了全部CPU时间。

二、软件定时器

什么是定时器?

简单可以理解为闹钟,到达指定一段时间后,就会响铃。

STM32 芯片自带硬件定时器,精度较高,达到定时时间后会触发中断,也可以生成 PWM 、输入捕获、输出比较,等等,功能强大,但是由于硬件的限制,个数有限。

软件定时器也可以实现定时功能,达到定时时间后可调用回调函数,可以在回调函数里处理信息。

软件定时器优缺点

优点:

        1. 简单、成本低;

        2. 只要内存足够,可创建多个;

缺点:

        精度较低,容易受中断影响。在大多数情况下够用,但对于精度要求比较高的场合不建议使用。

软件定时器原理

定时器是一个可选的、不属于 FreeRTOS 内核的功能,它是由定时器服务任务来提供的。

在调用函数 vTaskStartScheduler() 开启任务调度器的时候,会创建一个用于管理软件定时器的任务,这个任务就叫做软件定时器服务任务。

        1. 负责软件定时器超时的逻辑判断

        2. 调用超时软件定时器的超时回调函数

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

FreeRTOS提供了很多定时器有关的API函数,这些API函数大多都使用FreeRTOS的队列发送命令给定时器服务任务。这个队列叫做定时器命令队列。定时器命令队列是提供给FreeRTOS的软件定时器使用的,用户不能直接访问!

软件定时器相关配置

软件定时器有一个定时器服务任务和定时器命令队列,这两个东西肯定是要配置的,相关的配置也是放到文件FreeRTOSConfig.h中的,涉及到的配置如下:

1、configUSE_TIMERS

        如果要使用软件定时器的话宏configUSE_TIMERS一定要设置为1,当设置为1的话定时器服务任务就会在启动FreeRTOS调度器的时候自动创建。

2、configTIMER_TASK_PRIORITY

        设置软件定时器服务任务的任务优先级,可以为0~(configMAX_PRIORITIES-1)。优先级一定要根据实际的应用要求来设置。如果定时器服务任务的优先级设置的高的话,定时器命令队列中的命令和定时器回调函数就会及时的得到处理。

3、configTIMER_QUEUE_LENGTH

        此宏用来设置定时器命令队列的队列长度。

4、configTIMER_TASK_STACK_DEPTH

  &nbs

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值