<?xml version="1.0" encoding="utf-8" ?><rss version="2.0"><channel><title><![CDATA[啤酒的博客]]></title><description><![CDATA[]]></description><link>https://blog.youkuaiyun.com/u010858987</link><language>zh-cn</language><generator>https://blog.youkuaiyun.com/</generator><copyright><![CDATA[Copyright &copy; u010858987]]></copyright><item><title><![CDATA[ESP32开发--为配网模式添加按键和指示灯]]></title><link>https://blog.youkuaiyun.com/u010858987/article/details/109115368</link><guid>https://blog.youkuaiyun.com/u010858987/article/details/109115368</guid><author>u010858987</author><pubDate>Fri, 16 Oct 2020 14:13:28 +0800</pubDate><description><![CDATA[本文目录

一. 添加自己的组件

二.添加主动清除配网信息的按钮

三.加入配网指示灯

 在前面的章节我们设置了自动重连，也提出了我们的疑问：就是怎么主动清除联网信息以连接新的网络，以及主动让客户知道我们联网的过程，比如有没有连上网络，连上以后有没有断线等等。这一章我们就来实现这些功能。

一. 添加自己的组件

 这里我在smart_config例程的基础上做了修改，在main文件夹里新建了main.c 和smartconfig_led.c ，将原来的smartconfig_main....]]></description><category></category></item><item><title><![CDATA[ESP32开发--Cmake的介绍与组件的添加]]></title><link>https://blog.youkuaiyun.com/u010858987/article/details/109114817</link><guid>https://blog.youkuaiyun.com/u010858987/article/details/109114817</guid><author>u010858987</author><pubDate>Fri, 16 Oct 2020 13:54:56 +0800</pubDate><description><![CDATA[ESP32基础系列

ESP32初体验之环境搭建
	ESP32外设学习之GPIO
	ESP32外设学习之UART
	ESP32开发之给模块连上网络
	ESP32的一键配网与Airkiss配网
	ESP32使用NVS存储数据
	ESP32开发--NVS存储配网信息+自动重连
	ESP32之Cmake的介绍与组件的添加
	ESP32之为配网模式添加按键和指示灯
本文目录

一.IDF的架构分析

二.认识介绍下CMake以及IDF的CMakelist的编写

三.通过例子说明怎么写基于项目树的CMakeLis.]]></description><category></category></item><item><title><![CDATA[ESP32开发--外设之UART的使用]]></title><link>https://blog.youkuaiyun.com/u010858987/article/details/108782569</link><guid>https://blog.youkuaiyun.com/u010858987/article/details/108782569</guid><author>u010858987</author><pubDate>Thu, 24 Sep 2020 20:30:53 +0800</pubDate><description><![CDATA[ESP32基础系列

ESP32初体验之环境搭建
	ESP32外设学习之GPIO
	ESP32外设学习之UART
	ESP32开发之给模块连上网络
	ESP32的一键配网与Airkiss配网
	ESP32使用NVS存储数据
	ESP32一键配网+自动重连
	ESP32之Cmake的介绍与组件的添加
	ESP32之为配网模式添加按键和指示灯
本文目录

一.ESP32串口介绍

二.官方关于串口控制的介绍

三.官方串口demo 

一.ESP32串口介绍

 串口应该是最常用的外设之一了，ESP32的串..]]></description><category></category></item><item><title><![CDATA[ESP32开发--NVS存储配网信息+自动重连]]></title><link>https://blog.youkuaiyun.com/u010858987/article/details/108762917</link><guid>https://blog.youkuaiyun.com/u010858987/article/details/108762917</guid><author>u010858987</author><pubDate>Wed, 23 Sep 2020 22:07:56 +0800</pubDate><description><![CDATA[ESP32基础系列

ESP32初体验之环境搭建
	ESP32外设学习之GPIO
	ESP32外设学习之UART
	ESP32开发之给模块连上网络
	ESP32的一键配网与Airkiss配网
	ESP32使用NVS存储数据
	ESP32一键配网+自动重连
	ESP32之Cmake的介绍与组件的添加
	ESP32之为配网模式添加按键和指示灯


本文目录

一.初步的实现方式

二.代码改动

写在前面：有了前面的基础，我们这一章想实现模块在smartconfig的基础上，实现掉电自动重连的功能。那么...]]></description><category></category></item><item><title><![CDATA[ESP32开发--给模块连上网络]]></title><link>https://blog.youkuaiyun.com/u010858987/article/details/108762433</link><guid>https://blog.youkuaiyun.com/u010858987/article/details/108762433</guid><author>u010858987</author><pubDate>Wed, 23 Sep 2020 21:49:13 +0800</pubDate><description><![CDATA[ESP32基础系列

