自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 C语言学习笔记

运算符分类:算数运算符、赋值运算符、比较运算符、逻辑运算符、位运算符、sizeof运算符目:表示运算符所连接的操作个数(三目:exp1?自动转换:又称为隐式转换,运算数据的数据类型会随着操作数的数据类型自定发生该变,一般发生在双目运算符之间,当双目运算符运算的数据类型不一致时,就会发生自动转换遵循原则:低精度→高精度,小量程→大量程强制转换: 格式:(待转换数据类型)变量 示例:int a = 10;优先级运算符名称或含义使用形式结合方向说明1[ ]数组下标。

2025-12-01 15:33:39 592

原创 C语言学习笔记(1)——输入输出,数据类型

CPU的位数主要决定了其通用寄存器的宽度,这直接影响CPU单次操作能处理的数据量和理论上能直接寻址的内存空间范围,但实际实现可能受地址总线宽度、操作系统和硬件架构的影响。

2025-11-30 22:23:34 971

原创 Linux学习笔记之-Makefile

声明:内容来源于正点原子资料,资料在资源下载,在资料中的第三章。

2025-11-20 11:29:30 111

原创 Zynq-Linux学习笔记之编译U-Boot

声明:内容来源于正点原子。

2025-11-18 21:42:52 675

原创 PCIe学习笔记

PCIE是新一代的总线接口,它取代了传统的PCI、AGP等总线接口,具有更高的得数据传输速率、更低的延迟和更好的扩展性,广泛应用于计算机内部的各种连接、如网卡、显卡、固态硬盘等1.1 特点:PCIe采用串行传输方式,将数据分成多个位流在不同的路线上同时传输,通过差分信号来传输数据能够有效减少信号干扰,提高传输的稳定性与可靠性每个设备都通过专用的链路与主板上的PCIe控制器直接相连,形成点到点的连接,避免了传统总线共享式架构中的数据冲突问题,提高了数据传输的效率和带宽利用率。

2025-10-30 16:18:52 716

原创 IO多路复用——Linux应用(8)

在规定超时时间内,对指定的文件描述符集进行监视,如果发生状态变化则函数立刻返回发生状态变化的文件描述符的个数;若达到了超时时间,则函数立刻返回函数参数:nfds 表示监视的文件个数,通常填待监视文件的最大描述符值+1,因为标准输入从0 开始 ,标准输出 为1 ,标准错误为 2 ,如果我们在打开一个fd=3,所以总共监视4个文件readfds 指向一个fd_set结构,用于设置需要监视哪些文件描述符进入到可以读取状态;若此项无需监视,则填NULL。

2025-10-16 22:31:00 908

原创 SQLite3数据库——Linux应用

SQLite 是一款的数据库引擎,由 D. Richard Hipp 于 2000 年发布并置于公有领域。整个引擎仅一个 C 库,编译后< 1 MB,运行时< 64 kB RAM即可工作。支持 Windows/Linux/Unix 及 Tcl、C#、PHP、Java、ODBC 等主流语言绑定。在场景下性能优于 MySQL/PostgreSQL;高并发场景则相反。截至 2025 年 6 月,最新稳定版为 3.49.1,项目已持续活跃 25 年。数据库的用途数据的存取。

2025-10-13 21:02:37 1063

原创 Linux应用(7)——多线程服务器设计

多个客户端与一个服务器进行通信,采用多线程是比较容易实现的;多线程服务器框架思路:1.采用链表存放每个客户端的信息,比如IP,多口号,套接字ID等2.服务器代码在主函数的while循环中循环accept函数,连接一个客户就把该客户的信息插入到链表,并创建接收发送线程与客户端进行通信3.在对链表进行操作时需要上锁,防止操作时其他线程对链表进行操作4.当客户端发送"Quit"时结束该客户端线程。

2025-10-03 23:34:31 247

原创 Linux应用(6)——网络通信/TCP/IP

国际标准化组织( ISO)在 1978 年提出了“开放系统互联参考模型”,即著名的 OSI/RM 模型(Open System Interconnection/Reference Model)。

2025-10-01 12:32:47 691

原创 Linux应用(5)——线程通信

线程通信是直接在应用层完成的通信的目的:数据的保护、数据的同步线程间同步:控制多线程执行的先后顺序。线程间保护:多线程之间存在竞争关系(共享数据-临界态),同一时间只允许有限个线程操作某种公共资源。数据保护: 同一时刻只允许一个线程操作被保护的内容,其他线程操作就会进入阻塞数据保护的内容: 一个变量、一段代码、一个函数数据保护是一种保障(类似于买保险)数据保护的流程6.1 创建一种保护机制--在线程创建前6.2 在每个用到保护数据的线程中使用到被保护数据前加保护。

2025-09-16 20:28:58 809

原创 Linux应用(4)——进程通信

主要用于父子进程之间少量的数据传输主要用于任意两个进程之间少量的数据传输管道特性:1.管道是内核层的一种进程通信方式,在内核层是不存在,需要使用前,先创建管道2.管道只有两个端口,是一种单向的数据传输,遵循先进先出的原则 (类比水管)一端: 读端----数据只能从读端出管道 (类似于出口口)另一端:写端----数据只能从写端进入管道(类似于进水口)3.实现写端操作: 还是调取 文件 写函数;实现读端操作: 还是调取 文件 读函数4.读管道特性☆。

2025-09-13 23:37:22 654

原创 Linux应用(3)——进程控制

单进程:一个正在进行/运行的程序多进程:多个正在进行/运行的程序。

2025-09-08 20:31:14 986

原创 Linux应用(2)——标准/目录IO

第一类:C语言阶段操作过的--只能对特殊文件操作第二类:新增的--可以对特殊文件操作,也可以是对普通文件操作。

2025-09-05 22:42:44 900

原创 Linux应用(1)——文件IO

Linux系统输入输出的对象为应用层和驱动层(内核)以应用层为中心,input输入:数据从驱动层/文件进入应用层output输出:数据从应用层到驱动层/文件Linux文件下存在多种io相关api函数读函数:就是输入写函数:就是输出。

2025-09-03 22:39:28 726

原创 FreeRTOS学习笔记之调度机制

在讲解调度原理之前,先看一下STM32内核通用寄存器,Cortex-M3和 Cortex-M4处理器的寄存器组中有16个寄存器,其中13个为32位通用目的寄存器,其他3个则有特殊用途在进行其他的数据处理时,寄存器组中可以临时存储一些数据变量,而无须更新到系统存储器及在使用时将它们读回,这种方式一般被称作“加载一存储架构”通用目的寄存器 R0-R7被称为低组寄存器。所有指令都能访问它们。它们的字长全是 32 位,复位后的初始值是不可预料的通用目的寄存器 R8-R12被称为高组寄存器。

2025-07-23 22:12:32 1120

原创 FreeRTOS学习笔记之内存管理

内存碎片化指的是内存被分割成许多小块,相邻的空闲内存无法合并,虽然总的空闲内存足够,但没有一个连续的空闲块能满足当前分配请求的情况。碎片化分为两种:外部碎片:当空闲内存分散在许多不连续的小块中,导致无法分配较大的连续内存块内部碎片:分配的内存块比实际请求的大,导致块内部分内存未被使用。

2025-07-20 19:02:05 551

原创 FreeRTOS学习笔记之软件定时器

在调用函数 vTaskStartScheduler()开启任务调度器的时候,系统会自主创建。

2025-07-19 22:49:27 883

原创 FreeRTOS学习笔记之队列

队列是为了任务与任务、任务与中断之间的通信而准备的,可以在任务与任务、任务与中断之间消息传递,队列中可以存储有限的、大小固定的数据项目。通常队列采用先进先出的存储缓冲机制(FIFO)往队列中发送数据称为入队,从队列中读取数据称为出队FreeRTOS中队列是通过值传递(默认)进行存储的,如果大数据的时候,也可以通过数据引用(只传递数据的指针)进行存储队列不属于某个任务,任何任务与中断都可以向队列读取/发送数据。

2025-07-19 20:05:49 1142 1

原创 FreeRTOS学习笔记之任务调度

FreeRTOS 的任务(Task)是其核心概念之一,本质上是一个独立的线程或执行单元。每个任务都有自己的执行上下文(堆栈、寄存器值等),并能在 FreeRTOS 内核的调度下,以协作式或抢占式方式运行而言,CPU 在同一时刻只能够处理一个任务,但是多任务系统的任务调度器会根据相关的任务调度算法,将 CPU 的使用权分配给任务,在任务获取 CPU 使用权之后的极短时间(宏观角度)后,任务调度器又会将 CPU 的使用权分配给其他任务,如此往复,在宏观的角度看来,就像是多个任务同时运行了一样。

2025-07-16 18:02:18 1076

原创 STM32F103之存储/启动流程

STM32单片机内部的FLASH为 NOR FLASH。Flash 相对容量大,掉电数据不丢失,主要用来存储代码,以及一些掉电不丢失的用户数据;内部的 RAM 为 SRAM。无需刷新,功耗较低,RAM相对容量小,速度快,掉电数据丢失,其作用是用来存取各种动态的输入输出数据、中间计算结果以及与外部存储器交换的数据和暂存数据。STM32大容量flash。

2025-07-11 23:01:55 1267

原创 STM32F103之ModBus\RS232\RS422\RS485

RS-232 是美国电子工业协会EIA制定的一种串行物理接口标准。全称是 “数据终端设备(DTE)和数据通信设备(DCE)之间串行二进制数据交换接口技术标准”。RS(Recommended Standard)是英文“推荐标准”的缩写,232为标识号接口特性常用的串口接头有两种,一种是9针串口(简称DB-9),一种是25针串口(简称DB-25)。RS-232C标准接口有25条线,其中,4条数据线、11条控制线、3条定时线以及7条备用和未定义线。那么,这些信号线在9针串口和25针串口的管脚上是如何分配的呢?

2025-07-10 23:11:27 1248

原创 STM32F103之CAN总线

CAN总线(Controller Area Network Bus)控制器局域网总线,由BOSCH公司开发的一种简介易用、传输速度快、易扩展、可靠性高的通信总线,广泛应用于汽车、嵌入式、工业控制等领域特点:<1>两根通信线(CAN_H,CAN_L),线路少,无需共地;<2>差分信号通信,抗干扰能力强<3>高速CAN(ISO11898):1125k~1Mbps,<40m<4>低速CAN(ISO11519):10k~125kbps,<1km(无需时钟线,通信速率设备各自约定),

2025-07-09 20:04:20 1729

原创 STM32F103之硬件I2C读写MPU6050

1>STM32内部集成了硬件I2C收发电路,可以由硬件自动自行时钟生成、起始终止条件生成、应答为收发、数据收发功能,减轻CPU的负担<2>支持对主机模型<3>支持7位/10位地址模型<4>支持不同的的通信速度,标准速度(),快速(),高速(),速度向下兼容<5>支持DMA<6>兼容SMBus协议<7>一般用于低速外设通信<8>SDA上电平只在时钟的高电平周期有效。

2025-07-03 17:19:20 759

原创 STM32F103之软件模拟I2C读写MPU6050/AT24C02

3.1 简介<1>MPU6050是一个六轴姿态传感器,可以测量芯片自身的X\Y\Z轴的加速度、角速度参数,通过数据融合,可以进一步得到姿态角,常应用于平衡车、飞行器等需要检测自信姿态的场景<2>3轴加速度计(Accelerometer),测量X、Y、Z轴的加速度(加速度计具有静态稳定性,不具有动态稳定性)<3>3轴陀螺仪传感器(Gyroscope),测量X、Y、Z轴的角速度(陀螺仪计具有动态稳定性,不具有静态稳定性电路图MPU6050 原理图引脚定义。

2025-07-01 20:59:57 1188

原创 STM32F103之UART上位机通信

通用同步异步收发器(USART:Universal Synchronous/Asynchronous Receiver/Transmitter):串行、全双工、同步/异步通信(USART可支持同步通信,UART只支持异步通信)发送和接收共用的可编程波特率可编程数据字长度(8位或9位)(常用8位)可配置的停止位-支持1或2个停止位(常用1位停止位)可配置奇偶校验位(一般不用)

2025-06-30 17:01:52 849

原创 STM32F103之SPI软件读写W25Q64

W25Q64(Nor flash)、 24位地址,64Mbit/8MByte、是一种低成本、小型化、使用简单的非易失性存储器,常用于数据存储、字库存储、固件程序存储等场景时钟频率:最大80MHz(STM32F103系统时钟为72MHz)、160MHz(MOSI,MISO同时发送,同时接受)、320MHz(将引脚DO、DI、WP、HOLD同时接收或发送)WP: 写保护,低电平有效,当为低电平时,不可写HOLD:数据保持、低电平有效;

2025-06-28 18:48:01 1950

原创 STM32F103之SPI硬件读写W25Q64

SPI(Serial Peripheral Interface)串行外设接口总线(SPI)最早由Motorola首先提出,采用主从模式(Master—Slave)架构,支持一个或多个Slave设备;广泛应用于MCU和外设模块如E2PROM、ADC、显示驱动器等的连接。<1>通信接口特性:半/全双工、同步、串行<2>SPI通信接口有4个引脚:MOSI,MISO,SCLK,NSSMOSI(Master Out Slave In):主机输出从机输入(发送端口) - USART_TX(相当于)

2025-06-27 16:14:24 1351

原创 STM32F103之低功耗

STM32微控制器低功耗设计摘要 STM32系列MCU为电池供电设备提供了完善的低功耗解决方案。硬件方面,推荐使用STM32L系列,其待机电流低至300nA;通过多电源域设计、低功耗外设和优化电源电路(如LDO、DC-DC转换器)可显著降低功耗。软件优化包括动态调节时钟频率、使用低功耗外设模式和事件驱动架构。STM32提供三种低功耗模式:睡眠模式(保留所有外设,唤醒时间最短)、停机模式(关闭时钟,保留SRAM)和待机模式(最低功耗,相当于复位)。不同模式下唤醒源和功耗特性各异,开发者需根据应用场景(如传感器

2025-06-25 23:39:22 1214

原创 STM32F103之独立看门狗/窗口看门狗

1>能产生复位信号和提前唤醒中断的7位递减计数器<2>时钟源来自于系统总线时钟<2>复位条件①计数器从0x40减到0x3F时会产生复位(即CNT的第6位变为0时)②计数器的值大于W[6:0]的值时喂狗③提前唤醒中断(EWI): 当计数器等于 0x40时可产生在窗口期内进行重装载计数器的值,防止复位用于监测单片机运行程序是否精准,主要用于检测软件异常需要精准监测程序运行时间的场合。

2025-06-23 20:51:34 1228

原创 STM32F103之UART+ADC+DMA(从0到1)

目前想要通过上位机的串口助手向板子发送格式为“0xAA+指令类型+指令+0XFF”的数据,指令类型包括设置指令与获取指令,设置指令就是设置LED的开关等,获取指令就是获取ADC转换的值;要求:①上位机发送的指令通过DMA给到板子;②ADC转换的值通过DMA搬运到内存,当得到获取指令后,DMA将ADC转换的值搬运UART_Tx,并在串口助手上输出;

2025-06-22 13:15:34 1411

原创 STM32F103之DMA+ADC

DMA:直接存储器存取(Direct Memory Access)用来提供在外设和存储器之间或者存储器和存储器之间的高速数据传输。无须CPU干预,数据可以通过DMA快速地移动,这就节省了CPU的资源来做其他操作。两个DMA控制器有12个通道(DMA1有7个通道, DMA2有5个通道),每个通道专门用来管理来自于一个或多个外设对存储器访问的请求。还有一个仲裁器来协调各个DMA请求的优先权。

2025-06-19 21:31:14 1517

原创 STM32F103之位段操作

在STM32(基于ARM Cortex-M内核)中,位带(Bit-Banding)/位段是一种通过内存映射实现对单个比特位进行原子操作的硬件机制。它允许开发者直接读写寄存器或内存中的单个比特位,而无需执行传统的“读-修改-写”操作(避免多任务/中断环境下的竞争风险)对于Cortex-M内核来说,可以进行位段操作的存储器区有两个:<1>SRAM位段①位段区 0x20000000--0x20100000②位段别名区 0x22000000--0x23FFFFFF<2>外设位段。

2025-06-18 12:20:21 879

原创 STM32F103之sg90舵机

SG90是一款(9g指重量约9克),由公司生产,是电子制作、机器人、航模等领域最常用的经济型舵机之一。

2025-06-16 22:07:17 523

原创 STM32F103之ADC--电位器/内部温度

ADC即模数转换器(Analog-to-Digital Converter),是一种将连续的模拟信号转换为离散的数字信号的电子设备。在现实世界中,诸如温度、声音、光线强度等物理量通常以模拟信号的形式存在,而计算机、数字信号处理器等数字系统只能处理数字信号。ADC的作用就是搭建起模拟世界与数字世界之间的桥梁,使得这些模拟信号能够被数字系统识别、存储、处理和分析。

2025-06-15 23:04:29 1419

原创 STM32F103之(HC-SR04)超声波测距--四种方法

HC-SR04超声波测距模块可提供2cm-400cm的非接触式距离感测功能,测距精度可达高到3mm;模块包括超声波发射器、接收器与控制电路。

2025-06-14 23:19:21 1901

原创 STM32F103之PWM实现呼吸灯

本文用通用定时器(TIM2~TIM5)比较输出PWM实现呼吸灯的效果,

2025-06-11 23:45:16 541

原创 STM32F103之定时器(TIM2~TIM5)

stm32f103共有八个定时器,高级定时器(TIM1,TIM8);基本定时器(TIM6,TIM7);通过定时器(TIM2~TIM5);本章重点讲解通用定时器的时钟模式,捕获输入,比较输出。

2025-06-10 21:01:19 2269

原创 STM32F103之定时器(TIM6,TIM7)

STM32F103的定时器分为基本定时器(TIM6-7)、通用定时器(TIM2-5)和高级定时器(TIM1,8),均采用72MHz时钟。基本定时器仅支持递增计数,包含16位自动装载计数器、预分频器和时基单元。使用时需配置预分频器(PSC)和自动重装载寄存器(ARR),并通过手动产生更新事件(设置UG位)将值加载到影子寄存器。定时器溢出时会触发中断,需清除UIF标志位。代码实现包括时钟使能、时基初始化、影子寄存器配置、事件生成和中断设置等步骤。基本定时器常用于DAC触发和时间基准功能。

2025-06-07 17:03:03 1850 1

CAN通信+回环测试+中断

CAN通信+回环测试+中断

2025-07-09

软件I2C读写EEPROM

可以跨页读写

2025-07-04

硬件I2C读写MPU6050

增加了看门狗机制

2025-07-03

STM32F103之软件模拟I2C读写MPU6050

代码很详细,其中添加了读取温度传感器数值,利用结构体指针进行数据传递

2025-07-01

STM32F103之UART上位机通信

代码中添加了UART接收中断与空闲中断,同时还定义了printf()函数

2025-06-30

硬件SPI读写W25Q64

在该文件中,添加了跨页写入W25Q64以及寄存器禁用指定块,切实可行,非常好用

2025-06-29

STM32F103之UART+ADC+DMA(从0到1)

STM32F103之UART+ADC+DMA(从0到1),通过读取内部温度传感器,通过DMA搬运到UART

2025-06-28

STM32F103之SPI软件读写W25Q64

STM32F103之SPI软件读写W25Q64,只需要根据自己板子上的引脚修改一下,非常好用!!

2025-06-28

空空如也

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

TA关注的人

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