ESP8266开发延时

#软件延时
##毫秒级别中断

os_timer_t test_timer; //定义定时  如同int i 一样;
char * buf = "helloworld";
void ICACHE_FLASH_ATTR USE_Taxt(void *arg)  //定义回调函数
{
	os_printf("%s",arg);  //使用串口0打印数据  
}
void   user_init(void)  {//主函数
	os_timer_setfn(&test_timer,USE_Taxt,buff); //回调函数  一旦延时到了执行此函数  USE_Taxt需要调用得函数  buff为给回调函数传递得参数
	os_timer_arm(&test_timer,500,1);  //500ms执行一次  1表示无限循环 0表示只循环一次
}

微秒级别中断

#define USE_US_TIMER   //调用毫秒中断必须定义USE_US_TIMER
os_timer_t test_timer; //定义定时  如同int i 一样;
char * buf = "helloworld";
void USE_Taxt(void *arg)  //定义回调函数
{
	os_printf("%s",arg);  //使用串口0打印数据  
}
void ICACHE_FLASH_ATTR  user_init(void)  {//主函数
	system_timer_reinit();    //初始化毫秒级别得  放在毫秒初始化前边
	os_timer_setfn(&test_timer,USE_Taxt,buff); //回调函数  一旦延时到了执行此函数  USE_Taxt需要调用得函数  buff为给回调函数传递得参数
	os_timer_arm_us(&test_timer,5000,1);  //500ms执行一次  1表示无限循环 0表示只循环一次
}

毫秒级别和微妙级别不能同时调用

对于同一个timer,os_timer_srm或os_timer_arm_us不能重复调用,必须先os_timer_disarm。

os_timer_setfn必须在timer未使能的情况下调用,在os_timer_arm或os_timer_arm_us之前或os_timer_disarm之后

#硬件定时中断

/*--------------------------------------------------------------*/
/*函数功能:定时器回调函数                                                                                 */
/*参       数:无                                                                                                      */
/*返       回:无                                                                                                      */
/*注       意:硬件定时器的回调函数,不能使用 ICACHE_FLASH_ATTR宏              */
/*-------------------------------------------------------------*/
void timer_testTask(void)
{
	os_printf("自动填装测试\r\n");   //打印到串口
}
void ICACHE_FLASH_ATTR  user_init(void)  {//主函数
	/*使用自动填装模式,每次定时器到时的时候,都会按照500ms的设置,再次定时500ms*/

	hw_timer_init(1 ,1);                 //使用NMI中断源,自动填装FRC1_SOURCE = 0, 低级中断    NMI_SOURCE = 1,  高级中断  第二个1为无线循环
	hw_timer_set_func(timer_testTask);  //设置回调函数
	hw_timer_arm(500*1000);             //单位是us,定时的最大值1677.721ms,在此定时500ms
}

注意调用硬件定时中断 不能调用 wifi_set_sleep_type(LIGT_SLEEP); 需要将自动睡眠模式变为 Light-sleep。因为 Light-sleep会停止cpu但不会停止NMI中断;
os_delay_us(us); 最大值延时65535us;

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值