自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 Sqlite3数据库

返回一个整数错误码。若返回 SQLITE_OK(值为 0),表示数据库连接成功关闭;其他非零值则对应具体的错误(例如存在未完成的事务、未释放的预处理语句等)分表策略:若单表数据超百万,按时间或业务拆分(如student_2023、student_2024):执行 SQL 语句(INSERT/UPDATE/DELETE/SELECT 等):db 是之前通过 sqlite3_open 系列函数成功创建的数据库连接句柄。索引会降低写入(INSERT/UPDATE/DELETE)效率,小表无需建索引。

2025-11-02 22:38:17 1667

原创 驱动程序——读写传感器

向下对接硬件I2C控制器(通过algo算法实现具体同信)向上提供统一的I2C总线访问接口(供驱动设备调用)

2025-10-21 20:36:29 461

原创 单总线驱动(DHT11)

DHT11是温湿度复合传感器DHT11是单总线协议,只有一根数据线,一根VCC,一根GND线dht11是串行异步单工通信方式。

2025-10-20 20:25:51 270

原创 Linux内核启动具体流程介绍

内核启动到最后阶段加载(挂载)根文件系统启动 init 进程 —> 后台进程 —> shell —> user_app。:文件管理、进程管理、内存管理、网络管理(Linux特点)、设备管理。——系统启动后加载【挂载(加载的方式)】的第一个文件系统。——引导程序(为内核启动准备环境,并引导内核启动)Windows的引导程序:BIOS。

2025-10-10 19:05:00 396

原创 ARM(IMX6ULL)——通信(IIC/I2C)

即使 I2C 的中断功能整体被关闭(IIEN为 0),通过轮询IIF标志位的方式,使得IIF标志位依然能够反映 I2C 模块内部的操作状态,它本质上是I2C模块内部的一种状态指示,而非单纯依赖于中断功能。:两个互补的有源器件(如晶体管、MOS 管)交替工作,实现对输出信号的 “推”(源电流输出)和 “挽”(灌电流输出),从而直接驱动负载并输出高低电平。:指器件的输出端仅连接到一个有源器件(如 N 沟道 MOS 管)的漏极,漏极处于 “开路” 状态,源极接地,无直接接电源的有源器件。

2025-09-28 21:20:22 982

原创 ARM(IMX6ULL)——通信(UART)

发送端在特定时钟边沿(如上升沿)将数据位加载到数据线,接收端则在相同类型的时钟边沿(如上升沿)从数据线采样数据,确保每一位数据的发送与接收动作在时间上严格对齐。,需 4 根信号线(TX+、TX-、RX+、RX-)+ 地(可选,增强抗干扰),支持 1 个发送端驱动最多 10 个接收端。,仅需 2 根信号线(A、B)+ 地(推荐),支持 1 个发送端驱动最多 32 个接收端。是通过专用时钟信号线实现发送端与接收端的严格同步,数据以连续的“数据”块形式传输,-逻辑高电平(逻辑1):-3V到-15V。

2025-09-27 17:41:50 884

原创 ARM—时钟(CLOCK)—定时器(EPIT / GPT)

AHB_CLK_ROOT(最高频率132M):Advanced High-performance Bus(高级高性能总线),用于驱动高速外设。(Enhanced Periodic Interrupt Timer):增强型周期中断定时器。(Phase Fractional Divier):相位分数分频器,输出频率可升可降。(Phase-Locked Loop):锁相环电路,可以倍频输出。(General Purpose Timer):通用目的定时器。2和三根据参考手册配置将位置1或置0。

2025-09-25 21:23:14 1146

原创 ARM——中断(按键)

一、整体流程概览。

2025-09-24 21:14:23 1023

原创 ARM裸机开发—编译烧录—链接脚本—LED点灯流程

