自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(51)
  • 收藏
  • 关注

原创 一口气带你入门 IPv6 协议

IPv6是下一代互联网协议,核心内容是解决IPv4地址枯竭问题。它采用128位地址格式,地址空间极大扩展,支持海量设备直接互联。IPv6简化了报文头结构,提升路由效率;支持地址自动配置,即插即用;内置IPsec协议,增强安全性;并更好地支持移动性和服务质量(QoS),采用单播,组播,任播的方式为物联网和未来发展奠定基础。

2025-09-08 17:19:10 1068

原创 一口气带你入门 IPv4 协议

本文介绍了IPv4协议的基础知识、报文格式、分片重组机制及其局限性。IPv4使用32位地址标识设备,通过网络号和主机号实现定位。其报文格式包含版本、首部长度、总长度、标识、标志等字段。当数据包超过MTU限制时,IPv4采用分片机制,由目的主机负责重组。IPv4的主要局限性包括地址空间不足、路由表过大、配置复杂和安全性不足,这些问题促使了IPv6的发展。文章通过示例和图表详细说明了IP地址结构、特殊地址类型、子网划分以及分片重组过程。

2025-09-08 17:09:27 887

原创 一口气带你入门 DHCP 协议

DHCP(动态主机配置协议)是一种基于UDP的应用层协议,用于自动分配局域网内设备的IP地址、子网掩码等网络参数。其工作流程分为四步交互(DISCOVER、OFFER、REQUEST、ACK)和两步交互(重用IP地址时)。协议支持中继功能,通过Giaddr字段实现跨子网通信。DHCP服务器会进行IP地址冲突检测,并设置租期管理机制(50%和87.5%时续约)。协议头包含事务ID、客户端MAC地址、分配IP地址等关键字段,通过Options字段区分报文类型。该协议有效解决了手动配置IP地址可能导致的错误和冲突

2025-08-31 17:45:14 816

原创 一口气带你入门 HTTP 协议

本文介绍了HTTP协议的基础知识,包括其特点(通信速度快、灵活、无连接、无状态等)和URL的组成部分。重点解析了HTTP请求方法(GET、POST、PUT、DELETE等)及其请求头结构,以及HTTP响应头的组成。文章还区分了URI、URL和URN的概念,并通过实际抓包示例展示了GET和POST请求的报文格式。HTTP作为一种应用层协议,在Web通信中扮演着核心角色,文章内容为理解HTTP工作原理提供了系统性的介绍。

2025-08-31 17:41:20 965 2

原创 看懂 Makefile 第四课:变量

本文介绍了Makefile中变量的使用方法。主要内容包括:1)变量赋值方式,如=、?=、+=等,以及立即展开的:=赋值;2)变量高级用法,如变量替换、嵌套变量引用、override保护变量不被覆盖;3)环境变量处理规则;4)目标变量(局部变量)的使用;5)MAKEFILES变量的作用和潜在问题。文章通过示例代码演示了各种变量操作的实际效果,并给出了注意事项,如变量展开时机、空格处理和变量覆盖等问题。

2025-08-13 18:07:04 1162 1

原创 看懂 Makefile 第三课:书写和命令

本文介绍了Makefile的命令书写规范与执行机制。主要内容包括:命令格式要求以Tab键开头,支持注释和隐藏命令(@前缀);命令执行注意事项,如连续命令需用分号分隔;嵌套执行Makefile的方法和变量传递规则;特殊变量SHELL和MAKEFLAGS的处理;目录追踪选项的使用;以及通过define定义命令包的技术要点。这些规则涵盖了Makefile命令编写与执行的关键细节,对构建自动化流程具有重要指导意义。

2025-08-13 18:04:07 272

原创 看懂 Makefile 第二课:运行机制

摘要:Makefile 是一种基于文件时间戳的构建工具,通过比较依赖文件和目标文件的时间戳来决定是否需要重新构建。其核心运行流程包括读取Makefile、初始化变量、建立依赖关系并执行构建。Makefile支持通配符匹配、伪目标(.PHONY)、多目标处理、静态模式规则等特性,并可通过gcc的-M/-MM选项自动生成依赖关系,提高项目构建的自动化程度。文中还介绍了文件搜索路径设置(VPATH/vpath)和依赖关系自动生成的实现方法,这些机制共同构成了Makefile强大的项目构建能力。

2025-08-12 19:47:56 464

原创 看懂 Makefile 第一课:基础

