自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

杰杰的博客

知易行难,以最好的状态迈向梦想!

  • 博客(20)
  • 资源 (7)
  • 收藏
  • 关注

原创 TCP协议扫盲篇

文章目录TCP协议简单了解TCP协议的特性面向连接正面确认数据分割数据缓冲全双工通信流量控制TCP协议简单了解TCP(Transmission Control Protocol,传输控制协议),它是最常用传输层协议,也是最稳定传输层协议,很多上层应用都是依赖于TCP进程传输数据。TCP 属于传输层协议,它为应用层提供了可靠的字节流服务。在网络协议栈中对它的描述要比对其它协议的描述复杂的多,这...

2019-08-28 19:27:26 492

原创 【TencentOS tiny学习】源码分析(6)——互斥锁

文章目录互斥锁优先级翻转优先级继承互斥锁的数据结构互斥锁控制块与互斥锁相关的宏定义创建互斥锁销毁互斥锁获取互斥锁释放互斥锁互斥锁互斥锁又称互斥信号量,是一种特殊的二值信号量,它和信号量不同的是,它具有互斥锁所有权、递归访问以及优先级继承等特性,在操作系统中常用于对临界资源的独占式处理。在任意时刻互斥锁的状态只有两种,开锁或闭锁,当互斥锁被任务持有时,该互斥锁处于闭锁状态,当该任务释放互斥锁时,...

2019-08-28 10:10:32 2613

原创 深入学习IP数据报发送过程

