自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 C语言部分基础

本文系统梳理了C语言的核心知识点,涵盖基本概念、语法特性、内存管理、数据结构等内容。重点包括:1. C语言开发环境配置与项目组织;2. 关键语法如typedef与#define区别、枚举类型、变量作用域;3. 指针机制详解及其与数组的关系;4. 结构体/共用体内存对齐特性;5. 动态内存管理及常见问题;6. 基础数据结构实现与算法分析。文章通过代码示例和对比说明,深入浅出地讲解了C语言的底层特性与编程技巧,为系统级开发提供了实用指导。

2026-02-06 09:37:02 921

原创 ADC相关

本文介绍了IIC通信协议的读时序流程、ADC(模数转换器)的基本概念及其工作原理。IIC读时序包括起始信号、地址传输、数据读取和停止信号四个阶段,其中主机通过ACK/NACK控制数据传输。ADC作为连接模拟与数字系统的桥梁,通过采样、保持、量化和编码四个步骤将模拟信号转换为数字信号。重点阐述了ADC的基准电压作用(决定转换范围和精度)以及分辨率概念(常用8-16位),并给出12位ADC在3.3V基准下的电压计算公式(1LSB≈0.8057mV)。这些内容涵盖了嵌入式系统中信号采集与传输的关键技术要点。

2026-01-26 18:40:29 783

原创 串口相关概念

摘要:通信方式可分为单工(单向)、半双工(交替双向)和全双工(同步双向)。数据传输有并行(多比特同时)和串行(单比特顺序)两种形式,串行又分为异步(无时钟线)和同步(有时钟线)。串口通信属于异步串行通信,其电平标准包括TTL(5V/3.3V)、RS232(±3-15V全双工)和RS485(差分信号半双工,抗干扰强)。不同标准在传输距离和抗干扰能力上各有特点,适用于不同场景。

2026-01-23 19:46:21 769

原创 时钟树模块

摘要:锁相环(PLL)是时钟树的核心时钟源,负责频率合成和相位锁定。预分频器用于PLL内环的高速固定分频,相位分数分频器实现精细频率调节和多相位时钟生成。多路选择器负责时钟源的选通和分发,而CG门则通过动态关断闲置时钟来优化功耗,降低翻转负载并改善时序收敛。这些模块协同工作,共同构建高效稳定的时钟树系统。

2026-01-22 18:48:20 381

原创 硬件基础中断

本文介绍了中断处理机制及硬件实现。中断流程包括请求、检查、优先级判断、现场保护和恢复等步骤。硬件部分分析了两红一黄开关的电路原理,并展示了GPIO模块的封装代码。重点讲解了通用中断控制器GIC的结构,包括其支持的1020个中断源分类:SGI软件中断(0-15)、PPI私有中断(16-31)和SPI共享中断(32-1019)。其中分发器负责处理不同类型的中断请求,SGI用于多核通信,PPI为核独有中断,SPI是外设共享中断。

2026-01-21 19:22:47 435

原创 硬件编译相关

LED点灯需配置4类寄存器:时钟控制(全使能)、引脚复用(设为GPIO)、引脚属性(0x10B0)和GPIO核心寄存器。ELF文件包含代码段(.text)、只读数据(.redata)、初始化变量(.data)、未初始化变量(.bss/COMMON)。链接脚本用于确定程序加载地址、合并目标文件段并为未初始化变量提供地址标。

2026-01-20 20:12:12 273

原创 初识硬件基础

摘要:ARM汇编中,立即数指12位可直接参与运算的常量数值,其合法性可通过循环右移判断。b、bl、bx指令分别实现无条件跳转、带返回地址跳转和寄存器跳转(可切换指令集)。ARM内核默认采用满减栈结构。CPSR标志位(N、Z、C、V)根据运算结果自动置位。汇编与C函数交互时,前4个参数通过r0-r3传递,返回值通过r0(32位)或r0-r1(64位)返回,多余参数通过栈传递。

