自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 linux之TCP

保留位(6位):必须为0,保留字段,不使用,只有在数据偏移量不够的时候才使用。选项(长度可变):可变长的字段,用于指定 TCP 选项,可以添加一下参数上去。序列号(32位):标识从发送方发送的数据字节流的序列号,用于数据的顺序控制。• 地址族:指定了套接字(socket)使用的网络协议类型以及地址的格式。数据偏移位(4位):表示 TCP 头部的长度。源端口号(16位):标识发送方的端口号。确认号(32位):用于确认接收到的数据,目的端口号(16位):接收方的端口号。校验和(16位):用于错误检测。

2026-02-21 17:07:27 1034

原创 STM32之MQTT

轻量级客户端服务端发布/订阅模式简单易用,方便集成。安全可靠,支持加密和认证机制。轻量级,占用带宽小,支持多种消息传输模式。灵活性,

2026-02-21 16:03:14 595

原创 STM32之CAN

• CAN协议是一种基于差分信号如果受到影响,那么将会是两根线都会受到影响,然后两条线相减去之后,实际上并没受到影响的,或者说影响没有单线的大,所以CAN的抗干扰能力强。的异步没有时钟信号串行通信协议,采用双绞线作为传输介质,具有高性能、高可靠性和独特的设计特点。

2026-02-20 17:45:35 666

原创 交叉编译(二)