ESP32初体验之环境搭建
	ESP32外设学习之GPIO
	ESP32外设学习之UART
	ESP32开发之给模块连上网络
	ESP32的一键配网与Airkiss配网
	ESP32使用NVS存储数据
	ESP32一键配网+自动重连
	ESP32之Cmake的介绍与组件的添加
	ESP32之为配网模式添加按键和指示灯
本文目录

    一. 官方模块联网的步骤

二.代码解析

一. 官方模块联网的步骤

 当我们想给模块联网时，模块可以看作是我们的手机，我们让它连上路由...]]></description><category></category></item><item><title><![CDATA[ESP32开发--使用NVS存储数据]]></title><link>https://blog.youkuaiyun.com/u010858987/article/details/108742706</link><guid>https://blog.youkuaiyun.com/u010858987/article/details/108742706</guid><author>u010858987</author><pubDate>Tue, 22 Sep 2020 22:35:08 +0800</pubDate><description><![CDATA[ESP32基础系列

ESP32初体验之环境搭建
	ESP32外设学习之GPIO
	ESP32外设学习之UART
	ESP32开发之给模块连上网络
	ESP32的一键配网与Airkiss配网
	ESP32使用NVS存储数据
	ESP32一键配网+自动重连
	ESP32之Cmake的介绍与组件的添加
	ESP32之为配网模式添加按键和指示灯
本章目录

一.NVS的介绍

二.ESP32的分区简单介绍

三.NVS存储例程解析

四.将例程修改为读写wifi名称和密码

一.NVS的介绍

 先来看看官网文.]]></description><category></category></item><item><title><![CDATA[ESP32开发--一键配网与Airkiss配网]]></title><link>https://blog.youkuaiyun.com/u010858987/article/details/108742296</link><guid>https://blog.youkuaiyun.com/u010858987/article/details/108742296</guid><author>u010858987</author><pubDate>Tue, 22 Sep 2020 22:09:43 +0800</pubDate><description><![CDATA[ESP32基础系列

ESP32初体验之环境搭建
	ESP32外设学习之GPIO
	ESP32外设学习之UART
	ESP32开发之给模块连上网络
	ESP32的一键配网与Airkiss配网
	ESP32使用NVS存储数据
	ESP32一键配网+自动重连
	ESP32之Cmake的介绍与组件的添加
	ESP32之为配网模式添加按键和指示灯
本文目录

一.Smartconfig与Airkiss简介

二.官方例程解析

引出问题：上一章给模块联网的例程中，模块连接的ssid和key是我们预先设定好的...]]></description><category></category></item><item><title><![CDATA[ESP32开发--外设之GPIO的使用]]></title><link>https://blog.youkuaiyun.com/u010858987/article/details/108721100</link><guid>https://blog.youkuaiyun.com/u010858987/article/details/108721100</guid><author>u010858987</author><pubDate>Mon, 21 Sep 2020 22:55:20 +0800</pubDate><description><![CDATA[ESP32基础系列

ESP32初体验之环境搭建
	ESP32外设学习之GPIO
	ESP32外设学习之UART
	ESP32开发之给模块连上网络
	ESP32的一键配网与Airkiss配网
	ESP32使用NVS存储数据
	ESP32一键配网+自动重连
	ESP32之Cmake的介绍与组件的添加
	ESP32之为配网模式添加按键和指示灯
本文目录

一.ESP32的GPIO简介

二.官方例程解析

一.ESP32的GPIO简介

 要知道如何控制芯片的GPIO，必须由软件和硬件结合，也就是我们需要...]]></description><category></category></item><item><title><![CDATA[ESP32开发--Windows下搭建开发环境]]></title><link>https://blog.youkuaiyun.com/u010858987/article/details/108719806</link><guid>https://blog.youkuaiyun.com/u010858987/article/details/108719806</guid><author>u010858987</author><pubDate>Mon, 21 Sep 2020 21:57:51 +0800</pubDate><description><![CDATA[目录

一. 认识下什么是ESP32的IDF

二. windows下安装IDF开发工具

三. 使用VS Code开发ESP32

一. 认识下什么是ESP32的IDF

 ESP-IDF(Espressif IoT Development Framework )是乐鑫官方推出的针对ESP32系列芯片的软件开发框架。

 简单的说就是官方整合的软件开发平台，可以帮助我们在ESP32上快速开发物联网应用。





二. windows下安装IDF开发工具

