物联网IoT开发

其他

【开源】彻底解决嵌入式HTTP客户端的痛点

说明开open源你还在自己写HTTP协议吗?你还在找好用的HTTP客户端吗?你还在用难以移植的HTTP客户端吗?你还在苦逼的移植安全加密库吗?你还在用难用的API接口吗?你还
2020年5月27日
其他

mqttclient源码的实现

*arg)主要是对mqtt_yield函数的返回值做处理,比如在disconnect的时候销毁这个线程。核心的处理函数mqtt_yield数据包的处理mqtt_packet_handlestatic
2020年3月5日
其他

【开源】省资源、高稳定的MQTT客户端

01前言我可能是最懒的半吊子程序员博主了,从过年到现在,将近2个月了,没发过一篇文章,但公众号每天都有新增的兄弟姐妹关注,非常感谢大家的信任,我呢,就做好自己的事情,该干嘛干嘛,文章嘛,偶尔抽空写一下发一发,相对于写文章,我更喜欢看书和写代码呢,我每天都有写代码的,这不,今天给大家带来一份商业级稳定性的代码——mqttclient。02关于mqttclient的诞生谈谈这份代码的诞生缘由吧!从上一年的5月份左右吧,我花了一个多星期去移植阿里的SDK,想要将它用起来,但是奈何一直没能用成功,归根结底我还是太菜了,10月份分析完了腾讯的SDK中的MQTT协议部分的代码,我就想自己写一个好用的代码,要非常简单API接口,还要有很好的稳定性,然后嘛,也是为开源做贡献,希望有缘人能简单快速用起来,都说程序员有些奇奇怪怪的理想,且不说改变世界吧,像我这种,我是很希望某些产品中能跑着我写的代码,即使我无缘知道甚至遇见它。。。兜兜转转,从11月份开始设计框架,LwIP的源码与阿里的SDK框架给了我很大的影响,所以整体的设计框架都采用分层设计,此外腾讯的SDK呢让我决定了使用异步处理的思想来设计整个代码,然后设计完整体框架之后就愉快地板砖了,没错,是愉快地!写代码其实是很好玩的事情,特别是当年的想法可以实现的时候,遇到不懂的时候有资料,有人讨论,在此特别感谢几位网上的好基友,在大半夜的还与我讨论,解答我的问题~非常nice。03介绍一下mqttclient这一个基于socket
2020年3月5日
其他

一种Cortex-M内核中的精确延时方法(ns级别)

本文介绍一种Cortex-M内核中的精确延时方法前言为什么要学习这种延时的方法?很多时候我们跑操作系统,就一般会占用一个硬件定时器——SysTick,而我们一般操作系统的时钟节拍一般是设置100-1000HZ,也就是1ms——10ms产生一次中断。很多裸机教程使用延时函数又是基于SysTick的,这样一来又难免产生冲突。很多人会说,不是还有定时器吗,定时器的计时是超级精确的。这点我不否认,但是假设,如果一个系统,总是进入定时器中断(10us一次/1us一次/0.5us一次),那整个系统就会经常被打断,线程的进行就没办法很好运行啊。此外还消耗一个硬件定时器资源,一个硬件定时器可能做其他事情呢!对应ST
2018年11月10日
其他

Button_drive与rtpkgs内测

前言前几天写了个按键驱动,参考了MulitButton的数据结构的用法,逻辑实现并不一样。在这里感谢所有的开源开发者,让我从中学到了很多,同时网络也是一个好平台,也希望所有的开发者能形成良性循环,从网络中学知识,回馈到网络中去。感谢MulitButton的作者0x1abin,感谢两位rtt的大佬:大法师、流光。Button_drive简介Button_drive是一个小巧的按键驱动,支持单击、双击、长按、连续触发等(后续可以在按键控制块中添加触发事件),理论上可无限量扩展Button,Button_drive采用按键触发事件回调方式处理业务逻辑,支持在RTOS中使用,我目前仅在RT-Thread上测试过。Button_drive使用效果单击与长按单击与长按双击双击连击连击使用方法创建按键句柄1Button_t
2018年10月16日
其他

