博文视频摘录

深入理解网络栈

https://blog.csdn.net/qq_24313621/article/details/131757225

直接用IP访问百度会有问题

https://mp.weixin.qq.com/s/EeMcK1pTeCXVShX7kjZ53w

网络调试助手直接连接阿里云(MQTT)

https://www.bilibili.com/read/cv12045128

FreeRTOS实现mqtt客户端

mqtt协议产品化实现-FreeRTOS实现mqtt客户端

[原创]基于FreeRTOS建立MQTT终端设备

FreeRTOS上移植MQTT

解决FreeRTOS移植MQTT时的DEBUG

Linux下应用层操作UART的四种方式(轮询/中断/信号/线程)

https://mp.weixin.qq.com/s/3OADFTBQb0Bt0CH42NEf1Q

C程序中10个与内存有关的常见错误

https://mp.weixin.qq.com/s/zMJZa2mkagzcrGvLBdaYKQ

【网络原理】TCP协议如何实现可靠传输(后包先置处理)

https://blog.csdn.net/weixin_64916311/article/details/131151053

python教程

python3——https://www.runoob.com/python3/python3-tutorial.html

python2——https://www.runoob.com/python/python-tutorial.html
在有C语言的基础上,快速学习python(C语言转战python)(python3)

send_data = [0xA4,0x03,0x08,0x23,0xD2] #需要发送的串口包

Pyhon:串口应用及数据解析过程
python+嵌入式——串口通信篇(收发解包)

python函数指针

Python中定义(声明)结构体

UML时序图绘制

https://blog.csdn.net/Edraw_Max/article/details/115396739

visio绘制时序图

python session和cookie使用

https://blog.csdn.net/weiyi47/article/details/131643458

MQTT 自动重连最佳实践

https://mp.weixin.qq.com/s/IcIYg3E8CLNi9AojvOFlnA

pthread_cancel函数:避免踩坑

Thread线程学习(3) 了解Linux线程中的pthread_cancel()函数

Linux线程(3)——pthread_cancel()取消一个线程

pthread_cancel函数:避免踩坑

linux线程发生段错误,怎么让整个进程退出,pthread_cancel,pthread_killall 段错误
thread变量是全局变量,应该是被自动初始化为零的。也就是说pthread_cancel(0),会引起段错误

使用pthread_cancel终止线程的填坑历程

由pthread_create引起的段错误

线程取消(pthread_cancel)
如果线程处于无限循环中,且循环体内没有执行至取消点的必然路径,则线程无法由外部其他线程的取消请求而终止。因此在这样的循环体的必经路径上应该加入pthread_testcancel()调用.
线程终止的清理工作,成对调用函数:
void pthread_cleanup_push(void (*routine) (void *), void *arg)
void pthread_cleanup_pop(int execute)

线程的取消与清理
如果没有取消点,手动设置一个:void pthread_testcancel(void);
当线程非正常终止,需要清理一些资源。
void pthread_cleanup_push(void (*routine) (void *), void *arg)
void pthread_cleanup_pop(int execute)
举了两个例子:
1、被pthread_cancel取消掉
2、执行pthread_exit

线程退出函数pthread_cancel() 采坑点
博文评论:那请问有没有什么方法能够直接杀死呢,而不是等待执行到系统调用
用pthread_setcanceltype这个函数设置取消方式

线程正常终止pthread_exit,pthread_join,pthread_kill,pthread_cancel,sigwait,sigaddset

理解C中函数调用及内存释放:
malloc 动态分配内存,函数调用结束不会被释放
Malloc内存泄露和内存越界问题的研究:
内存泄露的原因很多,有malloc了内存没free的,有open了文件没close的,有创建了socket和sem没释放的等待。
pthread_join()详解及实验:
阻塞状态,直到B线程结束后,A线程才会继续执行下去
它的内存空间也会被释放(如果被调用线程是非分离的),被释放的内存空间仅仅是系统空间,你必须手动清除程序分配的空间,比如 malloc() 分配的空间

不同接地方式的区分:功率地,逻辑地,数字地,模拟地等

https://blog.csdn.net/qq_32515081/article/details/117195708

C语言——动态内存函数(malloc、calloc、realloc、free)

https://blog.csdn.net/plj521/article/details/132264625

STM32上电启动过程分析

https://mp.weixin.qq.com/s/MtHPJUzMuTZr0NeWpE1rGQ