2026-01-18 20:47:44 757

原创 DS18B20温度采集器

DS18B20是一款数字温度传感器,具有-55℃~125℃的测量范围,±0.5℃的精度,最高12位分辨率(0.0625℃)。采用单总线通信方式,工作电压3V-5V。其操作时序包括复位、写和读三个过程:复位需主机拉低总线480us以上;写时序通过总线拉低时间区分0/1;读时序在总线拉低1us后采样电平状态。该传感器通过单根IO线实现通信,适用于嵌入式温度采集系统。

2026-01-15 15:28:01 380

原创 UART协议

UART(通用异步收发器)是一种全双工异步通信接口,包含TXD(发送)和RXD(接收)数据线。支持单工、半双工和全双工三种通信模式,采用串行LSB优先传输方式。通信参数包括波特率、数据位和奇偶校验(奇/偶/无校验)。通过SCON和PCON寄存器配置工作模式,其中SMOD位可加倍波特率。Modbus协议定义了主机(发起控制)与从机(执行应答)的数据格式,包含地址码、功能码、数据位和校验位。UART具有成本低、抗干扰强的特点,广泛应用于设备间通信。

2026-01-14 17:37:13 1167

原创 51单片机相关

本文介绍了单片机开发中的几个关键概念:GPIO(通用输入输出)作为与外界交互的基本方式,可配置为输入/输出模式;独立按键的工作原理是通过检测引脚电平变化判断按键状态;中断机制允许CPU响应紧急事件,包括中断源分类、优先级和嵌套处理;定时器用于精准计时,通过计数器自增产生中断;PWM(脉宽调制)可产生周期性方波,应用于蜂鸣器控制,其中无源蜂鸣器需外部提供震荡信号。这些基础功能构成了单片机与外部设备交互的核心技术。

2026-01-13 18:01:13 830

原创 嵌入式硬件基础

本文介绍了嵌入式系统的基本概念和关键组件。主要内容包括:1)各类处理器单元(MCU、CPU、MPU、GPU、NPU等)的功能特点;2)存储器(ROM、RAM)的特性与用途;3)发光二极管的工作原理及连接方式;4)位运算(按位或、与、异或、取反)的特性及应用;5)51单片机内部资源及数码管显示原理,重点阐述了数码管的位选、段选机制和动态显示技术。文章系统性地梳理了嵌入式开发中的核心硬件知识和技术要点。

2026-01-12 19:17:13 813

原创 简易在线商城制作

本文介绍了一个基于C语言开发的轻量级在线商城系统。该系统采用Linux平台部署,整合了Web服务器、SQLite数据库和静态页面展示功能,实现了用户注册登录、商品搜索和详情查看等核心功能。系统设计包含四个HTML界面(登录、注册、搜索和商品详情页),并采用C语言编写服务器端程序处理HTTP请求。关键技术包括:1)使用socket实现网络通信;2)通过文件读写发送静态资源;3)硬编码方式处理商品数据和用户验证;4)支持基本的GET请求路由。该系统具有部署简单、运行高效的特点,适合作为简易购物平台的实现方案。

2026-01-08 14:19:16 407

原创 项目一(线程邮箱)

本文描述了一个线程邮箱系统(MBS)的实现框架。系统通过创建邮箱、注册线程、收发消息和销毁邮箱四个主要步骤完成线程间通信。核心组件包括:1)使用内核链表管理用户节点;2)每个线程绑定独立消息队列;3)互斥锁保证线程安全。关键函数实现了邮箱创建、线程注册、消息收发(支持按名称/ID查找)、线程同步等待和系统销毁等功能。系统优化点包括内存管理、安全遍历链表和错误检查机制,确保了多线程环境下消息传递的可靠性和安全性。

2026-01-08 13:39:22 502

原创 网络编程(三)HTTP

