【3】WiFi——————ESP8266 SDK编程 之 定时器

  1. 简述
    1. ESP8266EX有两个定时器
      1. 软件定时器:任务中执行
      2. 硬件定时器:硬件中断源
    2. 软件定时器:
      1. 定时器的函数在任务中被执行,
      2. 优先级的关系,任务定时器会被其他任务中断,定时时间不准确
      3. 软件定时器设置前必须先关闭定时器,设置完毕后再打开定时器
      4. 如未调⽤用 system_timer_reinit,可⽀支持范围 5 ~ 0x68D7A3(5~6870947ms)
      5. 如调⽤用了了 system_timer_reinit,可⽀支持范围 100 ~ 0x689D0(100~428496ms)
    3. 硬件定时器:
      1. 使用NMI中断源,定时器优先级最高,可打断其他ISR
      2. 使用FRC1中断源,该定时器无法打断其他ISR
      3. 定时器与PWM共用同一个硬件定时器,实际应用只能2选1
      4. 使用硬件定时器,不要设置休眠,不支持休眠唤醒
  2. 例程
    1. 软件定时器
      //软件定时器的回调函数
      void ICACHE_FLASH_ATTR os_timer1_cb(void)
      {
      	F_Led = ! F_Led;			//标志位翻转
      	GPIO_OUTPUT_SET(GPIO_ID_PIN(4), F_Led);	//输出端口引脚状态翻转
      	os_printf("\r\n-----------os_timer1_cb---------\r\n");
      }
      
      //软件定时器初始化
      //参数1:定时时长
      //参数2:与定时器是否重复
      void ICACHE_FLASH_ATTR os_timer1_init(u32 ms, bool flag)
      {
      	//关闭软件定时器
      	os_timer_disarm(&os_timer_1);
      
      	//设置定时器
      	//参数1:设置的定时器
      	//参数2:回调函数,需要强制类型转换
      	//参数3:回调函数参数
      	os_timer_setfn(&os_timer_1, (os_timer_func_t *)os_timer1_cb, NULL);
      
      	//启动定时器
      	//参数1:使能的定时器
      	//参数2:定时时长
      	//参数3:1重复,0只用一次
      	os_timer_arm(&os_timer_1, ms, flag);
      	// 【如未调用system_timer_reinit,可支持范围:[5ms ~ 6,870,947ms]】
      	// 【如果调用system_timer_reinit,可支持范围:[100ms ~ 428,496 ms]】
      }

       

    2. 硬件定时器
      //硬件定时器的回调函数
      void hw_timer1_cb(void)
      {
      	F_Led = ! F_Led;			//标志位翻转
      	GPIO_OUTPUT_SET(GPIO_ID_PIN(4), F_Led);	//输出端口引脚状态翻转
      	os_printf("\r\n-----------hw_timer1_cb---------\r\n");
      }
      
      /******************************************************************************
       * FunctionName : user_init
       * Description  : entry of user application, init user function here
       * Parameters   : none
       * Returns      : none
      *******************************************************************************/
      void ICACHE_FLASH_ATTR user_init(void)
      {
      
      
      	uart_init(115200,115200);		//设置串口1,串口2波特率为115200
      
      	os_printf("\r\n--------------------------------------------\r\n");
      	os_printf("SPT SDK	Project:	%s	\r\n",	ProjectName);	//打印项目名称
      	os_printf("SPT SDK	version:	%s	\r\n",	system_get_sdk_version());	//打印版本信息
      	os_printf("\r\n--------------------------------------------\r\n");
      	uart0_sendStr("\r\n Hello World !!! \r\n");
      
      	/*gpio */
      	PIN_FUNC_SELECT(PERIPHS_IO_MUX_GPIO4_U,FUNC_GPIO4);		//管脚功能选择
      	GPIO_OUTPUT_SET(GPIO_ID_PIN(4), 1); 					//输出高电平
      
      	//硬件定时器
      
      	//初始化硬件定时器
      	//参数1:选择FCR1中断源
      	//参数2:自动装载
      	hw_timer_init(NULL, 1);
      
      	//注册回调函数
      	hw_timer_set_func(hw_timer1_cb);
      
      	//使能硬件定时器
      	hw_timer_arm(500000);	//定时500ms,默认单位是us
      }

       

  3. 总结:
    1. 精度要求高:硬件定时器
    2. 程序使用RTOS:软件定时器
  4. 文档资料:
    1. ESP8266 Non-OS SDK API参考
    2. ESP8266 技术参考手册
  5. 工具篇:
    1. 编译器:安信可一体化开发环境(Eclipse),需要安装JAVA环境
    2. 烧录工具:flash_download_tools_v3.6.6.zip
    3. http://wiki.ai-thinker.com/tools
  6. 固件
    1. AT指令:通过串口发送AT指令(串口数据)到ESP8266
    2. SDK编程:8266内部集成了32bit的处理器,通过SDK编程实现所需功能
      1. 分类:带RTOS的SDK和不带RTOS的SDK
    3. SDK版本:ESP8266_NONOS_SDK 2.2.0
  7. 硬件平台
    1. 技新 物联网开发板_ESP8266_V1.0
    2. 安信可 ESP8266模块:ESP12F
      1. 电源:3.3V
      2. 晶振:26Mhz
      3. 外部Flash:4MB = = 32Mbit
      4. 4MB Flash => 0x000 000 ~ 0x3FF FFF
      5. 扇区编号:0x000~0x3FF【Flash扇区 == 4KB】
      6. 外部射频电路:PCB板载天线
  8. 参考资料:
    1. 技新资料:https://www.jixin.pro/bbs/topic/6498
    2. 乐鑫官网:https://www.espressif.com/zh-hans/support/documents/technical-documents?keys=&field_type_tid%5B%5D=14
    3. 安信可官网:www.ai-thinker.com
    4. ESP12F资料:http://wiki.ai-thinker.com/esp8266
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
### 回答1: 您好!关于ESP8266 RTOS SDK编程的问题,我可以提供一些基本的信息和建议。 ESP8266 RTOS SDK是一种针对ESP8266芯片的实时操作系统(RTOS)软件开发工具包(SDK),它提供了一系列API和工具,可以帮助开发者进行ESP8266的嵌入式软件开发。下面是一些入门级别的建议和指导: 1. 学习ESP8266基础知识:在开始使用ESP8266 RTOS SDK之前,您需要了解ESP8266芯片的基本架构和功能。了解ESP8266的GPIO引脚、WiFi连接、内存分配等基本概念是非常有帮助的。 2. 下载和安装ESP8266 RTOS SDK:您可以从ESP8266官网上下载ESP8266 RTOS SDK的安装包,然后按照说明进行安装。安装完成后,您可以在IDE中进行编程。 3. 编写ESP8266 RTOS SDK程序:在ESP8266 RTOS SDK中,您可以使用C语言编写程序。您可以使用提供的API来访问GPIO、WiFi、内存等功能,并使用RTOS提供的任务管理、信号量、消息队列等功能来进行多任务开发。 4. 调试ESP8266 RTOS SDK程序:ESP8266 RTOS SDK提供了一些调试工具,例如调试输出和日志记录。您可以使用这些工具来定位和修复程序中的错误。 总之,ESP8266 RTOS SDK是一种非常强大的嵌入式软件开发工具,它可以帮助您开发出高效、稳定的ESP8266应用程序。如果您有具体的问题,可以随时向我提问,我会尽力帮助您。 ### 回答2: ESP8266 RTOS SDK是一种为ESP8266芯片开发的软件开发套件(SDK),它基于实时操作系统(RTOS)系统架构,提供了一种又快又容易的方法,将ESP8266用于各种应用程序的开发。它包括用于WIFI/网络通信的多个API、自动化任务管理、内存管理、调试和硬件控制等功能,是一种非常强大的SDK。 使用ESP8266 RTOS SDK编程,可以利用SDK提供的功能,开发出一些高效、稳定、可靠、功能强大的应用程序。同时,ESP8266 RTOS SDK编程还需要具备良好的C编程技巧,熟悉ESP8266芯片的基本架构与特性,并了解实时操作系统的基本概念,这对于开发高质量的应用程序是至关重要的。 在ESP8266 RTOS SDK编程中,常常需要处理网络通信等复杂的任务,利用RTOS系统架构可以方便地实现异步式编程。同时,ESP8266 RTOS SDK还提供了一个灵活的事件处理机制,允许开发者处理各种异步事件,从而使得应用程序能够更加高效地响应各种请求。 最后,ESP8266 RTOS SDK编程虽然复杂,但也是一类具有很高价值的技巧。可以帮助开发者实现一些非常有用且实用的应用程序,从而为社会和企业的发展带来更多的收益。 ### 回答3: ESP8266 RTOS SDK是一种基于FreeRTOS的编程框架,用于开发ESP8266芯片的应用程序。它提供了完整的工具链和库,使开发人员可以轻松地创建稳健的、高效的应用程序。 ESP8266 RTOS SDK开发过程需要熟悉C/C++语言和嵌入式设备的基本概念。其核心思想是将应用程序分为多个任务,每个任务负责完成不同的功能,并使用FreeRTOS的调度器实现任务之间的协作与资源共享。 在ESP8266 RTOS SDK中,程序的入口点为user_init函数,该函数通常用于初始化应用程序的任务、队列、控制块等基本结构。在任务的创建过程中,需要指定任务名、任务的优先级、任务处理函数等参数,以及为任务分配堆栈和堆空间等资源。 对于网络应用程序的开发,ESP8266 RTOS SDK提供了WiFi和TCP/IP协议栈API,可用于连接网络、实现数据传输。在应用程序的消息处理过程中,开发人员可以使用FreeRTOS的队列机制实现进程间通信,从而实现数据共享和处理。 ESP8266 RTOS SDK还提供了多种调试和故障排除工具,便于开发人员在应用程序运行过程中进行调试。同时,ESP8266 RTOS SDK还提供了易用的在线OTA(Over-The-Air)功能,开发人员可以远程更新设备的固件,提高开发效率和设备可靠性。 综上所述,ESP8266 RTOS SDK是一种强大的开发工具,为嵌入式设备的应用程序开发和部署提供了全面的支持和保障,使得开发人员可以专注于业务逻辑的实现,提高了开发效率和设备可靠性。

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值