官方视频安装教程

 1.安装esp...]]></description><category></category></item><item><title><![CDATA[python中try-except-finally的运行机制]]></title><link>https://blog.youkuaiyun.com/u010858987/article/details/106048722</link><guid>https://blog.youkuaiyun.com/u010858987/article/details/106048722</guid><author>u010858987</author><pubDate>Mon, 11 May 2020 10:46:44 +0800</pubDate><description><![CDATA[首先来看看一般对try--except--finally的解释：

   如果执行出错，则后续代码不会继续执行，而是直接跳转至错误处理代码，即except语句块；
　  如果有finally语句块，执行完except后，则执行finally语句块，至此，执行完毕；
　  不管有没有报错，finally下的语句都一定会被执行。

那如果在try或者except中包含return或者死循环的情况呢，fianlly下的语句又是怎么执行的呢？

1、包含return的情况


def func():
 ...]]></description><category></category></item><item><title><![CDATA[VS code安装RT-Thread MicroPython总是提示安装失败的解决办法]]></title><link>https://blog.youkuaiyun.com/u010858987/article/details/106014311</link><guid>https://blog.youkuaiyun.com/u010858987/article/details/106014311</guid><author>u010858987</author><pubDate>Sat, 09 May 2020 10:59:15 +0800</pubDate><description><![CDATA[VS Code能用来开发python，当然也能开发mpy，这里推荐使用安装RT-Thread插件。具体使用方法见：https://marketplace.visualstudio.com/items?itemName=RT-Thread.rt-thread-micropython

这里把安装过程中的遇到的问题记录下：



问题：开始在搜索框中安装RT插件，一直显示安装不成功，提示需要手动从VSIX安装，下载.vsix文件后选择安装，还是提示失败。

解决方法：找到用户文件夹下的.vs code文件夹，删]]></description><category></category></item><item><title><![CDATA[手机连接wifi自动弹窗的原理及其实现方法]]></title><link>https://blog.youkuaiyun.com/u010858987/article/details/105700143</link><guid>https://blog.youkuaiyun.com/u010858987/article/details/105700143</guid><author>u010858987</author><pubDate>Wed, 06 May 2020 11:21:46 +0800</pubDate><description><![CDATA[一、手机连上wifi后会自动弹窗的原理

生活中，有很多需要认证的路由器，手机连接wifi热点后会自动弹出一个网页，让用户输入账号和密码，比如星巴克，肯地基，麦当劳，甚至是火车站和机场的候车室。其实这是一种叫强制门户认证的技术--Captive Network。就是说，单用户连上一个wifi后，可以不需要输入wifi的密码，但是需要进行认证才能够访问到互联网。这种路由器有很多开源的软件，比如wif...]]></description><category></category></item><item><title><![CDATA[python中关于字符串和字典型数据的互相转换问题]]></title><link>https://blog.youkuaiyun.com/u010858987/article/details/105838489</link><guid>https://blog.youkuaiyun.com/u010858987/article/details/105838489</guid><author>u010858987</author><pubDate>Wed, 29 Apr 2020 14:15:43 +0800</pubDate><description><![CDATA[今天在调试程序的时候，遇到这样一个问题：




message ="{	\
	'Senddata':[{\
		'id':'CID123',\
		'datapoints':[{'value':%d}]\
	}]\
}"

dic =dict(message % 0)

想当然的以为python中字符串和字典相互转化就用str()dict()就ok了，结果出现了上述错误。在网上查找了下，发现字符...]]></description><category></category></item><item><title><![CDATA[C语言的可变参数与字符的输入输出]]></title><link>https://blog.youkuaiyun.com/u010858987/article/details/104002076</link><guid>https://blog.youkuaiyun.com/u010858987/article/details/104002076</guid><author>u010858987</author><pubDate>Thu, 16 Jan 2020 17:00:24 +0800</pubDate><description><![CDATA[一.可变参数的处理

当我们在写程序的时候，如果传入的参数是确定的，那么依次处理就行；如果参数的长度不确定，该怎么处理呢？

在C中，当我们无法列出传递函数的所有实参的类型和数目时,可以用省略号指定参数表。如 void func (...)

另外C语言提供了一套标准的处理方法。

先来看看下面的例子。（该函数实现的是：将不定长度的字符输出）


#include "stdarg.h"

void...]]></description><category></category></item><item><title><![CDATA[关于ARM内核的一些理解]]></title><link>https://blog.youkuaiyun.com/u010858987/article/details/103593896</link><guid>https://blog.youkuaiyun.com/u010858987/article/details/103593896</guid><author>u010858987</author><pubDate>Wed, 18 Dec 2019 11:22:10 +0800</pubDate><description><![CDATA[ARM中的比较有代表性的M系列的内核和A系列的内核，那么这些不同的内核有什么区别先来看看下面一段非常通俗易懂的解释。来自网络https://blog.youkuaiyun.com/qlexcel/article/details/79299970