基于Linux的kfifo移植到STM32(支持os的互斥访问)

len;}获取缓冲区信息这些就比较简单了,看看缓冲区可读可写的数据有多少/************************************************************
2018年9月29日
其他

STM32之串口DMA接收不定长数据

******************************************************************
2018年9月16日
其他

RTOS临界段知识详解

如果直接操作PRIMASK,而不保存PRIMASK的状态,这样子当临界段2结束后调用一次打开中断,那么连临界段1的后半部分就无效了。而RT-Thread的实现就能很好避免这种问题,也用代码来说明吧:
2018年9月9日
其他

分享一些我自己写的数据处理的源码

懂了上面的这个也是很简单的啦~~然后就是附带写的获取缓冲区信息的一些函数,可读缓冲区长度,可写缓冲区长度等:(后续可能会陆续更新)然后就是写个小例子:
2018年8月30日
其他

RT-Thread内核实现的思维导图

然后最近我跟着火哥的书来捣鼓RT-Thread,发现这个os也很不错,就打算跟着火哥的思路搞一搞内核的实现,很多人都说,没必要造轮子,rtos会用就行了,以前的我也是这么觉得的,现在发现自己错了。
2018年8月26日
其他

【书籍分享】C语言进阶必看​《C和指针》

本书的每一章后面都有“总结”“警告的总结”和“编程提示的总结”三个小节,这个特别好。“总结”是对本章的内容上的回顾,而后面两个是一些经验性的东西,相当宝贵。
2018年7月27日
其他

【书籍分享】程序员的数学系列丛书

今天就分享3本程序员的数学系列丛书,带书签扫描版!!!!【书籍介绍】如果数学不好,是否可以成为一名程序员呢?答案是肯定的。
2018年7月26日
其他

杰杰带你解读【机智云】环形缓冲区源码

前言大家晚上好,我是杰杰,上个星期,研究了一下机智云的源码,也不能说是研究吧,就是看了看,人家既然能拿来做商业用,还是有很厉害的地方的,如果还不知道什么叫环形缓冲区(环形队列)的同学,请看——STM32进阶之串口环形缓冲区实现好啦。多余的话不多说,看看他们的东西比我写的好在哪吧,原理都是一样的,但是效率会比我的搞,可能应用的地方也不一样,所以,先看看吧。ringbuffer.h先看看头文件:ringbuffer.h。主要是用宏实现了一个求最小值的函数。还有就是定义了一个环形缓冲区的结构体。#define
2018年7月16日
自由知乎 自由微博
其他

【连载】从单片机到操作系统⑥——FreeRTOS任务切换机制详解

另一种是主动进行切换任务,执行系统调用,比如普通任务可以使用taskYIELD()强制任务切换,中断服务程序中使用portYIELD_FROM_ISR()强制任务切换。1
2018年7月14日
其他

C语言字符串匹配与数据提取源码

大家晚上好,期末考试终于考完,我也有空写点东西了,回想起来也有两个星期没写文章了,现在分享个源码吧,我用在解析云端数据的,当然,我今天修改了一下的。
2018年6月29日
其他

【连载】从单片机到操作系统⑤——FreeRTOS列表&列表项的源码解读

2刚开始我们初始化完成的时候pxIndex->pxPrevious的指向为自己xListEnd,那么xNewListItem->pxPrevious的指向为xListEnd。如2紫色的箭头。
2018年6月9日
其他

STM32进阶之串口环形缓冲区实现

它的队列就是一个环,它避免了普通队列的缺点,就是有点难理解而已,其实它就是一个队列,一样有队列头,队列尾,一样是先进先出(FIFO)。我们采用顺时针的方式来对队列进行排序。
2018年6月3日
其他

【连载】从单片机到操作系统④——FreeRTOS任务详解

其实我自己写文章的时候也去跟着火哥的书看着底层的东西啦,但是本身自己也是不懂,不敢乱写。所以,这个《从单片机到操作系统》系列的文章,我会讲一点底层,更多的是应用层,主要是用的方面。
2018年5月26日
其他

【连载】从单片机到操作系统③——走进FreeRTOS

FreeRTOS是一个可裁剪、可剥夺型的多任务内核,而且没有任务数限制。FreeRTOS提供了实时操作系统所需的所有功能,包括资源管理、同步、任务通信等。
2018年5月11日
其他

【连载】STM8L051F3_03_CLK应用

使用ST-LINK把程序下载到开发板中,LED1闪烁,按下KEY后LED1闪烁变快。注:由于核心板没有接HSE,所以这里不介绍系统时钟源的切换,在官方手册中有详细的系统时钟源切换的介绍。
2018年5月9日
其他

【连载】从单片机到操作系统②

不知道你们是否看出这份代码是有很多不足的地方!(如果看不出,可以后台私聊我,给你们讲解一下)基于此,假如多人问的话,我下一篇文章会讲解一下下。
2018年5月9日
其他

【连载】STM8L051F3_04_PWR应用

mode(停机模式):该模式下,CPU和外设时钟是停止的,可通过触发一个外部中断或复位来唤醒,只有少数外设具备从该模式唤醒的能力,通过软件配置可使唤醒时间低至6us。
2018年5月8日
其他

【连载】STM8L051F3_02_EXTI应用

本小节介绍将GPIO配置为外部中断输入模式,并通过KEY(PC4)来触发一个外部中断信号,然后产生中断,然后控制LED1的状态。使用的例程:STM8L051F3_02_EXTI。实现步骤:
2018年5月7日
其他

【连载】STM8L051F3_01_GPIO应用

每个I/O端口都分配有一个输出数据寄存器、输入数据寄存器、数据方向寄存器、两个配置寄存器,一个I/O端口工作在输入或输出状态取决于数据方向寄存器。STM8L051F3的GPIO主要性能如下:
2018年5月6日
其他

【连载】STM8L051F3_0d_基础介绍

在开始学习外设使用之前,先了解一下STM8L051F3单片机系统中的基础部分:PWR(电源控制系统)、RST(复位系统)、CLK(时钟控制系统)。本节内容分为以下部分:
2018年5月5日
其他

STM8L051F3_0b_开发环境搭建

Evaluation的网页,并根据情况填写注册信息(这里选择8K代码限制的注册码),这里要注意的是Email要填一个常用的邮箱,用于后面接收IAR发来的注册码,最后点击Submit
2018年5月3日
其他

【连载】从单片机到操作系统①

延时函数,在延时的这段时间里单片机运行一些无意义的指令消耗时间。在此期间其他任务得不到运行,整个进程阻塞在延时函数这个地方。并且,如果按键一直按下没有释放的话,程序将停留在
2018年5月2日
其他

【干货】老外的GitHub整理的stm32f4驱动库

老外写的很是完善,英文的注释就连小编这种英语渣渣都能简单易懂,能直接用,不用怎么配置了,当然可以改装成为我们自己习惯的库。
2018年5月2日
其他

【连载】openmv之色块追踪算法的改善

thresholds是颜色的阈值。这个参数是一个列表,可以包含多个颜色。在返回的色块对象blob可以调用code方法,来判断是什么颜色的色块。
2018年4月30日
其他

杰杰的年终总结

从去年的2月开始,这个公众号已经陪伴我一年多之久了创号初衷就是记录自己的学习开发之旅的现在想想,其实还是记录下来了时间不等人,一眨眼就已经大三还仍记得当时的我初到大学时,参观实验室,那时候的光光还是那么帅气只不过在人群中我认识他他不认识我那一年2016我学习之旅就是大一下学期开始的也就是2016一直都是厚着脸皮去问光光学着简单的单片机而我却啥都不懂学着简单的C语言BUG总是找上我我一直问着光光简单的问题他一直说“那么简单的问题就是拉低他的智商”没办法我只能使出“美男计”这一年20172017才是我成长的重点很关键的一年2016年跟着光光学了不少东西在2017都用上了单片机C语言Altium
2018年1月28日
其他

新年大书包-资料大放送

谢谢maychang友情送楼!详见http://bbs.21ic.com/icview-180746-1-1.html〓◆
2018年1月5日