本文摘要介绍了网络协议分析的关键内容:1)数据包结构包括MAC头、IP头(TTL、分片标志)、TCP头(控制标志)和UDP头;2)Wireshark抓包工具的使用方法,包括设备选择和过滤条件设置;3)HTTP协议详解,包含URL格式(主机名:端口/路径)、默认端口及通信流程。重点说明了IP包生存周期、TCP连接控制标志以及HTTP作为应用层协议如何通过TCP可靠传输网页数据。

2025-12-25 18:25:43 753 1

原创 网络编程相关(二)

TCP协议是一种面向连接的可靠传输协议,具有全双工通信、流式传输等特点。其核心机制包括三次握手建立连接和四次挥手断开连接。TCP通信中会产生黏包问题,即接收方无法区分多次发送的数据边界。关键函数包括:socket()创建套接字、bind()绑定地址、listen()开始监听、accept()接受连接、recv()/send()收发数据,以及connect()发起连接。服务器端需要先创建监听套接字,再生成通信套接字进行数据传输。这些函数共同构成了TCP网络编程的基础框架。

2025-12-24 18:58:26 969

原创 网络编程基础(一)

本文摘要:文章系统介绍了计算机网络的基础知识,首先对比了OSI七层模型与TCP/IP四层模型的结构及功能,详细说明了各层对应的协议(如HTTP、TCP、UDP、IP等)。其次阐述了IP地址的组成结构及IPv4/IPv6的区别。重点讲解了UDP协议的工作原理,包括服务端/客户端编程流程,详细解析了socket()、bind()、sendto()和recvfrom()等核心函数的参数及使用方法。内容涵盖网络协议栈、IP编址和UDP套接字编程三大技术要点,为网络编程提供了基础理论支持。(149字)

2025-12-23 21:31:55 1167

原创 IPC进程间通信1(三种通信方式)

本文介绍了进程间通信(IPC)的基本概念和主要方法。首先阐述了IPC的必要性,即满足进程间数据共享和交换的需求。接着详细介绍了三种IPC方式:无名管道(仅限亲缘关系进程)、有名管道(支持任意进程)和信号通信(异步事件处理)。其中重点分析了管道的特性(半双工、文件IO操作)和实现方法,包括pipe()和mkfifo()函数的使用。信号通信部分则说明了信号处理流程和kill()、signal()等关键函数。全文系统梳理了Linux环境下进程通信的核心机制,为开发者选择合适通信方式提供了技术参考。

2025-12-22 14:49:36 951

原创 线程控制(同步相关)

摘要:本文介绍了同步信号量的概念与应用。信号量用于多线程环境中实现资源的顺序访问控制,与互斥锁的区别在于允许多个资源访问和线程交叉释放。文章详细说明了信号量的使用流程:定义、初始化、PV操作(sem_wait/sem_post)和销毁(sem_destroy)。同时阐述了死锁的四个必要条件:互斥、请求保持、非抢占和循环等待。信号量适用于包含小耗时操作的场景,而互斥锁更适用于短小精悍的临界区代码。

2025-12-18 22:01:52 775

原创 线程控制(互斥相关)

摘要:互斥机制用于解决多线程并发访问临界资源时的数据一致性问题。通过定义互斥锁(pthread_mutex_t),进行初始化、加锁、解锁和销毁操作,确保临界区代码的原子性执行。其中pthread_mutex_lock()使加锁代码成为原子操作,阻止其他线程访问;pthread_mutex_unlock()释放锁资源。这种机制有效防止了因线程切换导致的数据不一致问题。

2025-12-17 18:29:46 676

原创 线程及其函数

本文介绍了Linux系统中线程的基本概念和编程方法。线程作为轻量级进程,具有资源共享、并发性高等特点,但稳定性低于进程。文章详细阐述了线程编程步骤:创建线程(pthread_create)、获取线程ID(pthread_self)、线程退出方式(pthread_exit/pthread_cancel)以及线程资源回收(pthread_join)。此外,还介绍了线程分离属性(pthread_detach)的设置方法,该属性可使线程退出时自动回收资源。文中提供了相关函数的参数说明和使用方法,为Linux多线程编