乐鑫环境搭建视频

命令行安装:下载乐鑫官网一键安装工具离线包(1G左右大小,包含所有编译所需组件,非常方便),安装前勾选所有选项(支持乐鑫所有的芯片类型及驱动),一直点击同意(期间会检查电脑环境,需要应用修复时点击一下应用修复),打开esp-idf CMD(或者PowerShell) 终端显示 idf.py build 表示安装成功,如下图。

注意:要和其他开发的小伙伴安装一样版本的,我们安装4.4.3版本,不然编译会提示和官方库数据类型不匹配、没有相应头文件等错误。

在这里插入图片描述

使用:第一次先在esp-idf cmd终端里编译一下,执行指令 code . 跳到vscode里打开代码(图形IDE,也就是说命令行安装也能调出图形IDE功能),选择串口号,自动跳出工程路径,点击一下,点击下面小火苗编译、烧录、监测。

idf.py set-target esp32s3		// 切换芯片环境,视频讲要到example路径下切换
idf.py menuconfig				// 图形化配置
idf.py build					// 编译,生成的bin文件在build文件夹
idf.py flash -p COM86			// 烧录
idf.py monitor -p COM86			// 监测(板子会重启一次)
idf.py flash monitor -p COM86	// 一键烧录、监测
ctrl + ]						// 退出

idf.py erase-flash build flash monitor -p COM87 // NVS保存的数据也擦除了


code .							//调出vscode图形IDE  根目录下输入,这样能打开所有代码  最好到具体的项目下打开,这样才能正常使用图形IDE
ctrl+shift+p  					//vscode调出命令行
	>ESP-IDF: new project 		//通过命令行创建项目
	>>ESP-IDF:add vscode configuration folder//生成.vscode,里面c_cpp_properties.json给出所有头文件路径(解决在其他路径下创建工程找不到头文件的问题)
menuconfig						//点击vscode底部小齿轮,设置参数最终保存到sdkconfig文件里,比如修改wifi账号密码
								//直接改sdkconfig文件不行,执行build会覆盖掉。可以把配置信息拷贝到下面的sdkconfig.default文件里,比如wifi账号密码,这样开机就默认使用这里的配置

https://www.bilibili.com/video/BV1Mv4y1U7x9/?spm_id_from=333.788&vd_source=cc0e43b449de7e8663ca1f89dd5fea7d

https://www.bilibili.com/video/BV1ah4y177mR/?spm_id_from=333.788.recommend_more_video.18&vd_source=cc0e43b449de7e8663ca1f89dd5fea7d

https://www.bilibili.com/video/BV1V24y1T75n/?spm_id_from=333.788&vd_source=cc0e43b449de7e8663ca1f89dd5fea7d

在这里插入图片描述

杨奉武物联网博客解读

  • 1、模组内部支持SSL和MQTT:直接调用AT指令AT+QSSLOPEN,加解密和应用层MQTT协议均由模组内部实现。
  • 2、模组内部不支持SSL和MQTT:需要MCU移植mbedtls、mqtt等库,先调用TCP的AT指令: AT+QIOPEN(创建了一个TCP连接) ,mqtt由单片机移植的mqtt库实现,相当于模组实现了传输层, AT+QIOPEN等同于Linux创建 socket 连接,加解密由mcu库mbedtls实现,MQTT由mcu移植的库实现。
  • 3、AWS那套库在linux系统里也是集成了coremqtt、corehttp、corejson等,底层调用的socket;在乐鑫模组freertos系统里也是集成了coremqtt、corehttp、corejson等,底层调用的lwip。
EC200(直接使用模组的AT+SSL指令,模组内部支持SSL,不用额外再移植Mbedtls  模组不支持AT指令版mqtt 所以mcu移植mqtt库)
https://www.cnblogs.com/yangfengwu/p/16317233.html

数据处理思想和程序架构
https://www.cnblogs.com/yangfengwu/category/1566194.html?page=2


