自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 STM32标准库-I2C通信

本文介绍了I2C通信协议及其在MPU6050传感器中的应用。I2C采用双线制(SCL时钟线、SDA数据线)实现主从设备间通信,具有多主多从、硬件简单等特点。文章详细解析了I2C的时序单元(起始/停止信号、数据有效性、应答机制)和硬件结构(移位寄存器、地址匹配、时钟控制等模块)。以STM32为例展示了硬件I2C的初始化及主机发送流程代码。MPU6050部分重点说明其集成三轴加速度计/陀螺仪的硬件电路和内部框图,传感器数据经ADC转换后通过I2C接口传输。全文通过时序图、电路图与代码相结合,系统阐述了I2C通信

2025-06-17 23:58:40 1080

原创 STM标准库-串口

串口通信是单片机扩展硬件系统的重要接口,本文介绍了串口通信的基本原理和USART外设的应用。主要内容包括:串口通信的硬件电路、电平标准(TTL、RS232、RS485)、数据帧结构(波特率、起始位、数据位等)。USART作为STM32内置硬件外设,支持同步/异步通信,最高速率4.5Mbps,可配置数据格式。通过示例代码展示了串口发送数据的方法,包括字节发送、数组发送、字符串发送以及三种实现printf功能的方案(重定向、sprintf封装、专用printf函数)。实验采用USART1(PA9/PA10引脚)

2025-06-12 23:59:04 852

原创 STM32标准库-DMA直接存储器存取

DMA(直接存储器存取)是一种无需CPU干预的高速数据传输技术,主要用于外设与存储器或存储器间的数据搬运。STM32F103C8T6内置DMA1控制器,提供7个独立通道,支持硬件/软件触发。DMA架构包含外设端、传输控制层和存储器端三部分,核心特性包括方向控制、传输计数器、自动重装(循环模式)和M2M(存储器间传输)功能。数据转运示例中,DMA将源数组DataA的数据自动搬运到目标数组DataB,显著降低CPU负荷。通过配置地址、数据宽度和地址自增等参数,可实现高效数据传输,尤其适用于ADC扫描模式等持续采

2025-06-10 23:59:10 652

原创 STM32标准库-ADC数模转换器

本文介绍了STM32微控制器的ADC(模数转换器)模块及其单通道应用实现。主要内容包括:ADC的基本结构和工作原理,逐次逼近型ADC的工作机制,转换模式、触发控制、校准等关键功能。通过单通道示例展示了硬件接线和软件实现,包括初始化设置、GPIO配置、数据对齐转换及电压计算。代码部分提供了完整的AD初始化和数据获取函数,实现模拟信号到数字量(0-4095)的转换,并线性映射为0-3.3V电压值显示。文档配有结构框图与示意图,清晰呈现信号处理流程和各模块协同关系。

2025-06-09 23:39:08 1547

原创 STM标准库-TIM旋转编码器

STM32编码器接口技术摘要编码器接口是STM32定时器的重要功能,能够自动处理正交编码器信号。高级和通用定时器均支持该功能,通过输入捕获通道接收AB相正交信号,硬件自动判断方向并增减计数器。工作模式包括单相计数和双相计数,支持信号反相配置。实际应用中需注意定时器选择和引脚分配,TIM3因其通用性常被优先选用。STM32提供丰富的API接口,包括模式配置、计数器操作、方向判断和中断处理等功能。典型测速方案通过定时中断采样计数器增量实现,具有硬件自动处理、节省CPU资源的优势。

2025-06-08 23:59:58 1277

原创 STM32标准库-输入捕获

输入捕获(IC)是STM32定时器的重要功能,用于测量信号频率、占空比等参数。通过捕获输入信号的边沿触发,将计数器值锁存到CCR寄存器。测频法和测周法分别适用于高频和低频信号测量。输入捕获可配置为PWMI模式,结合主从触发模式实现硬件全自动测量。代码示例展示了TIM3的输入捕获初始化流程,包括GPIO配置、时基单元设置、触发源选择等,最终通过测周法计算信号频率。该功能减轻了软件负担,提高了测量效率。(全文共150字,准确概括了输入捕获的原理、工作模式、硬件配置和代码实现,重点突出其硬件自动测量的优势。)

2025-06-07 23:57:55 645

原创 STM32标准库-TIM输出比较