IMX6ULL-Mini开发板是由正点原子提供,搭载NXP生产i.MX6ULL的SOC, 主打高性能、低功耗与紧凑体积整个开发板由核心板与底板组成,核心板通过双列直插方式与底板连接核心板 六层板CPU:NXP i.MX 6ULL Cortex-A7单核处理器,主频 528MHz(工业级) 或 800MHz(商业级)467, GBA封装内存:512MB DDR3L RAM,支持高速数据存取。存储:8GB eMMC,支持多种启动模式(SD卡、NAND、eMMC)屏幕:4.3寸屏 800*480分辨率。

2025-09-23 20:51:19 739

原创 ARM核心—汇编操作指令

正点原子 开发板:iMX6ULL-miniNXP(恩智浦):SOC:IMX6ULL能被编译器编译进指令中的数字量,称为立即数立即数是前12位(imm12),又分为。

2025-09-21 20:43:22 1065

原创 ARM体系结构—架构—指令集—寄存器—工作模式

/是一种集成和设计的理念,像一个蓝图,将市政府(MPU)警察局(MCU)研究所(DSP)机场(调制解调器)放在同一片土地上(芯片),形成功能完善的芯片。多总线结构(哈佛架构):分为高速总线(AHB)和低速总线(APB)(人车分流),成本高,处理速度快,效率高。CPSR(Current Program Status Register):当前程序状态寄存器(32位)存储器:寄存器 > Cache > 主存储器(RAM) > 辅助存储器(外存 - 磁盘)

2025-09-19 19:52:18 1049

原创 IO多路复用

线程或单进程同时监测若干个文件描述符是否可以执行IO操作的能力(系统提供的IO事件通知机制)

2025-09-06 11:01:19 715

原创 Linux编程——网络编程(UDP)、服务模型

1.数据传输不可靠(丢包率);2.低延迟;3.网络开销小;4.无连接 //意味着在通信双方1.数据与数据之间有边界2.发送的次数和接收的次数需要对应(保持一致)3.如果发送太快,就会丢包 //原因:硬盘读的快写的慢。

2025-09-04 21:06:24 1121

原创 Linux编程——网络编程(TCP)、TCP与UDP区别

tcp协议 (传输控制协议)特征:1.流式套接字2.数据连续,顺序发送3.可靠传输,应答机制(保障数据可靠传输),数据发送丢包后启动自动重传机制4.有链路(服务器和客户端会先打通一条通路,建立连接,连接server和client,互联网传输节点状态信息可以保存)5.全双工通信6.机制复杂7.双缓冲区,收发互不影响。

2025-09-03 16:48:29 1212

原创 计算机网络模型总概述、网络分类/命令

网络通讯 --- 不同主机之间的通信(进程间通信)

2025-09-03 11:05:29 1015

原创 Linux系统编程——进程间通信

应用:异步通信(信号通信)/ 中断异步通信:在应用程序中的随机事件中断:CPU在执行一个。

2025-09-01 09:06:41 1059

原创 Linux系统编程——线程控制(互斥与同步)、死锁

sem_t sem;//[信号量的类型] [信号量的变量]

2025-08-28 22:32:07 707

原创 Linux系统编程——线程(pthread)基本概念(对比进程),线程创建、回收、清理、设置分离属性

进程是系统中最小的资源分配单位线程是系统中最小的执行单位线程是属于某个进程。

2025-08-27 19:41:54 999

原创 Linux系统编程——进程终止与退出、进程(回调函数,进程空间回收函数)、exec族

原型: int atexit(void (*function)(void));功能: 注册进程退出前执行的函数参数: @function 函数指针,指向void返回值void参数的函数指针返回值 成功 返回0失败 返回非0当注册调用exit或者由main函数执行return时,所有用atexit注册的退出函数,将会由注册时顺序被调用。

2025-08-26 17:20:01 624

原创 Linux系统编程——进程基础概念,进程创建

/写时复制(cow):是一种延迟复制策略:它不会在 fork() 发生时立即复制父进程的整个地址空间(内存页)给子进程,而是让父子进程共享相同的物理内存页。当调用 fork() 时,操作系统会创建一个当前进程的几乎完全相同的副本,这个副本就是子进程,子进程获得父进程的数据段,堆,栈,正文段共享。:它为程序提供了一个独立运行的环境,拥有自己的资源空间,与其他进程隔离,保证了系统的稳定性和安全性。---> 进程是一个程序执行的过程(正在运行的程序),会去分配内存资源,CPU的调度。网络服务中会比较多见。