SSL(不验证证书):
https://www.cnblogs.com/yangfengwu/p/13844529.html  移植mbedtls库  完善 时间戳 随机数  SSL初始化握手 轮询 发送和接收接口
https://www.cnblogs.com/yangfengwu/p/14451086.html  日志打印服务器协商加密密码
https://www.cnblogs.com/yangfengwu/p/14599391.html
BC260Y内部没有做上SSL(模组里没有集成密码库),所以使用单片机控制模组连接上TCP服务器,然后再利用Mbedtls包实现SSL.      其他的也都是
记住一句话:证书只是验证是不是真实的服务器,最终二者把数据经过对称加密然后再通过TCP传输.
详细介绍了调用逻辑
https://www.cnblogs.com/yangfengwu/p/14599788.html  
https://www.cnblogs.com/yangfengwu/p/16006777.html
https://www.cnblogs.com/yangfengwu/p/16098224.html  阿里云SSL

证书(双向认证,验证服务器证书)
https://www.cnblogs.com/yangfengwu/p/14615465.html

一型一密
https://www.cnblogs.com/yangfengwu/p/15873222.html
https://www.cnblogs.com/yangfengwu/p/14618186.html
https://www.cnblogs.com/yangfengwu/p/15873604.html
https://www.cnblogs.com/yangfengwu/p/16132390.html



基本控制
https://www.cnblogs.com/yangfengwu/p/14134939.html  整体架构
https://www.cnblogs.com/yangfengwu/p/14141928.html  SSL发送方式AT介绍

规则引擎(写点SQL)
https://www.cnblogs.com/yangfengwu/p/14651110.html

http/https下载
自建物联网
https://www.cnblogs.com/yangfengwu/p/15906937.html   http回复:Content-Range: bytes 0-1023/32500      接收到足够的数据:32500
https://www.cnblogs.com/yangfengwu/p/15911008.html   使用mbedtls(SSL调用逻辑介绍)   get请求里有range 0-2047
https://www.cnblogs.com/yangfengwu/p/16226835.html   使用mbedtls SSL握手
阿里云
https://www.cnblogs.com/yangfengwu/p/16275417.html
https://www.cnblogs.com/yangfengwu/p/16280396.html  移植了mbedtls, 让设备走SSL去注册设备
https://www.cnblogs.com/yangfengwu/p/17171524.html  BootLoader程序移植了mbedtls,可以使用https下载程序
https://www.cnblogs.com/yangfengwu/p/17171366.html   http下载  range  0-3071


ESA2GJK1DH1K基础篇: 移植MQTT底层包到自己的项目(V0.1)    你设置的心跳包多少时间,你就多少时间发送一次心跳包!  连接、订阅、发布、解析 发送C0 00 服务器回复D0 00
https://www.cnblogs.com/yangfengwu/p/11766867.html



单片机移植MQTT底层包   如果自己的网络模块并非透传模式,需要加入一部分AT指令
https://www.cnblogs.com/yangfengwu/p/14615489.html
MQTT报文(只要TCP连接了,然后知道了MQTT的协议,,,,直接就可以用TCP来当做MQTT来使用了)
https://www.cnblogs.com/yangfengwu/p/9124299.html
心跳超时 = 1.5 * 心跳时间
https://www.cnblogs.com/yangfengwu/p/11241776.html
Wi-Fi模块连接TCP后便是透传模式 客户端发送的心跳包数据是  C0 00  服务器返回的是 D0 00 
mqtt连接  订阅  发送  处理  如果一直有数据交互,则延迟心跳发送    
官方提供的MQTT库,所有的数据判断处理都是利用该函数
https://www.cnblogs.com/yangfengwu/p/11760590.html
发送连接mqtt协议
https://www.cnblogs.com/yangfengwu/p/11768916.html
LWIP
https://www.cnblogs.com/yangfengwu/p/12393478.html
所以我才知道,WIFI模块里面写的HTTP是把所有分段过来的数据全部接收到一个数组里面再调用回调....然而就会造成内存不足
用TCP实现HTTP的时候是接收一段打印出来一段,并不是把所有的数据全部放到一个数组里面,然后打印.....
https://www.cnblogs.com/yangfengwu/p/10360618.html
本程序发送心跳包,发送温湿度,返回控制数据这三个发送是单独的,有可能凑到一起发.
由于本身程序就是复杂性的程序,所以这节程序没有使用中断发送,没有使用环形队列发送,为了避免多条消息可能凑到一起发
设置成透传模式
https://www.cnblogs.com/yangfengwu/p/11768951.html

C语言的编译过程详解

https://zhuanlan.zhihu.com/p/558783902?utm_source=wechat_session&utm_medium=social&s_r=0

在这里插入图片描述

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

行稳方能走远

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值