2025-12-16 22:09:22 709

原创 进程的终止

本文摘要: 父子进程关系方面,子进程通过写时复制技术共享父进程内存空间。进程终止有8种情况,包括正常退出和异常终止。进程退出后可能成为僵尸进程(需手动回收)或孤儿进程(自动回收)。exit和_exit函数分别用于带/不带缓冲区刷新的进程退出。为防止僵尸进程累积导致系统不稳定,父进程应使用wait/waitpid函数回收子进程资源,其中wait可获取子进程退出状态(正常退出返回值或终止信号)。关键点包括写时复制机制、进程终止类型、资源回收的必要性及方法。

2025-12-15 20:04:59 484

原创 系统编程之进程

本文概述了进程的基本概念及其与程序的区别。进程是程序执行的动态过程,包含PCB结构体记录进程信息,如PID、资源限制等。相比静态存储的程序,进程具有状态变化、并发性和资源竞争特性。文章还介绍了进程分类(交互式、批处理、守护进程)、状态切换图和系统调度算法(如时间片轮转)。最后说明了fork函数创建子进程的原理,以及获取进程ID的相关函数。通过对比进程与程序,阐明了操作系统管理多任务运行的机制。

2025-12-11 19:16:19 1136

原创 标准IO-缓存区

本文摘要:系统为标准I/O操作提供三种缓冲方式:行缓冲(1K,终端交互,遇\n或满时刷新)、全缓冲(4K,文件操作,满时刷新)和无缓冲(stderr直接输出)。介绍了标准I/O函数如fflush的刷新机制。文件定位方面,详细说明了fseek函数的使用方法(支持SEEK_SET/CUR/END三种起始位置)、ftell获取当前位置的功能,以及rewind复位文件指针到开头的操作。这些函数主要用于普通文件操作,不支持设备文件。

2025-12-09 21:11:25 670

原创 Linux系统编程

摘要:本文介绍了Linux标准IO操作相关内容。第一部分说明Linux的七种文件类型及man命令的使用方法;第二部分讲解命令行参数处理,展示通过argc和argv获取参数的示例代码;第三部分详细说明文件操作函数,包括fopen打开文件,fputc/fgetc字符读写,fputs/fgets字符串读写,以及fclose关闭文件等基本操作,并解释了各函数的参数和返回值含义。文章涵盖了Linux环境下文件处理的基础知识和常用函数。

2025-12-08 18:51:48 401

原创 队列初相识

本文介绍了队列的基本概念和两种实现方式。队列是一种先进先出(FIFO)的线性表,允许在队尾插入、队头删除。主要讨论了顺序队列和循环队列的实现,重点说明了循环队列中解决队满/队空判断的方法:当head==tail时表示队空,(tail+1)%size==head时表示队满。文章还给出了队列的基本操作接口,包括创建、销毁、入队、出队等函数定义,以及链式队列的数据结构设计。这些实现方式都考虑了效率问题,通过求余运算避免了数组越界。

2025-12-07 20:18:13 732

原创 GDB相关操作

摘要:Linux开发人员必备的4个核心工具:1) GCC编译器用于源码编译;2) Vim文本编辑器;3) GDB调试器用于排查逻辑错误;4) Makefile工程管理工具。重点介绍了GDB调试流程:通过-g参数编译生成调试信息,启动调试器设置断点,逐步执行程序并检查运行状态,循环定位错误。这些工具构成了Linux软件开发的基础工具链。

2025-12-04 23:43:54 606

原创 栈相关及分类

定义:栈是限定仅在表尾进行插入和删除操作的线性表。特性:先进后出、后进先出应用:递归,回溯问题。和 优先级有关的问题区别: 数据结构中的栈 和 系统中栈的关系工作原来,一样,先进后出栈顶:允许操作的一端栈底:不允许操作的一端系统栈:是0~3G内存中的一段(8M), 存储 函数的调用关系, 局部变量,参数,返回地址。数据结构栈:内存空间在堆空间中开辟。适用场景更广。