本文介绍了PWM(脉宽调制)的基本原理与应用。主要内容包括:1)PWM的结构与工作原理,通过时基单元(PSC、CNT、ARR)控制频率,输出比较单元(CCR)调节占空比;2)舵机和直流电机的驱动方式,包括硬件电路和控制逻辑;3)参数计算公式,如频率= CK_PSC/(PSC+1)(ARR+1),占空比=CCR/(ARR+1);4)基于STM32实现LED呼吸灯的示例代码,展示了PWM初始化和配置过程。PWM广泛应用于电机调速、LED调光等领域,通过调节占空比实现对设备的精确控制。

2025-06-06 23:26:40 1334

原创 STM32标准库-TIM定时器

- TIM(Timer)定时器 - 定时器可以对输入的时钟进行计数,并在计数值达到==设定值时触发中断== - 16位计数器、预分频器、自动重装寄存器的时基单元,在72MHz计数时钟下可以实现最大59.65s的定时 - 不仅具备基本的定时中断功能,而且还包含内外时钟源选择、输入捕获、输出比较、编码器接口、主从触发模式等多种功能 - 根据复杂度和应用场景分为了高级定时器、通用定时器、基本定时器三种类型定时器定时中断 定时器外部中断

2025-06-04 02:58:46 1376

原创 STM32标准库-EXTI外部中断

本文主要介绍了STM32微控制器的中断系统及其应用。首先阐述了中断概念、优先级机制和嵌套流程,重点讲解STM32的68个可屏蔽中断通道及其NVIC管理方式。随后详细解析了EXTI外部中断系统,包括其结构组成、触发方式以及通过AFIO进行引脚映射的原理。文章还介绍了旋转编码器的工作原理和硬件电路,并以对射式红外传感器计次为例,展示了如何配置GPIO为中断输入、设置EXTI参数以及编写中断服务程序的完整实现。通过NVIC优先级分组管理和中断响应机制,实现了传感器信号的准确检测与计数。

2025-06-03 01:30:00 1658 1

原创 STM32标准库-OLED调试

0.96寸OLED模块驱动实践摘要本文介绍了OLED显示屏的基本特性及其在STM32平台上的驱动实现方法。OLED作为新型显示技术,具有低功耗、高响应速度和柔性显示等优势。文章详细展示了硬件连接电路图、I2C通信的引脚配置方法,并提供了完整的OLED驱动函数库。通过STM32F10x系列单片机控制,实现了字符、字符串、数字等多种信息的显示功能。调试可采用串口、显示屏或Keil软件三种方式。文末附有包含初始化、数据发送和显示功能的示例代码,以及具体的引脚定义和初始化设置,为OLED模块的快速开发提供了完整参

2025-06-02 01:45:00 480

原创 STM标准库-GPIO输入