. 好比你盖房子，刚开始因为水平低流行盖平房，这就是一种架构(V5T)，然后这种平房架构你可以设计出一款独立卫生间的款式， 这叫ARM7内核。 然后其他人(芯片设计...]]></description><category></category></item><item><title><![CDATA[状态机的设计思想与单片机按键检测的实现方式]]></title><link>https://blog.youkuaiyun.com/u010858987/article/details/103562805</link><guid>https://blog.youkuaiyun.com/u010858987/article/details/103562805</guid><author>u010858987</author><pubDate>Tue, 17 Dec 2019 15:17:23 +0800</pubDate><description><![CDATA[一. 什么是状态机

我们以生活中的小区的停车系统为例：停车杆一般没车的是不动的（初态），有车来的时候需要抬杆（状态1），车通过需要放杆（状态2），如果在放杆的过程中突然有车，又需要抬杆（状态3）。。。就是说我们需要将不同的情况划分为不同的状态，每个状态对应相应的操作。

这只是状态机的一个很简单的举例。如果单个状态也是一个状态机的话，那么就会形成状态机套状态机，有点类似于C++里的父类和子类。其...]]></description><category></category></item><item><title><![CDATA[机智云OTA过程MCU端程序设计学习（一）]]></title><link>https://blog.youkuaiyun.com/u010858987/article/details/103510397</link><guid>https://blog.youkuaiyun.com/u010858987/article/details/103510397</guid><author>u010858987</author><pubDate>Fri, 13 Dec 2019 18:01:23 +0800</pubDate><description><![CDATA[1.写在前面：

  一般利用云端更新MCU端固件的机制是：云端通过一个能联网的模块（例如wifi，4G等）将固件信息传输到MCU端。整个过程也就是 云端（TCP）--&gt;模块（串口）--&gt;MCU。当然这其中还涉及到固件完整性的校验，传输过程的稳定性等等。通过接受双方会选择校验机制确保固件的一致性，例如CRC、MD5、Hash等。

2.关于机制云与STM32的固件更新的说明

 ...]]></description><category></category></item><item><title><![CDATA[机智云OTA过程MCU端程序设计学习（二）]]></title><link>https://blog.youkuaiyun.com/u010858987/article/details/103522178</link><guid>https://blog.youkuaiyun.com/u010858987/article/details/103522178</guid><author>u010858987</author><pubDate>Fri, 13 Dec 2019 18:01:11 +0800</pubDate><description><![CDATA[这篇我们主要是学习下app部分固件的设计逻辑。

1. 初始化过程中开辟一个环形缓冲区，设置串口为中断接收，重写串口中断回调函数，也就是每次接收一个字节的数据就往环形缓冲区里丢一个数据。


void gizwitsInit(void)
{    
    pRb.rbCapacity = RB_MAX_LEN;
    pRb.rbBuff = rbBuf;
    if(0 == rbCrea...]]></description><category></category></item><item><title><![CDATA[机智云OTA过程MCU端程序设计学习（三）]]></title><link>https://blog.youkuaiyun.com/u010858987/article/details/103528806</link><guid>https://blog.youkuaiyun.com/u010858987/article/details/103528806</guid><author>u010858987</author><pubDate>Fri, 13 Dec 2019 18:00:58 +0800</pubDate><description><![CDATA[这篇我们接着分析boot部分的程序设计。MCU重启后首先运行的就是boot程序，通过判断flag区有没有新固件更新的标志，如果有就更新固件；没有就跳转到app程序。

1. 官方关于boot程序流程的介绍





2. 我们先来看看main函数的逻辑


int main(void)
{
	SystemInit();
#ifdef DEBUG
    usart1_init();
#endif...]]></description><category></category></item><item><title><![CDATA[关于0.96OLED的显示过程详解（I2C通信方式）]]></title><link>https://blog.youkuaiyun.com/u010858987/article/details/103362144</link><guid>https://blog.youkuaiyun.com/u010858987/article/details/103362144</guid><author>u010858987</author><pubDate>Tue, 03 Dec 2019 15:01:23 +0800</pubDate><description><![CDATA[一. 关于OLED显示屏的介绍

通常我们所用的OLED屏有白色、蓝色、黄蓝双色等几种；屏的大小为0.96寸，像素点为128*64，所以我们也称之为0.96OLED屏或者12864屏。

内部驱动IC为SSD1306；通信方式一般为SPI或者I2C。如下图所示，配置哪种模式主要是根据BS0、BS1和BS2这三个管脚的电平逻辑来的。



二. I2C通信地址与通信过程

    

如手...]]></description><category></category></item></channel></rss>