本文摘要:Makefile是Linux下自动化编译工具,遵循POSIX标准,可替代复杂的命令行操作。文章首先介绍了GCC编译的四个阶段:预处理、编译、汇编和链接,并对比了静态库(.a)和动态库(.so)的特点及使用方法。Makefile包含目标(target)、依赖(prerequisites)和动作(command)三个基本元素,支持文件包含、变量赋值等语法,可通过伪目标(.PHONY)定义纯操作命令。Makefile能显著提高开发效率,是Linux工程管理的重要工具。

2025-08-12 19:43:20 1070

原创 数据结构基础(一)

​ 程序 = 数据结构 + 算法数据结构:数据结构就是数据的 “收纳盒”,比如书包的不同夹层帮你快速找到课本、文具。数据结构就是用特定的整理方式,让计算机能快速的存取需要的数据。合理的数据结构能够有效提升数据存取的效率,为算法的高效执行提供基础。算法:算法就是解决问题的"操作手册",就像菜谱分步教你怎么做菜一样,它用明确的步骤告诉计算机该怎么处理数据、解决问题。所以,算法就是解决问题的具体方法、电脑运算的具体过程。期末速成,小白学习

2025-03-07 22:39:51 975

原创 一口气入门前端——HTML5入门

图片路径分为三种:绝对路径、相对路径和网络路径。但也有一些特例,button、img、input 等,他们是内联元素,他们可以设置 width , height 属性。一般块级元素可以包含行内元素和其他块元素 一般内联元素可以包含内联元素,但包含不了块级元素。表单有三个基本组成部分:表单标签(即 form 的 name)、表单域(输入框)、表单按钮(提交按钮)div、form、h1~h6、hr、p、table、ul a、b、em、i、span、strong等。src:路径,图片的路径。

2025-02-08 10:16:35 1680 1

原创 调试工具之GDB的基本使用

(2)然后我们用 gdb 来打开这个目标文件,其实就是让带有调试信息的二进制文件在我们 gdb 的这个 “盒子” 里面进行运行。(5)这里假设我们程序异常退出了,但我们不清楚导致退出的错误是发生在 measure 测温函数内还是函数之前,我们就可以在进入这个函数之前,设置一个断点,然后运行它。运行到某一个断点后,要直接运行到下一个断点,使用continue 或者 c 就可以了。我们可以看到,程序成功运行到了这个函数前,没有抛出异常,那么我们就可以确定,异常是在 measure 测温函数内的了。

2024-08-04 20:05:20 604

原创 初步入门C ++之继承的概念

从执行结果来看,我们可以看到,因为 rect_body 类是继承 rect 类得来的,所以我们创建一个 rect_body 类的时候,会先建立 rect 类,然后往上面加入 rect_body 类的数据和方法,这,就是继承。

2024-07-30 18:56:58 343

原创 初步入门C ++之引用的概念

引用,简单来说就是一个变量的别名。比如有个人叫 李铁牛,我们给他起个小名叫 小李 ,这两个名字指的都是同一个变量。

2024-07-30 17:50:02 231

原创 初步入门C ++之类的概念

编译器首先会检查语法规则,然后将 C 语言翻译为等效的,优化后的汇编语言,我们语言的可移植性也从这里体现,对于不同的平台,我们只需要选择不同的编译器即可,这样,同一个 C++ 语言源代码,就能生成在不同平台上的汇编语言文件。链接会将动态库或者静态库与本文件进行链接,我们在 #include 的时候,头文件中只有函数的声明信息,那么函数体在哪里找呢,没错,就是在动态库和静态库里,而将这些库,声明联合到一起的过程,便称之为链接,链接是通过函数的签名来找到对应的函数体的,同时。类的概念。

2024-07-29 22:28:43 1038

原创 FreeRTOS的内存管理

​ 在之前的学习中,我们经常看到静态分配方式和动态分配方式。我们画一下内存图来理解他们的不同。其中,bss区域也叫做ZI-data(bss)区。​ 首先我们复习一下C语言的内存图。

2024-07-28 16:05:00 877

原创 一口气带你入门 TCP 协议

​ TCP 是一种面向连接的,可靠的,基于字节流传输层通信协议,TCP 能确保接收端接收的网络包。​ 由于 TCP 是面向连接,能保证数据是一定被交付的,因此常用于:FTP 文件传输HTTP / HTTPS连接。

2024-07-28 15:59:21 1279

原创 stm32之ADC采样

