<3> esp8266 iot 软件延时

本文档介绍了如何在ESP8266 IoT项目中创建和使用os_delay_us延时函数。从新建项目开始,详细讲解了创建bsp_delay.c和bsp_delay.h文件的过程,并解析了ICACHE_FLASH_ATTR和system_soft_wdt_feed()函数。通过修改user_main.c文件并配置编译规则,最终实现了一个间隔200ms打印计数的程序,验证了延时功能。
摘要由CSDN通过智能技术生成

目录

一、延时函数os_delay_us

二、新建项目

三、新建文件

1.bsp_delay.c

2.bsp_delay.h

四、ICACHE_FLASH_ATTR,system_soft_wdt_feed()解析

五、user_main.c

六、程序运行结果


一、延时函数os_delay_us

二、新建项目

复制(<esp8266 iot 开发环境搭建(AiThinkerIDE_V1.5.2)>https://blog.csdn.net/qq_27558597/article/details/117656516?spm=1001.2014.3001.5502)章节的SDK模板,项目名为<002_Delay>,导入IDE,如下:

打开driver文件夹,删除暂时用不到的.c文件,以及include下的driver的对应的.h文件,过程如下:

注意不要把Makefile删除了。

三、新建文件

1.bsp_delay.c

修改bsp_delay.c内容如下:

/*
*********************************************************************************************************
*
*	程序名称: 系统延时模块
*	文件名称: bsp_delay.c
*	版    本: v1.0.0
*   编    写: 风巽云科技 lijiangmo
*	说    明: 使用os_delay_us重新封装
*
*	版本记录: 
*	v1.0.0: 2021年6月9日,初版
*
*	Copyright (C), 2021-2031, 深圳市风巽云科技有限公司 https://fxymcu.taobao.com
*
*********************************************************************************************************
*/

#include "osapi.h"
#include "user_interface.h"

/*
*********************************************************************************************************
*	函 数 bsp_DelayUsUs
*	功能说明: us延时
*	形    参: ulNus: 延时值,注意最大延时值为 2^24 / fUsValueCount)
*	返 回 值: 无
*********************************************************************************************************
*/
void ICACHE_FLASH_ATTR bsp_DelayUs(uint32_t ulNus)
{
    os_delay_us(ulNus);
}

/*
*********************************************************************************************************
*	函 数 bsp_DelayMsMs
*	功能说明: ms延时
  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 7
    评论
package ece448.iot_sim; import java.util.List; import java.util.Map; import java.util.TreeMap; import org.slf4j.Logger; import org.slf4j.LoggerFactory; import ece448.iot_sim.http_server.RequestHandler; public class HTTPCommands implements RequestHandler { // Use a map so we can search plugs by name. private final TreeMap<String, PlugSim> plugs = new TreeMap<>(); public HTTPCommands(List<PlugSim> plugs) { for (PlugSim plug: plugs) { this.plugs.put(plug.getName(), plug); } } @Override public String handleGet(String path, Map<String, String> params) { // list all: / // do switch: /plugName?action=on|off|toggle // just report: /plugName logger.info("HTTPCmd {}: {}", path, params); if (path.equals("/")) { return listPlugs(); } PlugSim plug = plugs.get(path.substring(1)); if (plug == null) return null; // no such plug String action = params.get("action"); if (action == null) return report(plug); // P2: add your code here, modify the next line if necessary if("toggle".equals(action)){ plug.toggle(); return report(plug); }else if("on".equals(action)){ plug.switchOn(); return report(plug); }else if("off".equals(action)){ plug.switchOff(); return report(plug); } return "<html><body></body></html>"; } protected String listPlugs() { StringBuilder sb = new StringBuilder(); sb.append("<html><body>"); for (String plugName: plugs.keySet()) { sb.append(String.format("<p><a href='/%s'>%s</a></p>", plugName, plugName)); } sb.append("</body></html>"); return sb.toString(); } protected String report(PlugSim plug) { String name = plug.getName(); return String.format("<html><body>" +"<p>Plug %s is %s.</p>" +"<p>Power reading is %.3f.</p>" +"<p><a href='/%s?action=on'>Switch On</a></p>" +"<p><a href='/%s?action=off'>Switch Off</a></p>" +"<p><a href='/%s?action=toggle'>Toggle</a></p>" +"</body></html>", name, plug.isOn()? "on": "off", plug.getPower(), name, name, name); }如何对上述代码全部功能进行测试呢?请提供测试代码。
06-12

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值