STM32 GPIO输入模式及按键控制摘要:本文介绍了STM32的4种GPIO输入模式:浮空输入(无内部电阻)、上拉输入(默认高电平)、下拉输入(默认低电平)和模拟输入(ADC专用)。重点讲解了按键输入原理,包括按键抖动现象及其硬件消抖电路设计。通过具体示例展示了按键控制LED的实现方法,包含完整的GPIO初始化配置(上拉输入模式)、按键检测逻辑(含20ms消抖延时)以及C语言数据类型定义等关键代码。文章还涉及传感器模块的工作原理(电阻分压+电压比较器)和常用C语言编程技巧(宏定义、typedef、结构体

2025-06-01 02:07:00 962

原创 STM32标准库-GPIO及输出

STM32 GPIO应用技术摘要本文介绍了STM32微控制器的GPIO(通用输入输出)模块及其应用。GPIO模块作为基本外设接口,具有8种可配置模式,包括4种输入模式(浮空/上拉/下拉/模拟)和4种输出模式(开漏/推挽及其复用功能)。通过APB2总线与CPU连接,GPIO可实现高速数据传输。文章详细分析了GPIO的硬件结构,包括输入路径的施密特触发器和输出路径的MOS驱动电路。此外,还给出了LED控制(推挽输出模式)和蜂鸣器驱动的实际应用示例,包括初始化配置代码和硬件电路设计。特别说明了不同模式的应用场景

2025-05-31 01:37:05 1314

原创 STM32标准库入门简介、工程建立

STM32F103C8T6微控制器开发套件包含调试通信、输入输出、传感器、存储器、显示及电机驱动等模块,支持多种通信协议和外设控制。ARM架构广泛应用于智能设备,STM32基于Cortex-M内核,具有丰富外设资源和低功耗特性。STM32F103C8T6采用72MHz主频,64KB Flash和20KB SRAM,包含GPIO、定时器、ADC/DAC、通信接口等功能模块,通过总线矩阵和DMA实现高效数据传输。系统结构包含核心处理器、存储、时钟控制及各类外设接口,引脚定义涵盖电源、复位、晶振及多功能GPIO等

2025-05-29 01:28:30 1166

原创 linux开发环境

2.改变分辨率 xrandr -s 分辨率3.:放大字体减小字体4.清屏ifconfig 查看当前网卡的状态 IP地址。

2025-04-08 23:53:26 414 1

原创 C语言:几种字符串常用的API

1. strlen - 计算字符串长度 2.strcpy - 复制字符串 3. strncpy - 复制指定长度的字符串 4. strcat - 连接字符串 5. strncat - 连接指定长度的字符串 6. strcmp - 比较字符串 6. strcmp - 比较字符串 7. strncmp - 比较指定长度的字符串 8.strchr 查找子字符9. strstr - 查找子字符串 10.assert-断言11.strtok -字符串分割

2025-04-07 00:00:00 769

原创 C语言:字符串

字符数组形式 字符指针形式  字符数组的存储方式和整型数组在存储上的区别  1. 使用 malloc 函数动态开辟字符串 2. 使用 calloc 函数动态开辟字符串3.free C 库函数 void free(void *ptr) 释放之前调用 calloc、malloc 或 realloc 所分配的内存空间。 void *memset(void *str, int c, size_t n) 是 C 语言标准库 <string.h> 中的一个函数,用于将一段内存区域的每个字节都设置为指定的值。

2025-04-05 00:12:35 1015

原创 C语言:指针数组、函数、二级指针

指针数组是一个数组,数组中的每个元素都是指针。这些指针可以指向各种类型的数据,如整数、字符、结构体等,甚至可以指向其他数组或函数。指针函数本质上是一个函数,只不过它的返回值是一个指针。这个指针可以指向各种类型的数据,如整数、字符、结构体等。一级指针:普通指针是指向某个变量的内存地址的变量。例如int a = 10; int *p = &a;,这里p是一级指针,存储变量a的地址。二级指针:二级指针是指向一级指针的指针。它存储的是一级指针的内存地址。比如int **pp = &p;,pp就是二级指针,它指向一

2025-04-02 00:00:00 2339

原创 C语言:数组、函数指针

数组指针是指向数组的指针,它指向的是一个数组,而不是数组中的某个元素。也就是说,数组指针保存的是数组的起始地址,并且它的类型与所指向的数组类型相匹配。函数指针是指向函数的指针变量。和普通指针不同,普通指针指向的是数据对象(如整数、字符等),而函数指针指向的是函数的代码块起始地址。借助函数指针,你可以在程序运行时动态地调用不同的函数。

2025-04-01 01:07:14 1882

原创 C语言:指针与二维数组

a[0]+1= *(a+0)+1第0行第一列的地址,是地址的意思。而第0个子数组的第1个元素表示方式是a[0][1],不要乱。也可以说是第0个子数组的第1个元素的地址。2. 指针与二维数组。

2025-03-31 00:00:00 452

原创 C语言:指针引用数组

让指针逐一向后移动,每次指向数组下一个元素,配合。练习 : 将数组中的n个元素按逆序存放。解引用获取当前元素值,实现数组遍历。见怪不怪:指针当作数组名,下标法访问。练习:函数封装数组初始化,遍历。定义一个指针变量指向数组。依下标访问元素并输出。通过指针引用数组元素。指针增量和数组的关系。

2025-03-30 00:00:00 293

原创 C语言:指针

练习: 输入三个数a,b,c;要求不管怎么输入,在输出的时候,a,b,c就是由大到小的顺序输出,用函数封装实现。指针是一种变量,它存储的是另一个变量的内存地址。通过指针,你可以直接访问和修改该内存地址上存储的数据。利用指针作为参数,实现了两个整数变量值的交换。* 将地址内的值读出运算符。练习:指针指向固定的区域。

2025-03-29 00:00:00 583

原创 C语言:函数与数组名

在 C 语言中,数组作为函数参数传递是常见的操作,不过与其他数据类型的参数传递有所不同。下面详细介绍数组作为函数参数的相关内容。

2025-03-28 00:00:00 461

原创 C语言:函数的调用

在 C 语言中,函数调用是程序执行过程里的关键环节,它能让程序模块化,增强代码的复用性与可维护性。下面我会详细介绍函数调用的各个方面。 局部变量     形式参数和实际参数函数的嵌套调用 函数的递归调用、递归法求阶乘

2025-03-27 00:00:00 965

原创 C语言:函数的定义

返回值类型 函数名(参数列表) {// 函数体语句;return 返回值;返回值类型:指定函数返回值的类型,像intfloatvoid等。如果函数不返回任何值,返回值类型就用void。函数名:要符合 C 语言标识符的命名规则,是用来标识这个函数的名称。参数列表:列出函数需要接收的参数,多个参数之间用逗号分隔。每个参数都要指定数据类型和参数名。如果函数不需要参数,参数列表可以为空。函数体:由一系列语句组成,是函数的具体实现代码。return语句:用于返回函数的结果。如果返回值类型是void。

2025-03-26 00:00:00 446

原创 C语言:二维数组

数据类型 数组名[行数][列数];数据类型:表示数组中元素的类型,例如intfloatchar等。数组名:是自定义的数组名称,要符合 C 语言标识符的命名规则。行数(column):指定二维数组有多少行。列数(row):指定二维数组每一行有多少列。2.c语言是特殊的一维数组。

2025-03-25 01:03:25 692

原创 C语言:斐波那契、冒泡、简单排序

斐波那契数列是一个经典的数列,其特点是从第三项开始,每一项都等于前两项之和,即,其中arriarrSizesizeofarrarrSizearr[0]arr[1]for。    对数组进行降序排序并输出排序后数组元素的功能,采用的排序算法是冒泡排序。对数组进行排序的功能,具体使用的是选择排序算法。

2025-03-24 23:57:42 1852

原创 C语言:数组引入及基本用法

在 C 语言中,当需要处理一组相同类型的数据时,数组就派上用场了。如果使用多个独立变量来存储这些数据,会导致代码冗长且难以维护,而数组可以将这些数据组织在一起,便于管理和操作。

2025-03-22 00:19:28 300

原创 C语言:嵌套循环输出

2.水仙花数(Narcissistic number)也被称为超完全数字不变数、自恋数、自幂数、阿姆斯壮数或阿姆斯特朗数。严格意义上,它是指一个三位数,步骤是:用较大数除以较小数,然后把除数当被除数,余数当除数,重复直到余数为 0,此时除数就是最大公约数。就是水仙花数,因为1³ + 5³ + 3³ = 1 + 125 + 27 = 153。循环,外层循环控制行数,内层循环控制每行的列数,将每行的。相乘的结果输出,并且每行输出完毕后进行换行操作。其每个数位上的数字的 3 次幂之和等于该数本身。

2025-03-21 23:59:12 332

原创 C语言:循环break和continue编码分析

break能完全终止循环,不再执行循环体中剩余的代码,也不会再进行后续的循环迭代。continue:仅跳过当前循环中 continue语句之后的代码,然后继续进行下一次循环迭代。

2025-03-21 01:37:43 364

原创 C语言:while

在 C 语言中,while是一种循环控制语句,用于重复执行一段代码,直到指定的条件不再满足为止。

2025-03-20 23:45:33 536

原创 C语言:流程控制之switch语句

在 C 语言里,switch语句属于多分支选择语句,它能依据一个表达式的值来执行不同的代码块。

2025-03-20 00:51:01 852

原创 C语言:流程控制之if语句

if语句 if嵌套 if 语句

2025-03-19 02:48:55 637

原创 C语言:其他输入

C语言:其他输入

2025-03-18 01:27:51 238

原创 C语言基础:scanf的用法

C语言基础:scanf的用法

2025-03-18 01:08:25 569

原创 C语言基础:printf的用法

C语言基础:printf的用法

2025-03-17 01:56:58 218

原创 在cmd命令提示符中到达指定路径或文件夹

在cmd命令提示符中到达指定路径或文件夹

2025-03-14 00:25:53 1227

空空如也

空空如也

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

TA关注的人

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