2025-08-25 21:29:10 813

原创 数据结构基本概念

/当线性表元素的个数 n(n>=0) 定义为线性表的长度,当n=0时,为空表。//元素之间是有顺序的,如果存在多个元素,第一个元素无前驱,最后一个没有后继,其他的元素只有一个前驱和一个后继。//特征:支持随机访问,head+5 == head[5] //时间复杂度O(1)插入,删除,整体移动操作,不具有动态存储功能 //时间复杂度O(n)//链式存储,数据存放的存储单位是随机或任意的,可以连续也可以不连续。//是指一组性质相同的值的集合及定义在此集合上的一些操作的总称。

2025-08-19 09:36:22 416

原创 Linux操作系统——文件编程(目录文件)

头文件。

2025-08-18 09:03:05 341

原创 时间转换函数 与 Linux操作系统——文件编程(系统调用 - 文件IO)

头文件:#include <time.h>函数原型:time_t time(time_t *time);localtime()函数。

2025-08-13 18:47:02 855

原创 Linux操作系统——文件编程(C库函数 - 标准IO)| 缓冲机制

功能: 从指定的文件中stream中读取nmemb个元素,每个元素size大小的这么多数据,存放 到指定ptr文件中。函数原型:size_t fread(void *ptr, size_t size, size_t nmemb, FILE *stream);对于二进制文件存在大量的'\0',fgets读取文件没有问题,但是fputs输出字符串,遇到'\0'就结束输出。返回值: 成功 返回文件指针(FILE *指针 ---> 文件指针/流指针)

2025-08-12 22:54:59 731

原创 C语言——typedef——位运算

/作用,给已有类型起别名//a就是int的别名示例2:typedef void (*sighandler_t)(int) //函数指针//类型为:void (*)(int)//别名:sighandler_t示例3:int age;}stu_t;//struct stu的别名为stu_t。

2025-08-11 18:37:18 202

原创 shell脚本

var=10 //shell中不需要指定类型,只需要变量名,可以直接赋值。

2025-08-11 18:36:06 860

原创 C语言——结构体——共用体——枚举

摘要:C语言结构体是一种自定义数据类型,用于组合不同类型的数据。通过struct关键字定义,包含多个成员变量,支持三种定义形式。使用点运算符(.)访问成员,可通过变量名或指针(->)操作。结构体可作函数参数,但大型结构体推荐使用指针。内存对齐规则要求数据按自然边界存放以提高效率。与结构体类似的共用体(union)允许成员共享内存空间,用于节省内存或检测大小端存储模式。

2025-08-08 21:14:49 601

原创 C语言——指针+数组——指针+函数——指针+常量——malloc/free

/指向的目标是数组类型 ---- 数组类型的指针 --- 数组指针////数组名 所代表的值是 首元素的地址(类型为:char *)--- &s[1][0]//数组名 代表的类型是 整个数组大小 --- char[10]

2025-08-07 21:31:34 920

原创 C语言 指针(pointer)

/*p --- 地址类型 short *//定义了一个指针类型的变量p,并用a的地址初始化,p指向a。示例:int *p //int* --- 指针类型 -- 表示的是一类指针(类型为int型)2.通过p来使用 -- 通过p拿到地址值,再对地址做*运算,才能使用到a的空间 //间接访问。// p + 1 (下一个元素的地址) ---> 使用元素数据 *(p + n)只需要传入数组首元素的地址(&a[0]) //int *p = &a[0];

2025-08-05 20:27:56 564

原创 Linux程序开发流程

