ESP8266 01S 设置软件定时器

学习记录

ESP8266 01S 设置软件定时器

api说明

在这里插入图片描述
软件定时基于任务,不能保证精度

定时时间

在这里插入图片描述

定义变量

// 注:OS_Timer_1必须定义为全局变量,因为ESP8266的内核还要使用
//--------------------------------------------------------------------
os_timer_t OS_Timer_1;	// ①:定义软件定时器(os_timer_t型结构体)

定义回调函数

// 软件定时的回调函数
//======================================================================
void ICACHE_FLASH_ATTR OS_Timer_1_cb(void)		// ②:定义回调函数
{
	F_LED = !F_LED;
	GPIO_OUTPUT_SET(GPIO_ID_PIN(4),F_LED);		// LED状态翻转


	os_printf("\r\n----OS_Timer_1_cb----\r\n");	// 进入回调函数标志
}
//======================================================================

软件定时器初始化

// 软件定时器初始化(ms毫秒)
//================================================================================================
void ICACHE_FLASH_ATTR OS_Timer_1_Init_JX(u32 time_ms, u8 time_repetitive)
{
	// 关闭定时器
	// 参数一:要关闭的定时器
	//--------------------------------------------------------
	os_timer_disarm(&OS_Timer_1);	// ③:关闭软件定时器
	//参数为变量的取地址


	// 设置定时器
	// 参数一:要设置的定时器;
	//参数二:回调函数(需类型转换);
	//参数三:回调函数的参数(没有参数,所以NULL)
	//【注:os_timer_setfn必须在软件定时器未使能的情况下调用!!】
	//------------------------------------------------------------------------------------------
	os_timer_setfn(&OS_Timer_1,(os_timer_func_t *)OS_Timer_1_cb, NULL);	// ④:设置回调函数


	// 使能(启动)ms定时器
	// 参数一:要使能的定时器;参数二:定时时间(单位:ms);参数三:1=重复/0=只一次
	//------------------------------------------------------------------------------------------
	os_timer_arm(&OS_Timer_1, time_ms, time_repetitive);  // ⑤:设置定时器参数并使能定时器
	//-------------------------------------------------------------------
	// 【如未调用system_timer_reinit,可⽀支持范围 5 ~ 0x68D7A3,可支持范围:[5ms ~ 6,870,947ms]】
	// 【如果调用system_timer_reinit,可⽀支持范围 100 ~ 0x689D0,可支持范围:[100ms ~ 428,496 ms]】
	//-------------------------------------------------------------------
}
//================================================================================================

基于任务

若是在初始化函数中开启一个死循环,则软件定时器失效。因为软件定时器基于任务,任务只有系统空闲时才执行。

  • 3
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值