• 交叉编译是指在当前的编译平台上编译,生成能在另一种目标平台上可以运行的可执行文件(编译平台和目标平台的体系结构是不同的)。例如,在x86平台上,使用ARM平台的工具,开发针对。宿主机上是无法正常运行的。平台本身的可执行程序,这个编译过程称为本地编译。平台的可执行程序,这个编译过程称为交叉编译。平台上,使用x86平台上的工具,开发针对。平台上运行这个程序。首先需要在家目录下的。• 编译是指将源代码文件(如C/C++等步骤,转换为可执行文件的过程。命令可以看到编译出来的程序是。),编译的工作需要编译器(

2026-02-10 22:40:41 616

原创 交叉编译(一)

•Makefile 是一种用于,也就是说Makefile 类似是“自动化的做菜食谱”——告诉电脑用哪些原料(源文件,语句)、按什么步骤(编译/链接命令),一键做出可执行程序。•格式:# <目标>: <前置依赖># <需要执行的命令>•目标:需要生成的目标文件名。•前置依赖:生成目标文件需要的。•命令:执行的命令。

2026-02-10 16:43:07 229

原创 用C语言调用Python

•通过C语言调用Python代码,需要先安装libpython3的dev依赖库(不同的ubuntu版本下,python版本可能会有差异, 比如里是• 首先可以通过这个命令验证是否是否已经存在python3的dev包:dpkg-lgreplibpython3。•如图:正常会有类似如下的输出,出现和"dev",如即可,就说明有安装了。• 如果没有,可以通过apt命令安装相关的dev包:sudo。

2026-02-10 01:00:43 440

原创 linux之UDP

•Socket 编程原本是为了网络服务的,后来逐渐发展成一种进程间通信的方式:Unix。它允许在同一台主机上运行的进程之间进行高效的数据传输,无需经过网络协议栈,因此具有低延迟和高性能的特点。通过文件系统中的特殊文件(通常是一个套接字文件),进程可以通过套接字(socket)来进行通信,实现双向的数据传输。Unix Domain Socket IPC 被广泛用于各种应用场景,如进程间通信、客户端-服务器模型等,是 Unix/Linux 系统中实现进程间通信的重要工具之一。4.2 例子。

2026-02-06 12:53:36 292

原创 linux之网络

为用户应用程序提供网络服务。不同的功能使用不同的协议,例如,如果要远程连接,就需要SSH协议。• 协议:该层包括了 SMTP、FTP、SSH、HTTP 等协议,这些协议都在应用层上实现,以实现客户端与服务器之间的通信和数据交换。不同的功能使用不同的协议。2.2。

2026-02-06 12:31:54 715

原创 linux之线程池

•线程池是一种用于。它通过维护一个线程池(线程的集合),可以有效地处理并发任务而。这种方法。

2026-02-05 17:15:27 252

原创 linux之信号量

•可用于进程间通信的方式 通常都可以 用于线程间通信。•无名信号量和有名信号量均可用于进程间通信,有名信号量是通过唯一的信号量名称在操作系统中唯一标识的。无名信号量用于进程间通信时必须将信号量存储在进程间可以共享的内存区域,作为内存地址直接在进程间共享。而内存区域的共享是通过内存共享对象的唯一名称来实现的。•无名信号量和有名信号量都可以作为二进制信号量和计数信号量使用。•二进制信号量和计数信号量的区别在于前者起到了互斥锁的作用,而后者起到了控制进程或线程执行顺序的作用。

2026-02-05 16:38:04 750

原创 STM32之低功耗

•STM32的(low power mode)特性是其嵌入式处理器系列的一个重要,特别适用于且的应用场景,如便携式设备、物联网设备、智能家居系统等。•在很多应用场合中都对电子设备的要求非常苛刻,如某些传感器信息采集设备,仅靠小型的电池提供电源,要求工作长达数年之久,且期间不需要任何维护,还有由于智慧穿戴设备的小型化要求,电池体积不能太大导致容量也比较小,所以也很有必要从入手,提高设备的续行时间。

2026-02-05 11:43:59 710

原创 linux之线程同步

我们在读操作中加了 1s 休眠,只要有一个读线程获得锁,在 1s 内写操作是无法执行的,其它读操作就可以有充足的时间执行,因此读操作就会连续发生,写操作必须等待所有读操作执行完毕才能获得读写锁执行写操作。Linux 提供了可以修改的属性 pthread_rwlockattr_t,默认情况下,属性中指定的策略为“读优先”,当写操作阻塞时,读线程依然可以获得读锁,从而在读操作并发较高时导致写饥饿问题。如果一个线程试图获取一个已经被其他线程持有的锁,那么请求锁的线程将被阻塞,直到锁被释放。

2026-02-05 01:34:03 614

原创 linux之线程

•Linux 中的线程是,相比于进程,具有以下特点:•进程(Process)是正在执行的程序的实例。每个进程都有自己的地址空间、代码段、数据段和打开的文件描述符等资源。线程(Thread)是进程内的一个,它进程的地址空间和其他资源,包括文件描述符、信号处理等,但每个线程也有自己的栈空间。•由于共享地址空间和数据段,同一进程的多线程之间进行数据交换比进程间通信方便很多,但也由此带来线程同步问题。•同一进程的多线程共享大部分资源,除了每个线程独立的栈空间。

2026-02-04 10:39:48 416

原创 linux之进程间通讯

shm_open和shm_unlink/*** const char *name: 这是共享内存对象的名称,直接写一个文件名称,本身会保存在 /dev/shm。名称必须是唯一的,以便不同进程可以定位同一个共享内存段。* 命名规则:必须是以正斜杠/开头,以\0 结尾的字符串,中间可以包含若干字符,但不能有正斜杠* int oflag: 打开模式 二进制可拼接* (1) O_CREAT:如果不存在则创建新的共享内存对象。

2026-02-04 02:14:59 871

原创 STM32之BKP和RTC

•实时时钟是一个独立的定时器。RTC模块拥有一组连续计数的计数器(32位的可编程计数器,在相应软件配置下,可提供时钟日历的功能(F1系列是没有的。修改计数器的值可以重新设置系统当前的时间和日期。•RTC模块和时钟配置系统(RCC_BDCR寄存器处于后备区域,即在系统复位或从待机模式唤醒后, RTC的设置和时间维持不变。•复位后,对备份寄存器和RTC的访问被禁止,并且备份域被保护以防止可能存在的意外的写操作。执行以下操作可以使能对备份寄存器和RTC的访问:•。

2026-02-03 11:21:58 868

原创 linux之进程

•进程(Process)是表示程序正在运行,是操作系统进行 资源分配和调度 的基本单位。程序是存储在硬盘或内存的一段二进制序列,是静态的,而进程是动态的。进程包括代码、数据以及分配给它的其他系统资源(如文件描述符、网络连接等)。•例如,打开的 VMWare、开启的浏览器都对应操作系统的一个进程。•进程标识符:每个进程都有一个非负整数表示的唯一ID,叫做pid(进程号)。•子进程复制了父进程的文件描述符 fd,二者指向的应是同一个底层文件描述结构体(struct file 结构体)。

2026-02-03 01:37:39 969

原创 STM32之SPI

•IIC 是通讯,而SPI 是通讯,可以做到同时收发信息。•IIC 通讯协议较,而 SPI 通讯协议较•IIC 需要通过,而 SPI 只需一个即可选中从机(拉高或者拉低那个从机的引脚)。•IIC 通讯速率一般为左右,而 SPI 可以达到•IIC 需要的通讯线较少,而 SPI 需要较多。

2026-02-02 22:19:43 720

原创 STM32之IIC

• I2C总线,是同步(SCL)串行 半双工的通信总线。所有设备都挂载到IIC总线上。

2026-02-02 17:29:42 1142

原创 linux之文件IO

•在 Linux 系统中,当我们打开或创建一个文件(或套接字)时,操作系统会提供一个文件描述符,这是一个非负整数,我们可以通过它来进行读写等作。•文件描述符本身 只是 操作系统给应用程序 操作 底层资源(如文件、套接字等)所提供的一个引用或“句柄,其实也可以说文件描述符是一个索引。•在 Linux 中,文件描述符 0、1、2 是有特殊含义的。•0 是标准输入(stdin)的文件描述符。•1 是标准输出(stdout)的文件描述符。•2 是标准错误(stderr)的文件描述符。

2026-02-01 10:30:28 819

原创 SQLite数据库

•轻量化,易用的嵌入式数据库,用于。

2026-01-31 23:34:08 310

原创 基于wiringPi库写的一些代码(二)

•udev是一个,udev以的形式运行,通过侦听内核发出来的event(事件)来管理/dev目录下的设备文件。,而不在内核空间 运行。它能够根据系统中的硬件设备的状态,等。设备文件通常放在/dev目录下。使用udev后,在/dev目录下就只包含系统中真正存在的设备。

2026-01-31 23:08:49 732

原创 基于wiringPi库写的一些代码(一)

•步骤• 如图,出现了这个,就说明安装成功。

2026-01-31 11:18:24 409

原创 STM32之ADC

• 内部的"控制与定时"让"逐次逼近寄存器"在“D/A转换器(DAC)”产生一个模拟量与外界输入的模拟量进行比较,如果比外界的小了,那么重新生成比之前大的模拟量再次进行比较;配置ADC工作参数 HAL_ADC_Init() ADC校准 HAL_ADCEx_Calibration_Start()配置DMA,将DMA与ADC句柄联系起来HAL_DMA_Init(),__HAL_LINKDMA()触发ADC转换,DMA传输数据HAL_ADC_Start_DMA()转换时间 = 采样时间+12.5周期。

2026-01-25 10:56:37 677

原创 STM32之DMA

•DMA(Direct Memory Access,直接存储器访问)提供在之间的。它允许不同速度的硬件装置,在这个时间中,CPU对于内存的工作来说就无法使用。•简单来说。

2026-01-23 17:10:46 697

原创 刷机与系统启动

•使用SDFormatter TF卡的格式化工将TF卡格式化。• 然后用Win32Diskimager刷机工具将linux镜像写入。•然后启动系统,用串口打印出启动的信息。如图:• 然后修改密码指令,如图:•然后配置网络:• 指令:nmcli dev wifi,可以扫描周围的WIFI热点。•指令nmcli dev wifi connect wifi名 password wifi密码,可以接入网络。•指令。

2026-01-22 23:46:05 102

原创 STM32之串口(三)

wifi模块(esp8266)

2026-01-22 23:26:33 319

原创 STM32之串口(二)

•HC-08 蓝牙模块是通过进行通信,这个模块既可以作为主机也可以作为从机(通过 AT 指令配置),并且最远传输距离为80m,最大传输速度为1Mbps。

2026-01-22 11:11:21 528

原创 STM32之串口(一)

•USART是Universal synchronous asynchronous receiver transmitter的简写,是通用同步异步收发器的意思。•UART是Universal asynchronous receiver transmitter的简写,是通用异步收发器。•全双工通信:USART支持全双工的通信,即数据可以在两个方向上同时传输(A->B且B->A)。这使得USART能够满足许多需要双向通信的场景。•尽管USART的“S”代表同步,但在实际应用中,USART更常用于。

2026-01-22 10:42:49 682

原创 STM32之看门狗

•窗口看门狗用于检测单片机程序运行时效是否精确,主要检测软件异常,一般用于需要精确检测程序运行时间场合。•窗口看门狗的本质是一个能产生系统复位信号和提前唤醒中断的6位计数器。•产生复位的条件:•当计数器从0x40减到0x3F时复位(T6位跳变到0•计数器的值大于W[6:0]时喂狗会复位。(这里W[6:0]表示的时窗口值)。•产生中断的条件:当递减计数器等于0x40时会产生提前唤醒中断(EWI)。

2026-01-22 00:01:25 1365 2

原创 STM32之定时器(二)

• 简易图,捕获一次所要经过的各种电路。

2026-01-21 12:38:28 429

原创 STM32之定时器(一)

拥有定时中断、主模式触发DAC的功能。

2026-01-21 12:05:51 568

原创 STM32之SysTick

•SysTick,既,是中的一个特殊定时器,用于提供。该定时器是一个的递减计数器,具有自动重装载值的功能。当计数器到达自动重装载值的时候,它会自动重新加载并开始新的计数周期。•SysTick定时器的主要功能包括实现,生成定时中断以及进行等。此外,SysTick定时器还可以被用作其他目的,例如,作为操作系统的如FreeRTOS),软件看门狗等系统调度操作,在STM32中SysTick通常以作为运行时钟。

2026-01-21 01:50:28 744

原创 STM32之中断(二)

•EXTI 是 External Interrupt 的缩写,表示。EXTI 可以的电平信号变化,时,向内核的中断控制器NVIC 发出中断申请。NVIC 在裁决后,如果满足条件,会中断CPU的主程序,使CPU转而执行EXTI对应的中断服务程序。• EXTI 支持的触发方式:上升沿、下降沿、双边沿或软件触发。并且上升沿、下降沿、双边沿这三种方式是常用触发方式,都可以在配置GPIO口的mode中配置,上升沿),下降沿),双边沿。•EXTI 支持所有的GPIO口,但需要注意的是,。

2026-01-21 00:46:28 609

原创 STM32之中断(一)

•NVIC,即Nested Vectored Interrupt Controller(嵌套向量中断控制器),是STM32中的中断控制器。它负责管理和协调处理器的中断请求,是STM32中处理异步事件的重要机制。•NVIC提供了灵活、高效、可扩展的中断处理机制,支持多级优先级、多向中断、嵌套向量中断等特性。当一个中断请求到达时,NVIC会确定其优先级并决定是否应该中断当前执行的程序,以便及时响应和处理该中断请求。

2026-01-21 00:35:13 667

原创 STM32之GPIO

•GPIO是,是(General-purpose input output)的英文简写。是所有微控制器必不可少的外设之一,其作用是可以由STM32直接驱动从而和外界进行交互,从而实现和外界设备进行通信,控制,采集以及捕获的功能。•。

2026-01-20 22:59:56 703

原创 STM32之ADC

•ADC的英文全称是Analog-Digital-Converter,是模拟-数字-转换器。•作用:将模拟信号(电压)转换为数字信号的转换器。•模拟信号和数字信号,概念,如图:•模拟信号:存在于自然界当中的信号。•时间连续:任意时间点上都有值。如图的曲线上,是由无数个点组成的,也就是说处处都有值,例如(8:00,8:10,8:10:50等都有值)。•幅度也连续:就是一个点上面的值的精度是无限的,例如上面的19.31278952941832…这个点上面的值的精度是无限的•。

2026-01-14 03:42:55 639

原创 STM32之定时器(二)

•这是定时器从模式的框图:•可以看到定时器从模式控制器,有三个箭头•其实,最重要就是这三个箭头•TRGI:触发输入的作用,相当于接收命令或者信号,控制里面的时基单元做指定的动作,如断开开关,设置分频系数,清零CNT等等。•TRGO:触发输出的作用,相当于向外发出命令或者信号来控制其他定时器或者其他的片上模块,如触发ADC的采集等。•双向箭头:从模式控制器与时基单元的相互作用。

2026-01-13 02:41:08 691

原创 STM32之定时器(一)

•在单片机上,定时器也属于片上外设的一种,在单片机上,可以把定时器理解为一块手表。在单片机内部中,与时间有关的操作都要定时器。•如图,这个STM32F103C8F6一共有四个定时器,其中TIM1是高级定时器,TIM2-4是通用定时器。本质其实就是功能的不同。•如图,这是定时器里面的结构图•其中输出比较和输入捕获共用同一个通道,这里通道指的是,对于输入捕获来说:可以测量外部输入信号的时间参数,可以测量周期是多长,占空比是多少等。•对于输出比较来说:可以通过定时器产生精准定时的方波信号。

2026-01-12 04:32:29 747

原创 STM32之时钟

1.1.1 时钟:•时钟是指 为芯片内部的各个模块(片上外设)提供的信号源,是芯片正常工作的基础。我们在写程序之前,首先都需要给要使用的那个模块(外设)打开时钟。•时钟是一种方波信号,时钟的频率越快,外设工作效率就越高。•时钟其实也可以理解人的心跳。

2026-01-10 00:08:36 1093

原创 STM32之EXTI

• EXTI全称是(External Interrupt and Event Controller),中文是外部中断和事件控制器• 如图GPIO 的作用是可以读取引脚上面的数据,0是低电压,1是高电压• 而EXTI作用:可以检测GPIO引脚上的(可以用来边沿检测),可以检测上升沿或者下降沿,上升沿是由低电压变为高电压,下降沿是由高电压变为低电压。• 总结就是,EXTI可以用来。

2026-01-09 19:48:55 858

空空如也

空空如也

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

TA关注的人

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