​ ADC采样是模拟量转化为数字量,DAC转换是数字量转化为模拟量。使能ADC采样时,其有单信号采样(Single-ended)和差分信号采样(Differential),要根据原理图上的信号线数量来具体决定。ADC有很多通道1,有的通道支持差分信号采样,有的通道并不支持。ps:number of conversion:一定要根据ADC采样的个数来调整,他会决定我们分配几个RANK来存储数据。一般的ADC采样器是12位的,会把电压分成4096份,常见的数据对齐方式有左对齐和右对齐两种方法。

2024-07-27 16:28:42 4583

原创 git push问题:remote: [session-2c43b6b8] Access denied解决

问题描述:出现这种问题可能是以下几个原因导致的,我们逐个解决,不过如果在刚刚创建一个仓库的时候出现了这种问题,那么及其有可能是Git缓存的凭据过期或损坏导致的。如果你是在新建仓库时出现这个问题,及其有可能是Git缓存的凭据过期或损坏造成的。一般来说都是问题1和问题5造成的。

2024-07-17 14:42:59 1548

原创 stm32定时器与pwm波

​ 定时器除了定时以外,还能够产生PWM波。首先我们先来介绍一下PWM波。即脉冲宽度调制pwm波可以简单理解为可以调试占空比的方波。占空比(即脉宽时间占整个周期的比例),整个周期就是一个脉冲信号的时间,而脉宽时间就是高电平的时间。PWM波可以用来模拟不同的输出电压。其原理就是通过不同的占空比比例实现D/A转化。ARR:自动装载值。CRR:决定了占空比,PWM波从CRR处电平反转。

2024-07-05 11:17:34 1616

原创 stm32中断

轮询:即每过一段时间查看一次事件(一直探测),但是仍然可能错过,若事件发生时,轮询未能轮到该事件的函数,那么就错过了。同时效率低下。中断(NVIC):即cpu探测到发生某事后执行某个动作,相比于轮询,他不会一直占用CPU资源,并且避免了像轮询那样错过的情况发生。中断发生后执行什么动作由中断向量表来决定。

2024-07-05 11:12:50 630

原创 FreeRTOS的定时器

FreeRTOS定时器的创建,使用。

2024-07-04 11:16:26 2103

原创 FreeRTOS的任务间通信

FreeRTOS,队列,事件组,互斥量,信号量,优先级翻转,优先级继承(priority inheritance)

2024-07-04 11:12:55 2772

原创 FreeRTOS的任务操作

​ 任务的创建不代表任务的执行,任务创建后还需要使用调度器来让任务执行。即vTaskStartScheduler();同时创建任务函数,不等于任务处理函数。他只是创建了任务,但是没有规定任务要做什么。ps:任务控制块地址和任务句柄并不相同,我们操控任务是通过任务句柄操作的,任务句柄最终指向任务控制块。。这也就是为什么我们说,任务这个概念更类似与线程,而不是进程的原因。

2024-07-02 09:01:57 1079

原创 FreeRTOS的任务理论

​ 简单来说,任务是指可独立运行的基本执行单元。任务是并发执行的最小单位,每个任务都有自己的代码逻辑和资源。FreeRTOS多任务执行其实是多任务交替执行实现的。实现多任务交替执行的基础是tick中断,滴答中断,周期性的定时器中断。类比Linux,我们可以类比的认为一个任务相当于一个线程,同时,任务也有不同的种类和实现方式,比如说定时器任务等等。​ 在FreeRTOS中,任务具有不同的优先级,不过FreeRTOS中,优先级是与大多数操作系统相反的,,**反之越大,优先级越高。

2024-07-02 08:54:20 1510

原创 FreeRTOS的裁剪与移植

RTOS,GPOS,移植

2024-06-29 16:32:31 1995

原创 GPIO和PIN

​ 单片机有很多的引脚,为了操控每一个引脚,我们对引脚进行分组,例如GPIOA,GPIOB,…,GPIOG等等(Group),这一个组就称为一个GPIO端口,一般一个端口包含十六个PIN引脚[0~15]。(一个引脚占2bits,而stm32是32位的,所以一组是16个)。GPIO引脚具有可复用和重映射的特点。

2024-06-29 16:19:33 2765

原创 STM32笔记之NORFLASH,NANDFLASH,EEPROM大体认识

首先我们了解一下内存的分类(从上到下越来越远离cpu,同时单位造价越来越便宜)一般EEPROM,FLASH都用来做单片机的“硬盘”。首先我们来看看EEPROM和FLASH的区别。总的来说,EEPROM和FLASH各有优缺点,选择哪种存储器取决于具体应用的需求。