IP协议的功能回顾一下前面的文章所提及的知识点,总结一下IP协议的功能,得到以下结论:编址(目标端的IP地址),数据传输的过程当中就必须表明要发送目标端的IP地址寻址和路由(根据对方的IP地址,寻找最佳路径传输信息);数据报的分片和重组。传递服务是不可靠的(IP协议只是尽自己最大努力去传输数据包),它也是无连接的协议IP数据报发送IP协议是网络层的主要协议,在上层传输协议(如TC...

2019-08-26 20:15:55 3664

原创 【TencentOS tiny学习】源码分析(5)——信号量

文章目录信号量信号量的数据结构信号量控制块与信号量相关的宏定义信号量实现创建信号量销毁信号量获取信号量释放信号量总结信号量信号量(sem)在操作系统中是一种实现系统中任务与任务、任务与中断间同步或者临界资源互斥保护的机制。在多任务系统中,各任务之间常需要同步或互斥,信号量就可以为用户提供这方面的支持。抽象来说,信号量是一个非负整数,每当信号量被获取(pend)时,该整数会减一,当该整数的值为...

2019-08-24 20:06:02 2372

原创 【哨兵】编程思想——简化边界条件的处理

文章目录读懂本文需要了解的知识点cortex-m中常见的寄存器R14(LR)R15LiteOS的哨兵思想哨兵编程思想的引伸哨兵思想在数组中的应用方法1方法2哨兵思想在列表中的应用读懂本文需要了解的知识点C语言cortex-m中常见的寄存器R14(LR)R14,LR,链接寄存器;主要作用就是保存子程序的返回地址,以便在执行完子程序时恢复现场;如果子程序多于1级,则需要把前一级的R14压入堆...

2019-08-23 19:24:32 2590

原创 【IoT迷你赛】智慧医疗之输液监控方案构思

文章目录方案概述客户需求痛点解决方案方案架构小程序PC监控终端扩展功能方案概述输液监控管理系统是一套集信息化、智能化、数字化为一体的输液管理平台。系统在不改变原有输液方式的基础上,首创全新的输液管理模式,实现了输液的集中监控、量化管理和规范服务,减轻了医护人员的工作强度、解决患者输液过程中的焦虑和烦恼,是输液管理及临床护理模式上的一次变革,提升了现代化医院的信息化管理水平。客户需求痛点减...

2019-08-23 08:46:46 1516 1

原创 初学者到底该选择什么RTOS?

引言前天的推文中,有读者问我,作为初学者到底该选择什么RTOS来学习?答案作为一个深入了解过rtos内核实现的我,先给出个回答吧:选择越简单的操作系统内核越好rtos必须是国内的!其实我个人首推TencentOS tiny,但是目前仅在内测阶段,就算了吧。然后是rt-thread接下来就是LiteOS原因首先吧,还是那句话,越简单越好。第一点:初学者学习操作系统,那必须是先学...

2019-08-21 20:04:54 16634 4

原创 【TencentOS tiny学习】源码分析(4)——消息队列

文章目录消息队列系统消息池初始化消息队列创建消息队列销毁从消息队列获取消息向消息队列写入消息消息队列在前一篇文章中【TencentOS tiny学习】源码分析(3)——队列我们描述了TencentOS tiny的队列实现,同时也点出了TencentOS tiny的队列是依赖于消息队列的,那么我们今天来看看消息队列的实现。其实消息队列是TencentOS tiny的一个基础组件,作为队列的底...

2019-08-20 01:21:40 3088

原创 【TencentOS tiny学习】源码分析(3)——队列

文章目录队列基本概念队列的阻塞机制队列实现的数据结构队列控制块消息控制块任务控制块中的消息成员变量与消息相关的宏定义消息池队列创建销毁队列清空队列等待队列(消息)(消息)写入队列总结队列基本概念队列是一种常用于任务间通信的数据结构,队列可以在任务与任务间、中断和任务间传递消息,实现了任务接收来自其他任务或中断的不固定长度的消息,任务能够从队列里面读取消息,当队列中的消息是空时,读取消息的任务将...

2019-08-17 03:06:48 7421 2

原创 【TencentOS tiny学习】源码分析(2)——调度器

文章目录调度器的基本概念启动调度器Cortex-M内核关中断指令回归正题看看任务栈的初始化查找最高优先级任务任务切换的实现SysTickSysTick初始化SysTick中断调度器的基本概念TencentOS tiny中提供的任务调度器是基于优先级的全抢占式调度,在系统运行过程中,当有比当前任务优先级更高的任务就绪时,当前任务将立刻被切出,高优先级任务抢占处理器运行。TencentOS ti...

2019-08-16 02:25:58 4238 3

原创 TencentOS学习笔记(1)

文章目录IoT Development Board 开箱初识TencentOS tinyIoT Development Board 开箱很荣幸收到 Tencent汪礼超大神 的内测邀请,让我提前了解并且学习了一下 TencentOS tiny,这是一个很小巧的实时操作系统RTOS,很nice。进入正题,先看看IoT Development Board 开发板的开箱~ EVB_MX 是腾讯物联...

2019-08-15 10:15:11 3887 4

原创 【TencentOS tiny学习】源码分析(1)——task

任务的基本概念从系统的角度看,任务是竞争系统资源的最小运行单元。TencentOS是一个支持多任务的操作系统,任务可以使用或等待CPU、使用内存空间等系统资源,并独立于其它任务运行,理论上任何数量的任务都可以共享同一个优先级,这样子处于就绪态的多个相同优先级任务将会以时间片切换的方式共享处理器,(不过要注意的是:在TencentOS中,不能创建与空闲任务相同优先级的任务K_TASK_PRIO_I...

2019-08-15 09:39:21 27294 12

原创 解决Ubuntu 14.04 重启后DNS配置丢失(resolv.conf丢失)的问题

问题从网上得知 /etc/resolv.conf中的DNS配置是从/etc/resolvconf/resolv.conf.d/head中加载而来,所以每回改resolv.conf都会失效,在此文件里面已经有说明打开/etc/resolv.conf内容如下:jie@jie:~$ cat /etc/resolv.conf# Dynamic resolv.conf(5) file for gli...

2019-08-09 10:06:08 3756

原创 Linux下无法访解析域名的解决方法

/etc/resolv.conf这个配置文件中,一定有 nameserver关键字。作用是指定 DNS服务器的IP,不指定的话,无法通过域名来访问百度,只能敲百度服务器的IP地址来访问它。常用的 DNS服务器地址114 DNS,这应该是用户数量数一数二的公共DNS了114.114.114.114114.114.115.115阿里 AliDNS,来自阿里巴巴和马云旗下的公共DNS...

2019-08-08 09:55:00 21059 2

原创 ubuntu打开ssh,使用vscode连接到虚拟机

文章目录安装vim开启SSH服务安装vimsudo apt-get install vim 正在读取软件包列表… 完成正在分析软件包的依赖关系树正在读取状态信息… 完成现在没有可用的软件包 vim,但是它被其它的软件包引用了。这可能意味着这个缺失的软件包可能已被废弃,或者只能在其他发布源中找到E: 软件包 vim 没有可供安装的候选者解决方案:sudo apt-get up...

2019-08-07 15:44:25 6810

原创 腾讯云服务器部署emq

文章目录部署宝塔面板部署EMQ部署宝塔面板使用 SSH 连接工具,如宝塔远程桌面助手连接到您的 Linux 服务器后,挂载磁盘,根据系统执行相应命令开始安装(大约2分钟完成面板安装):Centos安装脚本yum install -y wget && wget -O install.sh http://download.bt.cn/install/install_6.0.sh...

2019-08-07 14:58:32 1769

原创 docker常用命令

文章目录1.运行docker 容器2.列出在运行的docker 容器3.停止在运行的docker 容器4.启动已经停止的docker容器 (必须是未删除的容器)5.删除容器6.查看容器内的标准输出提示:当命令无权限的时候可以使用sudo1.运行docker 容器docker run各个参数解析:-t:在新容器内指定一个伪终端或终端。-i:允许你对容器内的标准输入 (STDIN) 进行...

2019-08-06 14:59:46 263

原创 Linux下的git图形界面软件(6种)

Git 是目前流行的分布式版本控制系统。在Debian、Ubuntu 下可以使用下面命令安装:sudo apt-get install git下面是6种图形界面的Git 客户端1, Git-colaPython 编写,集成常用的pull,push,commit功能,可用来对比文件不同。安装:sudo apt-get install git-cola2,Gitg也可以浏览文件,对比...

2019-08-06 11:16:00 21740

原创 vs code的设置

字体使用等宽字体:Source Code Pro下载Source Code Pro字体cd /usr/share/fonts/truetype/sudo git clone https://github.com/adobe-fonts/source-code-pro.git然后在settings. json文件配置如下:{ "terminal.integrated.shell....

2019-08-03 18:50:17 1917

原创 LwIP中IP数据报的实现(1)——IP数据报分片

LwIP中IP数据报的实现IP数据报的数据结构IP数据报的数据结构为了描述IP数据报首部的信息,LwIP定义了一个ip_hdr的结构体作为描述IP数据报首部,同时还定义了很多获取IP数据报首部的宏定义与设置IP数据报首部的宏定义:/* The IPv4 header */struct ip_hdr { /* 版本 / 首部长度 */ PACK_STRUCT_FLD_8(u8_t _...

2019-08-01 08:54:06 1735

代码大全(第二版超高清文字版)——文字版

代码大全文字版(可复制),非扫描版,超高清,全书9M 《代码大全(第2版)》是著名IT畅销书作者、《IEEE Software》杂志前主编、具有20年编程与项目管理经验的Steve McConnell十余年前的经典著作的全新演绎:第2版做了全面的更新,增加了很多与时俱进的内容,包括对新语言、新的开发过程与方法论的讨论等等。这是一本百科全书式的软件构建手册,涵盖了软件构建活动的方方面面,尤其强调提高软件质量的种种实践方法。 作者特别注重源代码的可读性,详细讨论了类和函数命名、变量命名、数据类型和控制结构、代码布局等编程的最基本要素,也讨论了防御式编程、表驱动法、协同构建、开发者测试、性能优化等有效开发实践,这些都服务于软件的首要技术使命:管理复杂度。为了培养程序员编写高质量代码的习惯,书中展示了大量高质量代码示例(以及用作对比的低质量代码),提高软件质量是降低开发成本的重要途径。除此之外,《代码大全(第2版)》归纳总结来自专家经验、业界研究以及学术成果,列举了大量软件开发领域的真实案例与统计数据,提高本书的说服力。 《代码大全(第2版)》中所论述的技术不仅填补了初级与高级编程实践之间的空白,而且也为程序员们提供了一个有关软件开发技术的信息来源。《代码大全(第2版)》对经验丰富的程序员、技术带头人、自学的程序员及没有太多编程经验的学生都是大有裨益的。可以说,只要您具有一定的编程基础,想成为一名优秀的程序员,阅读《代码大全(第2版)》都不会让您失望。

2019-03-04

LwIP+freertos工程(LwIP2.1.2最新版本)

下面是一些接口文件代码: /* 如果timeout参数不为零,则返回值为 等待信号量所花费的毫秒数。如果 信号量未在指定时间内发出信号,返回值为 SYS_ARCH_TIMEOUT。如果线程不必等待信号量 该函数返回零。 */ u32_t sys_arch_sem_wait(sys_sem_t *sem, u32_t timeout) { u32_t wait_tick = 0; u32_t start_tick = 0 ; //看看信号量是否有效 if(*sem == SYS_SEM_NULL) return SYS_ARCH_TIMEOUT; //首先获取开始等待信号量的时钟节拍 start_tick = xTaskGetTickCount(); //timeout != 0,需要将ms换成系统的时钟节拍 if(timeout != 0) { //将ms转换成时钟节拍 wait_tick = timeout / portTICK_PERIOD_MS; if (wait_tick == 0) wait_tick = 1; } else wait_tick = portMAX_DELAY; //一直阻塞 //等待成功,计算等待的时间,否则就表示等待超时 if(xSemaphoreTake(*sem, wait_tick) == pdTRUE) return ((xTaskGetTickCount()-start_tick)*portTICK_RATE_MS); else return SYS_ARCH_TIMEOUT; } void sys_sem_signal(sys_sem_t *sem) { if(xSemaphoreGive( *sem ) != pdTRUE) printf("[sys_arch]:sem signal fail!\n"); } err_t sys_mutex_new(sys_mutex_t *mutex) { /* 创建 sem */ *mutex = xSemaphoreCreateMutex(); if(*mutex != SYS_MRTEX_NULL) return ERR_OK; else { printf("[sys_arch]:new mutex fail!\n"); return ERR_MEM; } }

2019-01-27

RT-Thread学习笔记,思维导图

个人根据野火书籍学习整理的笔记,从0到1一步步实现rtos,结合RT-Thread v 3.0.3的源码实现线程切换的思路,帮助用户理解rtt的处理。RT-Thread学习笔记,思维导图

2018-09-06

stm32串口缓冲区源码

环形队列的实现:在计算机中,也是没有环形的内存的,只不过是我们将顺序的内存处理过,让某一段内存形成环形,使他们首尾相连,简单来说,这其实就是一个数组,只不过有两个指针,一个指向列队头,一个指向列队尾。指向列队头的指针(Head)是缓冲区可读的数据,指向列队尾的指针(Tail)是缓冲区可写的数据,通过移动这两个指针(Head) &(Tail)即可对缓冲区的数据进行读写操作了,直到缓冲区已满(头尾相接),将数据处理完,可以释放掉数据,又可以进行存储新的数据了。 实现的原理:初始化的时候,列队头与列队尾都指向0,当有数据存储的时候,数据存储在‘0’的地址空间,列队尾指向下一个可以存储数据的地方‘1’,再有数据来的时候,存储数据到地址‘1’,然后队列尾指向下一个地址‘2’。当数据要进行处理的时候,肯定是先处理‘0’空间的数据,也就是列队头的数据,处理完了数据,‘0’地址空间的数据进行释放掉,列队头指向下一个可以处理数据的地址‘1’。从而实现整个环形缓冲区的数据读写。 1/** 2* @brief Write_RingBuff 3* @param u8 data 4* @return FLASE:环形缓冲区已满,写入失败;TRUE:写入成功 5* @author 杰杰 6* @date 2018 7* @version v1.0 8* @note 往环形缓冲区写入u8类型的数据 9*/ 10u8 Write_RingBuff(u8 data) 11{ 12 if(ringBuff.Lenght >= RINGBUFF_LEN) //判断缓冲区是否已满 13 { 14 return FLASE; 15 } 16 ringBuff.Ring_Buff[ringBuff.Tail]=data; 17// ringBuff.Tail++; 18 ringBuff.Tail = (ringBuff.Tail+1)%RINGBUFF_LEN;//防止越界非法访问 19 ringBuff.Lenght++; 20 return TRUE; 21} 具体见我博客:https://blog.csdn.net/jiejiemcu/article/details/80563422

2018-08-27

C#上位机源码串口调试助手

是杰杰之前做的 一个参赛小作品 其实在做这个恒温控制系统项目的时候,师弟就问我,什么是上位机。。。。。可能很多师弟师妹都没一个大概的概念。 现在,就来看下什么是上位机: 上位机是指可以直接发出操控命令的计算机,一般是PC/host computer/master computer/upper computer,屏幕上显示各种信号变化(液压,水位,温度等)。下位机是直接控制设备获取设备状况的计算机,一般是PLC/单片机single chip microcomputer/slave computer/lower computer之类的。上位机发出的命令首先给下位机,下位机再根据此命令解释成相应时序信号直接控制相应设备。下位机不时读取设备状态数据(一般为模拟量),转换成数字信号反馈给上位机。简言之如此,实际情况千差万别,但万变不离其宗:上下位机都需要编程,都有专门的开发系统。 在概念上,控制者和提供服务者是上位机,被控制者和被服务者是下位机,也可以理解为主机和从机的关系,但上位机和下位机是可以转换的。 工作原理 两机如何通讯,一般取决于下位机,TCP/IP一般是支持的,但是下位机一般具有更可靠的独有通讯协议。通常上位机和下位机通讯可以采用不同通讯协议,可以有RS232的串口通讯或者采用RS485串行通讯。采用封装好的程序开发工具就可以实现下位机和上位机的通讯,当然可以自己编写驱动类的接口协议控制上位机和下位机的通讯。 通常工控机,工作站,触摸屏作为上位机,通信控制PLC,单片机等作为下位机,从而控制相关设备元件和驱动装置。 既然差不多知道什么是上位机与下位机,那么,我们做到小喇叭的要求:就得写个上位机,我自己也是学了下C#,用来开发上位机还是可以的,开发环境用visual studio 2015,微软的软件真的是很简单,之前看到有人问为什么微软的软件是最多人用的,答:因为那是傻瓜式操作。。。。。我不得不认同。。。 回归正题:先看看我们的上位机有什么功能: 1)能够实现与下位机的正常通讯。这必须得有,不然算哪门子上位机啊。 2)能够控制我们的恒温系统,通过电脑控制恒温系统的温度。这种应用场景很正常,我在机房就能控制我某一个地方的温度,简单方便。 3)能够实时显示温度与波形。这种应用的场景也是非常常见,实时显示温度我们可以知道温度是否正常,而波形我们能快速看出恒温系统空间温度是否出现异常。 4)数据保存功能,自动将实时的温度保存下来,加入 日期与时间,方便以后排查问题的时候用于检测某段时间的温度是否正常,这也是很使用的功能。 说了那么多,看看我们的上位机。由于我以前用的别人的上位机都是色调比较单一的,而我,又是那种比较活泼开朗的人,觉得单一的灰色调比较死沉,我不喜欢,当然那是别人做的上位机,即使再不喜欢,要用还是要用,没办法, 现在我自己做的就不一样了,得给他做个五颜六色出来。亮瞎眼。。。。。 1.png 2.jpg 3.jpg 当我们的温度达到目标温度的时候,下位机就会控制自己的温度,以保持温度恒定,同时在上位机显示看到温度为一条曲线,由于我设置的温度为整数,没有小数,但是我们通过下位机可以看到实时的温度,精确在0.4范围左右。 4.jpg 当我们把上位机与下位机通讯协议切断,可以看到上位机接受不到数据(在软件右下角粉红色的窗口,没有显示接收到的数据),上位机的波形就会回到默认值(0°),就是上图的样子 5.jpg 6.jpg 当我们需要后期的检测与排除故障的时候,我们可以从我们保存的温度来做简单的排查,上位机自动保存的温度数据,精确到某天某时某分某秒,简单方便。也是一个很实用的功能当没什么故障的时候,我们只需要隔一段时间吧数据清一下就OK了。 附上作品视频:http://v.youku.com/v_show/id_XMzE0Nzg0ODUzMg==.html?spm=a2h0k.8191407.0.0&from=s1.8-1-1.2 本次上位机介绍到此结束 源码文件会可以关注关注获得。 或者CSDN下载连接: 本上位机仅为杰杰个人娱乐,不做商业用途。 如需转载请说明出处。 欢迎关注“创客飞梦空间” 干货不间断 在未来的日子里 创客飞梦空间与你们同在,放飞我们的梦想

2018-05-29

stm8l系列单片机教程与源码

STM8L系列单片机教程已经更新完毕 做成PDF版本 欢迎参考 本系列教程为原创,转载请说明出处 目录: 【连载】STM8L051F3_0b_开发环境搭建 【连载】STM8L051F3_0c_新建工程 【连载】STM8L051F3_0d_基础介绍 【连载】STM8L051F3_01_GPIO应用 【连载】STM8L051F3_02_EXTI应用 【连载】STM8L051F3_03_CLK应用 【连载】STM8L051F3_04_PWR应用 【连载】STM8L051F3_05_BEEP应用 【连载】STM8L051F3_06_TIM2应用 【连载】STM8L051F3_07_TIM4应用 【连载】STM8L051F3_08_USART应用 【连载】STM8L051F3_09_IIC应用 【连载】STM8L051F3_10_FLASH应用 【连载】STM8L051F3_11_ADC应用 【连载】STM8L051F3_12_DMA应用 【连载】STM8L051F3_13_SPI应用 【连载】STM8L051F3_14_RTC应用 【连载】STM8L051F3_15_IWDG应用 【连载】STM8L051F3_16_WWDG应用 源码

2018-05-29

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除