esp8266学习笔记(3)——定时器

接着传统顺序,接下来是定时器,定时器分软件定时器和硬件定时器。

软件定时器

手册里说明的也是比较详细的。这里直接贴主要代码

static os_timer_t os_timer;//定时器结构体

void Led_shack(void)//定时器回调函数
{
	static bool led_stat=false;//定义灯状态变量
	GPIO_OUTPUT_SET(GPIO_ID_PIN(12), led_stat);//设置灯状态
	led_stat=!led_stat;//反转标志位
}
/*主函数入口*/
void ICACHE_FLASH_ATTR
user_init(void)
{

	    //uart_init(115200, 115200);//设置串口0和串口1的波特率
	    os_printf("download time:%s %s",__DATE__,__TIME__);//串口打印下载时间
	    PIN_FUNC_SELECT(PERIPHS_IO_MUX_MTDI_U, FUNC_GPIO12);//io初始化设置
	           os_timer_disarm( &os_timer );//关闭定时器
	           os_timer_setfn( &os_timer, (ETSTimerFunc *) ( Led_shack ), NULL );//配置该定时器回调函数
	           os_timer_arm( &os_timer, 500, true );//启动定时器

}

对于我这种粗心的人,特地打印了编译时间,防止前期不习惯没保存就编译了找半天问题浪费时间。

硬件定时器

硬件定时器配置配置也不难,最主要的是硬件定时器驱动接口是个.c文件,得把他弄过来,具体操作在readme里有,文件名是hw_timer.c,英语渣渣谷歌翻译的esp8266学习笔记(3)——定时器
回调函数和软件中断一样,就改了些配置

hw_timer_init(0, 1);
hw_timer_set_func(Led_shack);//设置定时器的回调函数
hw_timer_arm(500);//设置定时时间