2025-12-03 17:20:44 647

原创 线性表及链表

本文介绍了线性表的顺序存储和链式存储实现。顺序表(SeqList)使用数组存储数据元素,支持快速随机访问(O(1)),但插入删除需要移动元素(O(n))。链表(LinkList)通过节点(Node)存储数据和指针域,解决了动态存储问题,但访问效率较低。文中详细定义了两种结构的数据类型和操作接口,包括创建、插入、查找、修改、删除等基本操作。特别地,链表部分提出了基于函数指针的通用查找方法(FindLinkList2),实现了解耦合的条件查询。文章还对比了两种存储方式的优缺点,并提及了内存管理工具valgrin

2025-12-02 18:38:07 566

原创 数据结构(一)

本文摘要:数据结构研究如何高效存储和管理大量数据,包含逻辑结构(集合、线性、树、图)和物理结构(顺序/链式存储)。数据元素通过属性描述事物,数据对象是元素集合,抽象数据类型则结合数学模型和操作。算法是解决问题的有限指令序列,需满足输入输出、有穷性、确定性、可行性等特性。优秀算法应具备正确性、可读性、健壮性和高效性。时间复杂度用于评估算法效率,常见复杂度排序为O(1)<O(logn)<O(n)<O(nlogn)<O(n²)等。通过优化算法可显著提升数据处理效率。

2025-12-01 18:40:41 457

原创 C语言复习篇(练习)

本文展示了8个C语言指针应用的编程实例:1)数组倒置函数;2)求三个数最大值;3)字符串比较函数;4)字符串转数字;5)统计字符串中各类字符数量;6)密码强度验证;7)二维数组求和;8)字符串二分查找。所有实例均采用指针操作实现,涉及数组、字符串处理、指针运算等核心概念,演示了指针在访问内存、传递参数、遍历数据等方面的典型用法。每个示例包含完整函数实现和测试代码,展现了指针在提高程序效率和灵活性方面的优势。

2025-11-27 18:06:06 743

原创 C语言基础复习篇1

本文介绍了C语言中的输入输出函数和流程控制结构。输入输出函数包括putchar、getchar、printf、scanf、gets和puts,分别用于字符和字符串的输入输出。流程控制分为顺序结构、分支结构和循环结构。分支结构包含关系运算符、逻辑运算符、三目运算符以及if和switch语句。循环结构强调循环三要素:变量初始化、条件检测和变量更新。这些基础语法是C语言程序设计的核心内容。

2025-11-26 18:46:29 436

原创 堆内存扩展

本文介绍了堆内存的动态申请与释放机制。通过C语言代码示例演示了malloc()申请内存和free()释放内存的基本用法,包括字符串和结构体两种数据类型的内存操作。重点指出了内存泄漏的风险,即申请内存后未及时释放会导致可用内存逐渐减少,最终可能造成程序异常退出。文中还强调了释放内存后应将指针置为NULL的良好编程习惯,以避免野指针问题。示例代码包含了内存申请、使用、释放的全过程,并展示了内存释放后继续访问可能产生的问题。

2025-11-26 18:17:02 304

原创 C语言终篇共用体

摘要:本文介绍了三种自定义数据类型及其应用。(1)共用体(union):成员共享内存空间,大小取决于最大成员,可用于判断大小端;(2)枚举类型(enum):限定变量取值范围,默认从0开始递增,常与switch搭配提高代码可读性;(3)位操作:包括按位与(清0)、或(置1)、异或(交换值)等运算,以及位移操作,在硬件寄存器操作中应用广泛。这些数据类型和操作在底层编程中具有重要作用。

2025-11-25 18:09:33 296

原创 构造数据类型

