STM32cubeMX配置FreeRTOS软件定时器

简介: STM32cubeMX配置FreeRTOS软件定时器

前言

本文主要带大家了解什么是软件定时器,并且带大家使用cubeMX配置软件定时器。


1.软件定时器概述

一.软件定时器特性

软件定时器就是一个闹钟当时间到了就执行相对应的任务或者代码。软件定时器是基于系统滴答中断的。在FreeRTOS中我们可以设置无数个软件定时器。

指定时间:启动定时器和运行回调函数,两者的间隔被称为定时器的周期

(period)。


指定类型定时器有两种类型:

1.一次性

这类定时器启动后,它的回调函数只会被调用一次;可以手工再次启动它,但是不会自动启动它。

2.自动加载定时器

这类定时器启动后,时间到之后它会自动启动它;这使得回调函数被周期性地调用。


二、使用cubeMX生成软件定时器

1.开启软件定时器的相应宏

image.png

2.添加软件定时器

image.png

3.设置软件定时器参数

image.png

1.Timer Name:定时器名字

2.CallBack:定时器回调函数名字

3.Type:定时器类型选择(周期性,一次性)


三、代码讲解

1.定时器相关宏修改

我们在这里需要将configTIMER_TASK_PRIORITY这个宏进行修改这个宏代表的是软件定时器的优先级,软件定时器优先级如果设置的太低将会导致软件定时器无法运行,所以要修改相应的宏。

/* Software timer definitions. */
#define configUSE_TIMERS                         1
#define configTIMER_TASK_PRIORITY                3//( 2 )
#define configTIMER_QUEUE_LENGTH                 10
#define configTIMER_TASK_STACK_DEPTH             256

2.创建定时器及开启软件定时器

/* Create the timer(s) */
/* definition and creation of myTimer01 */
osTimerDef(myTimer01, Callback01);
myTimer01Handle = osTimerCreate(osTimer(myTimer01), osTimerPeriodic, NULL);
/* USER CODE BEGIN RTOS_TIMERS */
/* start timers, add new ones, ... */
/* USER CODE END RTOS_TIMERS */

下面代表的是选择定时器是一次性的还是周期性的

typedef enum  {
  osTimerOnce             =     0,       ///< one-shot timer
  osTimerPeriodic         =     1        ///< repeating timer
} os_timer_type;

软件定时器回调函数

/* Callback01 function */
void Callback01(void const * argument)
{
  /* USER CODE BEGIN Callback01 */
  /* USER CODE END Callback01 */
}

开启软件定时器

osTimerStart(myTimer01Handle,1000);//1000代表回调函数回调周期

总结

一般我们只会使用到硬件定时器,但是在硬件定时器不足的时候我们可以创建软件定时器来代替硬件定时器的使用。

相关文章
|
4月前
|
传感器
stm32f407探索者开发板(二十二)——通用定时器基本原理讲解
stm32f407探索者开发板(二十二)——通用定时器基本原理讲解
343 0
|
4月前
stm32f407探索者开发板(十七)——串口寄存器库函数配置方法
stm32f407探索者开发板(十七)——串口寄存器库函数配置方法
694 0
|
4月前
|
芯片
stm32f407探索者开发板(十二)——Systick滴答定时器-延时函数讲解
stm32f407探索者开发板(十二)——Systick滴答定时器-延时函数讲解
249 0
|
4月前
STM32CubeMX FreeRTOS 互斥锁
STM32CubeMX FreeRTOS 互斥锁
162 12
|
4月前
STM32CubeMX FreeRTOS 任务的挂起和恢复
STM32CubeMX FreeRTOS 任务的挂起和恢复
102 12
|
4月前
STM32Cubemx FreeRTOS Event
STM32Cubemx FreeRTOS Event
38 11
|
4月前
|
消息中间件
STM32CubeMX FreeRTOS 消息队列
STM32CubeMX FreeRTOS 消息队列
139 11
|
4月前
STM32Cubmx FreeRTOS Timer
STM32Cubmx FreeRTOS Timer
47 10
|
4月前
STM32CubeMX FreeRTOS点亮LED
STM32CubeMX FreeRTOS点亮LED
78 10