FreeRTOS软件定时器使用

FreeRTOS软件定时器使用

0、引入timers.h头文件

引入freeRTOS文件夹下timers.h头文件

1、FreeRTOSConfig.h文件中配置

//软件定时器相关宏定义
//启用软件定时器
#define configUSE_TIMERS                         1                              
//软件定时器优先级
#define configTIMER_TASK_PRIORITY                5      
//软件定时器队列长度
#define configTIMER_QUEUE_LENGTH                 10                               
//软件定时器任务堆栈大小
#define configTIMER_TASK_STACK_DEPTH          (configMINIMAL_STACK_SIZE*2)		//256字

configMINIMAL_STACK_SIZE:空闲任务使用的堆栈大小

2、创建软件定时器句柄,声明回调函数

TimerHandle_t xTimerSendNetHeart_Handle; 				// 定义软件定时器句柄
void SendNetHeartBeatCallback(TimerHandle_t xTimer);

3、申请定时器

	xTimerSendNetHeart_Handle = xTimerCreate
												 /*调试用, 系统不用*/
												 ("NetHeartBeat",
												 /*定时溢出周期, 单位是任务节拍数*/
												 30000,   							//30s
												 /*是否自动重载, 此处设置周期性执行*/
												 pdTRUE,							//周期性执行
												 /*记录定时器溢出次数, 初始化零, 用户自己设置*/
												( void * ) 1,
												 /*回调函数*/
												SendNetHeartBeatCallback);

关于任务节拍数:
FreeRTOSConfig.h文件中

#define configTICK_RATE_HZ			( ( TickType_t ) 1000 )	
												//时钟节拍频率,这里设置为1000,周期就是1ms

4、启动定时器,停止定时器,重启定时器

1)、启动软件定时器

//任务级
						if(xTimerStart(xTimerSendNetHeart_Handle,1000) == pdPASS)	//如果启动软件定时器成功
						{
							LOG_STRING("心跳包软件定时器创建成功\r\n");
						}

2)、停止软件定时器

//任务级
				if(xTimerSendNetHeart_Handle != NULL)								//如果软件定时器已经创建成功
				{
					xTimerStop(xTimerSendNetHeart_Handle,1000);				//停止软件定时器
				}

3)、复位软件定时器

//任务级
		//释放个信号,表示有数据传输,待完善
		if(xTimerSendNetHeart_Handle != NULL)
		{
			xTimerReset(xTimerSendNetHeart_Handle,0);
		}
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值