本文介绍了C语言中结构体的基本概念和使用方法。主要内容包括:1)结构体的定义和初始化,通过struct关键字创建自定义类型并初始化成员变量;2)结构体的内存对齐规则,成员变量地址需满足自身大小的整数倍,结构体总大小为最大成员字节的整数倍;3)结构体数组的传参方法,推荐使用指针传递以提高效率。文中通过具体代码示例演示了结构体的定义、初始化、访问成员变量以及结构体数组作为函数参数的用法。

2025-11-25 17:47:02 453

原创 指针函数和函数指针

本文介绍了指针函数和函数指针的概念与应用。指针函数是返回指针的函数,需注意不能返回局部变量地址,可通过static、全局变量或堆内存解决。函数指针本质是指向函数的指针,用于实现回调机制,提高代码灵活性。文章还讲解了二级指针的作用(修改指针指向)和const指针的四种用法:常量指针(内容不可变)、指针常量(指向不可变)以及完全不可变的指针。通过代码示例演示了这些指针类型的具体应用场景和语法特点。

2025-11-20 19:36:01 659

原创 指针(二)

本文主要介绍了指针在函数参数传递中的两种方式:值传递和地址传递。值传递时形参是实参的拷贝,修改不影响原值;地址传递通过指针间接访问可修改实参内容。同时阐述了指针与数组的关系,指出数组名是指向首元素的指针常量。重点讲解了字符串处理的四个关键函数实现:获取字符串长度(mystrlen)、字符串复制(mystrcpy)、字符串拼接(mystrcat)和字符串比较(mystrcmp),展示了如何通过指针操作实现这些功能。这些内容涵盖了指针在函数参数传递和字符串处理中的核心应用。

2025-11-19 19:12:34 503

原创 指针重点及难点

本文简要介绍了C语言指针的核心概念与应用。首先阐述了指针的特点(高效数据访问、硬件操作)和基本概念(内存地址、指针变量);然后详细讲解了指针的关键运算符:取地址运算符(&)和解引用运算符(*),说明了指针在不同系统中的存储特点(64位系统下固定8字节)。文章还涵盖了指针的算术运算、数组访问方式(p+i与p++的区别)、指针相减运算的实际含义(元素个数差),并提及了多字节数据的大小端存储问题。这些内容系统性地呈现了指针的基础知识和操作要点。

2025-11-18 18:48:58 521

原创 函数的递归及预处理指令

递归是函数调用自身的一种循环方式,需设置终止条件避免栈溢出,常用于回溯算法和逆向计算,如汉诺塔和斐波那契数列。预处理指令以#开头,包括宏定义(如#define)、头文件包含(#include)和条件编译(#ifdef/#ifndef等)。宏在预处理阶段直接替换代码,建议大写命名;头文件包含分系统路径和当前目录查找;条件编译用于版本控制和防止重复包含。头文件主要包含宏、类型定义、函数声明和全局变量声明等。

2025-11-17 19:07:52 580

原创 函数二(变量的作用域及生命周期)

本文介绍了C语言中变量和函数的关键概念:1.变量作用域和生命周期:局部变量作用域限于定义块内,生命周期随作用域结束;全局变量作用域跨整个工程,生命周期随程序始终。2.存储类型:包括auto、register、extern和static,其中static可改变变量生命周期或限制作用域。3.函数参数传递:值传递不能修改实参,地址传递可读写实参内容。这些概念对理解C语言内存管理和程序结构至关重要。

2025-11-16 23:10:43 397

原创 函数的使用

摘要:函数是将大问题拆解为小功能模块的代码片段,具有代码复用和模块化编程的作用。在C语言中,函数需先定义后调用,调用时参数类型需一致或可隐式转换。函数分为主调函数(如main())和被调函数,通过参数传递实现交互,执行流程在主调与被调函数间跳转。无参函数调用时括号不可省略,return语句使控制流返回主调函数。

2025-11-15 20:53:45 375

空空如也

空空如也

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

TA关注的人

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