语法格式:#define 标识符 字符串 ----> #define ARRAY_SIZE 10//标识符 -- 宏名//字符串 -- 宏值注意:宏定义不能加;宏名 -- 一般建议大写(区分大小写)宏名作用域 -- 从定义处开始,到后面文件结束取消宏定义-- #undef带参宏,又叫宏函数(宏函数不是函数):#define 宏名(参数) 宏值示例:#define MUL(a,b) a*bMUL(1,2);//宏可以嵌套使用int r = 0;#if 0。

2025-08-04 18:36:36 1118

原创 C语言 选择结构

关系成立为真---->1关系不成立为假----->0。

2025-08-03 16:25:54 439

原创 C语言 函数(function)

C语言所有的标识符 --- 先定义后使用main函数是整个程序的入口函数定义的位置可以在main之前,也可以在main之后main之前,直接使用main之后,在使用前,要做一下函数声明 //函数声明:函数头复制+分号。

2025-07-31 20:59:17 695

原创 C语言 字符数组的基本操作

函数原型:size_t strlen(const char *s);功能:计算字符串长度,不包含结束符'\0'参数:s要计算的字符串数组返回值:成功返回字符串长度。

2025-07-30 23:27:53 294

原创 C语言 排序 / 查找

选择排序 冒泡排序 插入排序 快速排序(涉及到函数,指针)--------------思想 / 思路。

2025-07-29 21:04:22 299

原创 C语言 循环结构 / 数组

若其值为假(值==0),则结束循环,执行for语句的下面的程序;局部初始化--->int a[10] = {1,2,3,4} //没有初始化的元素默认为0值。数组初始化:全部初始化--->int a[10] = {1,2,3,4,5,6,7,8,9,10}类型说明符----------要存放的数据的类型(int/float/double/char)1.goto语句非循环语句,是跳转语句------表示跳转到标号指定的语句处执行。[常量表达式]----------[] //数组定义的表示。

2025-07-28 21:21:16 991

原创 C语言 标准输入输出库

m------->是数字,表示要输出的数据的宽度(一般用于左对齐(-m)和右对齐),其中小数点也属于一列宽度。.n------->n也是数字,只用于小数和字符串,比如%.2f(保留两位小数)%d------->有符号十进制形式输出。%f------->十进制形式小数输出,默认保留六位小数。%g------->以更简洁的形式输出,不会输出无效的0。%hd--------->short int型类型输出。[辅助控制符]---------scanf只能使用m。%#x------->打印十六进制前缀(0x)

2025-07-25 20:00:20 267

原创 C语言 转义字符 / 运算符

说明:由于unsigned int类型的数值范围为0~2^32-1(2^32=4,294,967,296),所以 b 的输出结果为4,294,967,286;\b--->退格符,将当前位置移到前一列(后一个字符会覆盖前一个字符)\\--->代表一个反斜杠'\'------>结果:a=2;------>结果:a=2;右值:不可取地址--->常量,表达式。++) +i --->自增自减运算符为自右至左结合性。++a/--a:先加(减)后用--->先加(减)后的结果为输出结果。

2025-07-24 20:29:22 1064

原创 C语言 数据类型

5.不能和C语言中的关键字(32个)重名(包括数据类型关键字char/int/float/double等,控制语句关键字if/else/switch/while/break等,存储类别关键字static/extern等,其他关键字const/sizeof/struct等);数据类型:int(4字节),short(2字节),long(8字节),long long(8字节),float(4字节),double(8字 节),char(1字节)1 + '0' --->'1'

2025-07-23 20:37:28 891

原创 Linux常用命令及vi/vim编程

3.收获:通过实践掌握了Linux常用命令操作,熟悉了"命令模式"下的快捷输入方式,显著提升了代码编写效率。step1:vi filename.c //回车进入vi编辑软件,此时为命令模式。删除文件夹 命令格式: rm 文件夹 -r (-r--表示递归删除)step4:在“命令模式下”,按Shift + : 进入“底行模式”复制:Nyy //复制从光标所在这一行开始的N行内容。命令格式:文件的移动:mv 源文件 目标文件。输入:w //保存。

2025-07-22 20:24:02 425

空空如也

空空如也

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

TA关注的人

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