杰杰开源社区
做一个嵌入式开源的小人物,软件硬件,优质代码,算法等。
_杰杰_
一个超级可爱的杰杰ღ( ´・ᴗ・` )
展开
-
一个高性能、高稳定性的跨平台MQTT客户端——mqttclient简介与使用
【开源】一个高性能、高稳定性的跨平台MQTT客户端——mqttclient简介与使用原创 2020-06-14 11:12:04 · 8978 阅读 · 5 评论 -
我是如何彻底解决嵌入式HTTP客户端痛点的?
文章目录前言高性能、跨平台的HTTP客户端发布http-client整体架构优势文档&说明开发的历程一些测试的例子效果解析URL(超快的,性能杠杠的)GET请求数据POST数据到服务器自动重定向处理下载109M的文件,速度杠杠的项目开源地址:前言你还在自己写HTTP协议吗?你还在找好用的HTTP客户端吗?你还在用难用移植的HTTP客户端吗?你还在苦逼的移植安全加密库吗?你还在用难用的API接口吗?你还 …高性能、跨平台的HTTP客户端发布今天,它它它它它它来了,解决所有的痛点,一个原创 2020-05-27 20:46:28 · 3883 阅读 · 10 评论 -
RT-Thread之mqttclient软件包
关于mqttclient软件包这是一个基于socket API之上的跨平台MQTT客户端,拥有非常简洁的API接口,以极少的资源实现QOS2的服务质量,并且无缝衔接了mbedtls加密库。优势:基于标准BSD socket之上开发,只要是兼容BSD socket的系统均可使用。稳定:无论是掉线重连,丢包重发,都是严格遵循MQTT协议标准执行,除此之外对大数据量的测试无论是收是发,都是非常...原创 2020-02-27 22:09:23 · 4560 阅读 · 8 评论 -
纯C语言写的按键驱动,将按键逻辑与按键处理事件分离~
前言前几天写了个按键驱动,参考了MulitButton的数据结构的用法,逻辑实现并不一样。在这里感谢所有的开源开发者,让我从中学到了很多,同时网络也是一个好平台,也希望所有的开发者能形成良性循环,从网络中学知识,回馈到网络中去。感谢MulitButton的作者0x1abin,感谢两位rtt的大佬:大法师、流光。Button_drive简介Button_drive是一个小巧的按键驱动,支持单...原创 2019-10-17 20:12:15 · 1810 阅读 · 1 评论 -
LwIP的ARP协议实现(5)
ARP数据包发送我们知道一个数据包从底层传递进来的流程是怎么样的,如果是ARP数据包就会给ARP去处理,如果是IP数据报就使用ip4_input()函数传递到上层,这些处理在后面的章节讲解。那么如果上层协议想要发送数据,也肯定需要经过ARP协议将IP地址映射为MAC地址才能完成发送操作,IP数据报通过ip4_output()函数将上层数据包传递到ARP协议处理,关于IP协议是怎么样传递的我们暂且...原创 2019-03-29 11:33:22 · 2338 阅读 · 0 评论 -
LwIP的ARP协议实现(4)
ARP数据包处理以太网是有自己独立的寻址方式(MAC地址),而对于TCP/IP的上层协议(如TCP协议、IP协议),它们是以IP地址作为网络的标识,如果没有IP地址则无法进行收发数据。当数据通过网卡中接收回来的时候,LwIP内核就需要将数据进行分解,如果是IP数据报则递交给IP协议去处理,如果是ARP数据包则交由ARP协议去处理。真正让LwIP内核去处理接收到的数据包是ethernet_inp...原创 2019-03-29 11:32:35 · 1596 阅读 · 0 评论 -
LwIP的ARP协议实现(3)
发送ARP请求包发送ARP请求包的时候,需要填充已知的目标IP地址、源MAC地址、源IP地址等,并且需要该ARP包进行广播出去,所以以太网首部的目标MAC地址为FF-FF-FF-FF-FF-FF。LwIP先调用etharp_request()函数进行发送ARP请求包,在etharp_request()函数中会调用etharp_request_dst()函数进行发送,此时指定的目标MAC地址是e...原创 2019-03-29 11:31:18 · 1648 阅读 · 0 评论 -
LwIP中的ARP协议实现(2)
ARP缓存表的超时处理ARP表项的生存时间是5分钟,而ARP请求的等待时间是5秒钟,当这些时间到达后,就会更新ARP表项,如果在物理链路层无法连通则会删除表项。这就需要ARP层有一个超时处理函数对ARP进行管理,这些操作都是根据ARP表项的ctime字段进行的,它记录着对应表项的生存时间,而超时处理函数是etharp_tmr(),它是一个周期性的超时处理函数,每隔1秒就调用一次,当ctime的值...原创 2019-03-29 11:30:15 · 1419 阅读 · 0 评论 -
LwIP中的ARP协议实现(1)
前言从前面的文章,我们知道,ARP协议的核心是ARP缓存表,而ARP协议的实质就是对缓存表项(entry)的建立、更新、查询等操作。那么,LwIP中是是怎么实现ARP协议的呢?ARP缓存表的数据结构LwIP使用一个arp_table数组描述ARP缓存表,数组的内容是表项的内容,每个表项都必须记录一对IP地址与MAC地址的映射关系,此外还有一些基本的信息,如表项的状态、生命周期(生存时间...原创 2019-03-28 22:00:44 · 2198 阅读 · 0 评论 -
ARP协议原理
引言从前一篇文章中,我们知道计算机中会维护一个ARP缓存表,这个表记录着IP地址与MAC地址的映射关系,我们可以通过在电脑的控制台通过arp -a指令查看一下我们自己计算机的ARP缓存表:那么什么是ARP协议呢?初始ARPARP协议是地址解析协议(Address Resolution Protocol)是通过解析IP地址得到MAC地址的,是一个在网络协议包中极其重要的网络传输协议,它与网...原创 2019-03-12 20:03:05 · 47657 阅读 · 9 评论 -
网络底层知识
前言从前一篇文章,我们也知道大概的网络相关知识,网络这个系列文章就从底层往顶层讲解,本篇文章就来接触一下网络底层的相关知识。概述网络中的数据递交当用户发送数据时,将数据向下交给传输层,这是处于应用层的操作,应用层可以通过调用传输层的接口来编写特定的应用程序,并且TCP/IP协议栈一般也会包含一些简单的应用协议如 Telnet 远程登录、FTP文件传输、SMTP 邮件传输协议等,这些协议有自己...原创 2019-03-05 21:15:06 · 2875 阅读 · 0 评论 -
TCP/IP协议栈扫盲班
前言本文的东西是基础理论知识,大多数来源于网络,因此不必记住,前面的操作系统的文章我不想更新了,现在想写一写网络相关的文章,本篇文章是第一篇,仅传递网络相关知识的概念,不必牢记~什么是TCP/IP协议简单来说TCP/IP协议是网络中所有相关协议簇的简称,它是众多网络协议的集合,这一类协议簇是有非常多的协议,如常见的:ARP/TCP/UDP/IP/ICMP/IGMP/HTTP/DNS/DHCP...原创 2019-02-28 13:37:04 · 1785 阅读 · 0 评论 -
STM32之串口DMA接收不定长数据
STM32之串口DMA接收不定长数据本文为杰杰原创,如需转载请说明出处引言在使用stm32或者其他单片机的时候,会经常使用到串口通讯,那么如何有效地接收数据呢?假如这段数据是不定长的有如何高效接收呢? 同学A:数据来了就会进入串口中断,在中断中读取数据就行了! 中断就是打断程序正常运行,怎么能保证高效呢?经常把主程序打断,主程序还要不要运行了? 同学B:串口...原创 2018-09-17 15:49:25 · 47630 阅读 · 25 评论 -
基于Linux的kfifo移植到STM32(支持os的互斥访问)
基于Linux的kfifo移植到STM32(支持os的互斥访问)关于kfifokfifo是内核里面的一个First In First Out数据结构,它采用环形循环队列的数据结构来实现;它提供一个无边界的字节流服务,最重要的一点是,它使用并行无锁编程技术,即当它用于只有一个入队线程和一个出队线程的场情时,两个线程可以并发操作,而不需要任何加锁行为,就可以保证kfifo的线程安全。具体什么是...原创 2018-09-29 15:40:07 · 3533 阅读 · 6 评论 -
RTOS的临界段知识详解
大家周末好,刚回学校,乱七八糟的事情一堆,抽个时间更新下~写在前面的话本章主要讲解RTOS的临界段什么是临界段 代码的临界段也称为临界区,指处理时不可分割的代码区域,一旦这部分代码开始执行,则不允许任何中断打断。为确保临界段代码的执行不被中断,在进入临界段之前须关中断,而临界段代码执行完毕后,要立即打开中断。临界段的作用 其实在RTOS中,使用最多的临界段是OS...原创 2018-09-09 00:34:21 · 7578 阅读 · 0 评论 -
嵌入式重定向 printf
学习stm32,打交道最多的莫过于串口通讯了,但是官方的串口发送库太恶心了,完全不好用甚是还念C语言的printf,想输出什么就有什么,现在,一步步来做个重定向,让你的stm32可以跟C语言一样能想看什么就看什么:首先:添加printf的头文件 : #include <stdio.h> //当时学C语言最熟悉的stdio.h其次:改写int fputc(int ch, FILE...原创 2018-06-04 11:51:20 · 3128 阅读 · 2 评论 -
数据处理相关源码
序 在我们的系统中,难免用到一些数据处理的东西,但是效率是个问题,在网上找到的资源也是乱七八糟的,所以现在的我自己处理一套验证过的demo,在我的github中,还会慢慢更新,现在我把写的一些数据处理相关的东西开源出来,写得不好,请多见谅~~大神们请绕道!!! 我的demo是基于stm32f103开发平台的,算是利用闲时时间整理的吧,把这些东西再整理一遍,以后使用时会很...原创 2018-08-30 21:05:49 · 969 阅读 · 2 评论 -
【连载】从单片机到操作系统⑦——深入了解FreeRTOS的延时机制
没研究过操作系统的源码都不算学过操作系统 FreeRTOS 时间管理时间管理包括两个方面:系统节拍以及任务延时管理。系统节拍:在前面的文章也讲得很多,想要系统正常运行,那么时钟节拍是必不可少的,FreeRTOS的时钟节拍通常由SysTick提供,它周期性的产生定时中断,所谓的时钟节拍管理的核心就是这个定时中断的服务程序。FreeRTOS的时钟节拍isr中核心的工作就是调用vTa...原创 2018-08-08 21:23:18 · 5848 阅读 · 0 评论 -
【连载】从单片机到操作系统③——走进FreeRTOS
从前面的文章,我们知道,(单核)单片机某一时刻只能干一件事,会造成单片机资源的浪费,而且还有可能响应不够及时,所以,在比较庞大的程序或者是要求实时性比较高的情况下,我们可以移植操作系统。因为这种情况下操作系统比裸机方便很多,效率也高。下面,杰杰将带你们走进FreeRTOS的世界随便看看。首先说明一下:① 鉴于作者水平有限,学习并不深入,只是学习了皮毛而已,出错在所难免,欢迎指正。② 以下文...原创 2018-05-14 12:32:38 · 15762 阅读 · 4 评论 -
【连载】从单片机到操作系统④——FreeRTOS创建任务&开启调度详解
创客的兄弟姐妹们大家好,我是杰杰。又到了更新的时候了。开始今天的内容之前,先补充一下上篇文章【连载】从单片机到操作系统③——走进FreeRTOS的一点点遗漏的知识点。 1BaseType_t xTaskCreate( TaskFunction_t pvTaskCode, 2 const char * const pcName, ...原创 2018-05-26 18:16:11 · 4377 阅读 · 0 评论 -
【连载】从单片机到操作系统⑤——FreeRTOS列表&列表项的源码解读
FreeRTOS列表&列表项的源码解读 第一次看列表与列表项的时候,感觉很像是链表,虽然我自己的链表也不太会,但是就是感觉很像。 在FreeRTOS中,列表与列表项使用得非常多,是FreeRTOS的一个数据结构,学习过数据结构的同学都知道,数据结构能使我们处理数据更加方便快速,能快速找到数据,在FreeRTOS中,这种列表与列表项更是必不可少的,能让我们的系统跑起来更...原创 2018-06-09 23:46:22 · 3077 阅读 · 0 评论 -
【连载】从单片机到操作系统⑥——FreeRTOS任务切换机制详解
大家晚上好,我是杰杰,最近挺忙的,好久没有更新了,今天周末就吐血更新一下吧!前言 FreeRTOS是一个是实时内核,任务是程序执行的最小单位,也是调度器处理的基本单位,移植了FreeRTOS,则避免不了对任务的管理,在多个任务运行的时候,任务切换显得尤为重要。而任务切换的效率会决定了系统的稳定性与效率。 FreeRTOS的任务切换是干嘛的呢,rtos的实际是永远运行的是具有最高优先级...原创 2018-07-14 01:02:01 · 8277 阅读 · 7 评论 -
【重写】简析stm32启动过程
说明:本文是杰杰以前保存下来的,出处已经不知道在哪了,应该是各大论坛中,当然转这种文章,到处都有。今天我就把它重写一遍。基于原作者的内容添加一些内容(源码)讲解。杰杰水平有限,出错在所难免,还望各位大神指点一二。startup_stm32f10x_cl.s互联型的STM32F105xx,STM32F107xxstartup_stm32f10x_hd.s 大容量的STM32F101xx,STM32F...转载 2018-06-01 20:48:09 · 9117 阅读 · 3 评论 -
STM32进阶之串口环形缓冲区实现
如需转载请说明出处:STM32进阶之串口环形缓冲区实现队列的概念在此之前,我们来回顾一下队列的基本概念:队列 (Queue):是一种先进先出(First In First Out ,简称 FIFO)的线性表,只允许在一端插入(入队),在另一端进行删除(出队)。队列的特点类似售票排队窗口,先到的人看到能先买到票,然后先走,后来的人只能后买到票队列的常见两种形式...原创 2018-06-04 10:03:13 · 40763 阅读 · 37 评论 -
腾讯云主机部署hexo博客
缘由coding只能部署不超过134217728 字节大小的博客:Depot archive exceeded size limit 134217728 bytesgitee无法自定义域名github国内访问略慢因此我想将博客部署到我自己的腾讯云主机中。开始部署我的主机配置信息如下:操作系统 CentOS 7.6 64位CPU 1 核内存 2 GB公网带宽 1 Mbps...原创 2019-10-04 17:53:50 · 1592 阅读 · 1 评论 -
TencentOS tiny源码分析(8)—— 软件定时器
文章目录软件定时器的基本概念软件定时器的基本概念TencentOS tiny 的软件定时器是由操作系统提供的一类系统接口,它构建在硬件定时器基础之上,使系统能够提供不受硬件定时器资源限制的定时器服务,它实现的功能与硬件定时器也是类似的。硬件定时器是芯片本身提供的定时功能。一般是由外部晶振提供给芯片输入时钟,芯片向软件模块提供一组配置寄存器,接受控制输入,到达设定时间值后芯片中断控制器产生时...原创 2019-10-02 18:21:44 · 2888 阅读 · 0 评论 -
TCP状态转移
TCP状态转移在前一篇文章已经介绍了TCP协议的三次握手和四次挥手。总的来说,TCP通信过程包括三个步骤:建立TCP连接(三次握手)、数据传输、终止TCP连接(四次挥手)。但是在这个通信过程中,有非常复杂的状态问题,下面就来了解一下进行TCP协议通信时候的状态转移。TCP协议根据连接时接收到报文的不同类型,采取相应动作也不同,还要处理各个状态的关系,如当收到握手报文时候、超时的时候、用户主动关...原创 2019-09-11 23:01:08 · 562 阅读 · 0 评论 -
【面试必考】TCP协议“三次握手”与“四次挥手”
引言从上一篇文章我们就知道TCP协议是提供面向连接的服务,无论哪一方向另一方发送数据之前,都必须先在双方之间建立连接,俗称“握手”,数据传送完成后要终止连接,俗称“挥手”。因此TCP是一种可靠的传输服务,但是正因为这样,也不可避免的增加了许多额外的开销,比如确认,流量控制等,那么我们今天就来说说它是怎么建立连接与终止连接的!“三次握手”首先建立连接的过程是由客户端发起,而服务器无时无刻都在等...原创 2019-09-06 13:35:04 · 1786 阅读 · 0 评论 -
【TencentOS tiny学习】源码分析(7)——事件
文章目录引言事件事件数据结构事件控制块与事件相关的宏定义创建事件销毁事件引言大家在裸机编程中很可能经常用到flag这种变量,用来标志一下某个事件的发生,然后在循环中判断这些标志是否发生,如果是等待多个事件的话,还可能会if((xxx_flag)&&(xxx_flag))这样子做判断。当然,如果聪明一点的同学就会拿flag的某些位做标志,比如这个变量的第一位表示A事件,第二位表示...原创 2019-09-04 08:27:08 · 4358 阅读 · 3 评论