FreeRTOS学习(十一)软件定时器

声明及感谢: 跟随正点原子资料学习, 在此作为学习的记录和总结
环境 keil , stm32f103

软件定时器简介,
1, 软件定时器允许设置一段时间, 当设置的时间到达之后就执行指定的功能函数, 被定时器调用的这个函数叫做定时器的回调函数。 回调函数两次执行间隔叫做定时器的定时周期, 简而言之, 当定时器的定时周期到了以后就会执行回调函数。

需要开启的宏定义:
1, configUSE_TIMERS
要使用软件定时器的话就要设置 此宏定义为1, 当设置为1的话定时器服务任务就会启动FreeRTOS调度器的时候自动创建。

2, configTIMER_TASK_PRIORITY
设置软件定时器任务的优先级, 可以为0~(configMAX_PRIORITIES-1).

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

4, configTIMER_TASK_STACK_DEPTH
此宏用来设置定时器服务任务的任务堆栈大小, 单位为字, 不是字节!。 对于STM32来说, 一字是4字节。

一些API函数。
1. 复位软件定时器
xTimerReset() // 复位软件定时器, 用在任务中
xTimerResetFromISR() // 复位软件定时器, 用在中断服务函数中。

** 2. 创建软件定时**
xTimerCreate() // 使用动态创建软件定时器
xTimerCreateStatic() // 使用静态方法创建软件定时器。
具体参数 请参考 <<STM32F103 FreeRTOS开发手册V1.1>> 手册
示例

TimerHandle_t	OneShotTimer_Handle;			// 定时器句柄

	OneShotTimer_Handle=xTimerCreate((const char*			)"OneShotTimer",
							         (TickType_t			)2000,
							         (UBaseType_t			)pdFALSE,
							         (void*					)2,
							         (TimerCallbackFunction_t)OneShotCallback); // 创建定时器, 周期2S (2000个时钟节拍), 单次模式


3. 开启软件定时器

xTimerStart() // 开启软件定时器, 用于任务中
xTimerStartFromISR // 开启软件定时器, 用于中断中

4. 停止软件定时器
xTimerStop() // 停止软件定时器, 用于任务中。
xTimerStopFromISR() // 停止软件定时器, 用于中断服务函数中。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值