2024-05-16 16:16:09 1115

原创 STM32笔记之stm32命名规则,RCC时钟树,boot启动模式

内部晶振:内部晶振存在于单片机cpu内部,用来在板子刚上电的时候完成初始化工作(例如初始化外部时钟),但是会有温度引起的零漂问题,所以一般在初始化后使用外部晶振。南桥与北桥:各个时钟总线的速率不一样,那么工作起来肯定就会不同步,为了解决这个问题,有的板子上会有南桥,北桥的芯片。stm32单片机启动时,通过控制boot0和boot1两个引脚的电平,有三种常见的启动方式。CubeMx时钟树:相当于人的心跳,为各个部件提供不同的“节奏”。向单片机中烧录的是.elf文件或.bin文件。

2024-05-16 16:11:58 601

原创 简单介绍IIC通信协议

​ IIC I2C i2c Bus是飞利浦公司推出的,在电子控制领域的通信协议典型的电压准位是3.3v和5v。**IIC 是串行,同步的半双工协议。**IIC的电路简单,连接线少,控制简单,通信速率高。

2024-05-06 20:24:07 1878

原创 json库源码阅读

【代码】json库源码阅读。

2024-04-30 21:57:02 1391

原创 串口协议(例如usart,iic,spi)基础概念汇总

同步,异步 同步通信: 异步通信: 串行,并行 串行: 并行: 全双工,半双工,单工 单工: 半双工: 全双工: 电平信号,差分信号 电平信号(TTL): 差分信号: LSB,MSB LSB: MSB:同步,异步

2024-04-30 21:54:13 654

原创 JSON语法,简单介绍。

​ JSON( JavaScript Object Notation,JavaScript对象标记法)是一种轻量级,基于文本,可读的数据交换格式。它是一种字符流的数据交换格式协议。

2024-04-27 11:42:44 506 1

原创 十大经典排序算法之插入排序。

​ 插入排序(Insertion Sort)是一种简单直观的排序算法,它的基本思想是逐步构建最终的排序列表,每次将一个未排序的元素插入到已排序的部分的适当位置。

2024-04-25 23:01:12 389 2

原创 十大经典排序算法之希尔排序。

​ 希尔排序(Shell Sort)是一种改进的插入排序算法,它的基本思想是通过将待排序列表分割成若干个子列表,对每个子列表进行插入排序,然后逐步缩小子列表的间隔,直到间隔为1,最终完成整个列表的排序。接下来我们给出示例代码。

2024-04-25 22:58:49 409 3

原创 十大经典排序算法之选择排序。

​ 选择排序(Selection Sort)是一种简单直观的排序算法,它的基本思想是通过重复从未排序的部分选择最小(或最大)的元素,并将其放到已排序部分的末尾,直到整个列表都排序完成,也就是说,他先把数组先分成了两个部分,一个是有序的,一个是无序的,如果我们是从小到大排序,那么每次都从未排序的部分中找到最小的,然后放到有序的部分中。接下里我们给出一段选择排序的示例c代码。

2024-04-24 22:08:13 370

原创 十大经典排序算法之冒泡排序

​ 冒泡排序(Bubble Sort)是一种简单直观的排序算法,它遍历要排序的列表,一次比较两个相邻的元素,并且如果它们的顺序错误就交换它们(比如从小到大排序时,若4,3。会交换为3,4),直到没有需要交换的元素为止。冒泡排序的名称由于在排序过程中较小或较大的元素会逐渐“浮”到数组的顶端,类似于气泡上浮的过程,所以称为冒泡排序。接下来我们给出冒泡排序的示例c代码。

2024-04-24 22:03:55 816

原创 INI配置,和Iniparser库的基本使用

ini配置文件,Iniparser库的基本使用,函数原型。

2024-04-23 16:41:51 1346

原创 IPC进程间通信函数原型总结(方便查询)

进程间通信,函数原型,信号,管道,命名管道,unixsocket,信息量,共享存储,消息队列

2024-04-23 11:09:28 1291

原创 IO多路复用函数原型总结(方便查询)

select,poll,epoll,io多路复用函数原型。

2024-04-23 08:00:00 844

原创 多进程,选项参数实现函数原型总结(方便查询)

fork,vfork,多进程函数原型。

2024-04-23 06:00:00 722

空空如也

空空如也

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

TA关注的人

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