Arduino for Esp8266 基础篇之Ticker
前言:Arduino for esp8266属于无操作系统环境,对于开发多任务的复杂应用还是比较麻烦的,所以这里就提供了一个近似于操作系统调度器的功能Ticker类;Ticker的功能非常简单,就是规定时间后调用函数,总体上,根据功能可以把方法分为两大类:1 定时器管理方法;2 定时器启用方法;
1 定时器管理方法:
void Ticker::detach() //停止定时器
{
if (!_timer)
return;
os_timer_disarm(_timer); //关闭软件定时器
_timer = nullptr; // 定时器指针为nullptr;
_callback_function = nullptr; // 回调函数指针为nullptr;
}
bool Ticker::active() const // 定时器是否工作状态
{
return _timer;
}
2定时器启用方法:
void Ticker::once(float seconds, callback_function_t callback); xx秒后只执行一次
其中入口参数:seconds—秒数 ;callback—回调函数;
void Ticker::once(float seconds, void (*callback)(TArg), TArg arg); xx秒后只执行一次
其中入口参数:seconds—秒数 ;callback—回调函数;arg—回调函数参数;
void Ticker::once_ms(uint32_t milliseconds, callback_function_t callback) ;xx毫秒后只执行一次
其中入口参数:milliseconds—毫秒数 ;callback—回调函数;
void Ticker::once_ms(uint32_t milliseconds, void (*callback)(TArg), TArg arg) xx毫秒后只执行一次
其中入口参数:milliseconds—毫秒数 ;callback—回调函数;arg—回调函数参数;
void Ticker::attach(float seconds, callback_function_t callback); 每隔xx秒周期性执行
其中入口参数:seconds—秒数 ;callback—回调函数;
void Ticker::attach(float seconds, void (*callback)(TArg), TArg arg) 每隔xx秒周期性执行
其中入口参数:seconds—秒数 ;callback—回调函数;arg—回调函数参数;
void Ticker::attach_ms_scheduled(uint32_t milliseconds, callback_function_t callback) ;每隔xx毫秒周期性执行
其中入口参数:milliseconds—毫秒数 ;callback—回调函数;
void Ticker::attach_ms(uint32_t milliseconds, void (*callback)(TArg), TArg arg);每隔xx毫秒周期性执行
其中入口参数:milliseconds—毫秒数 ;callback—回调函数;arg—回调函数参数;
核心函数:
// 入口参数:milliseconds:毫秒数 ;repeat:是否重复(周期性);callback:回调函数;arg:回调函数参数
void Ticker::_attach_ms(uint32_t milliseconds, bool repeat, callback_with_arg_t callback, void* arg)
{
if (_timer)
{
os_timer_disarm(_timer);//关闭软件定时器
}
else
{
_timer = &_etsTimer;
}
os_timer_setfn(_timer, callback