自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 stm32之硬件SPI读写W25Q64存储器应用案例

本案例使用硬件SPI外设通信的方式实现了STM32与W25Q64 Flash存储器的通信,完成了常见的Flash存储器操作如读ID、页写、扇区擦除、读取数据等。

2024-09-10 09:53:04 1352

原创 stm32之SPI通信外设

本文主要探讨stm32之SPI通信外设的相关概念以及基本结构等,最后详细地分析了SPI外设的时序,为进一步学习SPI通信打下基础。

2024-09-09 09:53:36 838

原创 stm32之软件SPI读写W25Q64存储器应用案例

本案例使用软件SPI通信的方式实现了STM32与W25Q64 Flash存储器的通信,完成了常见的Flash存储器操作如读ID、页写、扇区擦除、读取数据等。

2024-09-06 09:16:40 1873

原创 stm32之SPI通信协议

本文主要探讨SPI通信协议。关于SPI通信的内容我主要会分为两大块来讲,第一块,就是介绍协议规则,然后用软件模拟的形式来实现协议。第二块,就是介绍stm32的SPI外设,然后用硬件来实现协议。

2024-09-05 15:02:20 1439

原创 stm32之硬件I2C读写MPU6050陀螺仪、加速度传感器应用案例

本案例实现了一个stm32使用硬件I2C外设通信读写MPU6050陀螺仪、加速度传感器的功能,最终我们将MPU6050的实时数据显示在了OLED上。OLED最上面显示的是设备ID号,左下角三个是加速度传感器的输出数据,分别为X轴、Y轴和Z轴的加速度。右边三个是陀螺仪传感器的输出数据,分别为X轴、Y轴和Z轴的角速度。当我们改变MPU6050传感器的姿态这六个数据就会相应地变化。

2024-09-02 15:11:12 1125

原创 stm32之I2C通信外设

本文主要探讨stm32之I2C外设相关概念以及基本结构等,最后详细地分析了I2C外设的读写时序。

2024-09-02 09:53:10 1124

原创 stm32之软件I2C读写MPU6050陀螺仪、加速度传感器应用案例

本案例实现了一个stm32使用软件I2C通信读写MPU6050陀螺仪、加速度传感器的功能,最终我们将MPU6050的实时数据显示在了OLED上。OLED最上面显示的是设备ID号,左下角三个是加速度传感器的输出数据,分别为X轴、Y轴和Z轴的加速度。右边三个是陀螺仪传感器的输出数据,分别为X轴、Y轴和Z轴的角速度。当我们改变MPU6050传感器的姿态这六个数据就会相应地变化。

2024-08-30 11:25:29 1819

原创 计算机常见运算之左移操作、右移操作以及按位与、按位或

本文主要探讨计算机中一些常见的运算,比如左移操作(),按位与 (&) 、按位或 (|),最后通过一个例子结合按位与和右移操作实现获取一个字节中所有位的功能。

2024-08-29 18:13:13 1283

原创 stm32之I2C通信协议

本文主要探讨I2C通信协议。关于I2C通信的内容我主要会分为两大块来讲,第一块,就是介绍协议规则,然后用软件模拟的形式来实现协议。第二块,就是介绍stm32的I2C外设,然后用硬件来实现协议。因为I2C是同步时序,软件模拟协议也是非常方便,目前也存在很多软件模拟I2C的代码,所以我们先学习软件I2C,再学习硬件I2C。

2024-08-26 16:59:15 1175

原创 USART之串口发送+接收应用案例

本案例实现了一个stm32之USART串口发送与接收的功能。本文主要目的是想借着这个例子学习一下USART的配置以及使用,更多功能完善的串口代码放在文章最后,各位可自行根据需求获取。

2024-08-25 10:27:43 1111

原创 STM32之USART

本文主要探讨stm32内部集成的用于串口通信的硬件外设–USART通用同步/异步收发器。

2024-08-24 17:08:01 1023

原创 TIM输出比较之PWM驱动舵机应用案例

本案例利用输出占空比可调的PWM波形来驱动舵机,实现了一个通过按键控制舵机按照一定的角度与方向进行转动的功能。另外OLED上也显示了当前的角度,每按一下,角度变量就变一次,舵机也会随即跟随变化到的角度固定下来。

2024-08-23 09:48:31 1000

原创 TIM输出比较之PWM驱动直流电机应用案例

本案例实现了一个利用输出占空比可调的PWM信号来驱动直流电机的功能。每按一次按键电机按照增量或减量的速度正反转动,比如按一下,OLED上显示当前的速度值为+20,再按一下,+40,以此类推。其中正转显示为+,反转显示为-。

2024-08-23 09:36:57 998

原创 TIM输出比较之PWM驱动LED呼吸灯应用案例

本案例利用输出占空比可调的PWM波形来驱动LED灯,实现了一个LED呼吸灯的效果。

2024-08-22 14:47:55 725

原创 TIM输出比较

本文主要探讨STM32定时器的输出比较功能。它主要是用来输出PWM波形的,PWM波形又是驱动电机的必要条件,我们可以利用这一特性做一些电机相关的项目,比如智能车、机器人等。

2024-08-21 16:57:58 1876

原创 TIM定时中断之定时器定时中断&定时器外部时钟应用案例

本文主要探讨基于TIM定时中断实现定时器定时中断和定时器外部时钟的功能。

2024-08-20 11:38:55 1079

原创 STM32中断系统之TIM定时中断

本文主要探讨STM32中功能最强大、结构最复杂的一个外设 TIM(Timer)定时器,主要包括定时器的基本概念、分类以及定时中断基本结构等,本文还对基本定时器、通用定时器以及高级定时器的内部结构进行了详细的分析,为更好地理解与使用定时器打下了坚实的基础。

2024-08-19 14:57:55 1672

原创 EXTI外部中断之对射式红外传感器计次应用案例

本文主要探讨利用EXTI外部中断实现一个对射式红外传感器计次的功能。

2024-08-14 14:40:28 881

原创 STM32中断系统之EXTI外部中断

本文主要探讨STM32中断系统、NVIC以及EXTI外部中断相关概念。中断系统是管理和执行中断的逻辑结构,外部中断是众多能产生中断的外设之一,本章节就借助外部中断来学习一下中断系统。

2024-08-13 10:03:52 1478

原创 stm32程序调试方式(OLED显示屏调试以及Keil调试模式)

本文主要介绍stm32程序的调试方法(OLED显示屏调试以及Keil调试模式)。

2024-08-09 10:31:57 1097

原创 GPIO输入模式之按键控制及光敏传感器控制应用案例

本文主要探讨stm32的GPIO输入模式,最后通过两个简单的应用案例(按键控制LED以及光敏传感器控制蜂鸣器)实现了GPIO输入状态的监测。

2024-08-08 11:27:10 1209

原创 GPIO输出控制之LED闪烁、LED流水灯以及蜂鸣器应用案例

本文主要探讨stm32的GPIO输出控制模式,最后通过几个简单的应用案例(LED闪烁、LED流水灯以及蜂鸣器)实现了GPIO的输出控制功能。

2024-08-06 17:35:50 1098

原创 三极管(NPN型、PNP型)工作原理

本文主要探讨三极管的基本概念以及NPN型、PNP型三极管的特性与工作原理。

2024-08-06 14:47:47 1514

原创 STM32之GPIO(General Purpose Input/Output,通用型输入输出)

本文主要探讨stm32中GPIO的相关概念以及stm32内部的GPIO外设。

2024-08-05 10:28:46 1480

原创 计算机中常见的几种进制转换(二进制、十进制、十六进制)

本文主要探讨计算机中常见的几种进制转换(二进制、十进制、十六进制)。

2024-08-02 10:10:13 1223

原创 STM32入门常识汇总

本文主要用作STM32入门一些基本常识汇总,本文持续更新中 …

2024-07-29 18:33:16 870

原创 使用 Keil5 基于标准库新建工程通过操作GPIO实现点灯操作

本文主要探讨如何使用 Keil5 软件新建一个工程以及如何编译下载程序到开发板的详细步骤,最后通过两种不同的方式(基于寄存器、基于标准库)实现了通过操作GPIO进行点灯操作。

2024-07-29 15:45:37 837

原创 安装Keil5 MDK

本文主要记录Keil5软件以及相关驱动的安装步骤。

2024-07-28 14:58:12 777

原创 STM32简介

本文主要探讨STM32和ARM处理器的相关概念以及简单地介绍了一下STM32F103C8T6这块芯片的相关外设等,为进一步学习STM32打下基础。

2024-07-26 16:00:25 1130

原创 使用libmosquitto进行MQTT协议应用开发案例

本文主要介绍 linux下使用 libmosquitto 进行 MQTT应用开发,最后通过一个应用案例实现一个发布以及订阅的功能,你可以根据现有的框架进行扩展。

2024-07-24 16:33:48 1502 2

原创 MQTT(Message Queuing Telemetry Transport,消息队列遥测传输)协议

本文主要介绍 MQTT 相关概念以及 MQTT Broker 服务器的搭建步骤。

2024-07-24 16:29:04 1220

原创 C++ STL常用容器之map(关联容器)

本文主要介绍C++ STL常用容器之map(关联容器)的相关概念以及用法。

2024-07-16 11:06:21 1253

原创 RAM和ROM的区别

本文主要探讨RAM和ROM的相关概念以及他们之间的区别。

2024-07-15 10:18:17 436

原创 Bootloader和U-Boot的区别

本文主要探讨Bootloader和U-Boot的相关概念以及他们之间的区别。

2024-07-15 10:07:25 561

原创 C++ STL常用容器之vector(顺序容器)

本文主要介绍C++ STL常用容器之vector(顺序容器)的相关概念以及用法。

2024-07-09 17:03:28 1311

原创 C++之STL简介

本文主要介绍一下C++中STL的相关概念

2024-07-09 10:54:52 1124

原创 Linux进程间的通信方式之共享内存 + 信号量

本文主要探讨进程间的通信方式之共享内存+信号量,最后通过一个典型的的生产者与消费者功能场景实现一个进程间数据读写的同步功能。

2024-07-08 16:00:00 666

原创 Linux进程间的通信方式(三)System V 信号量

本文主要探讨 linux 下进程间的通信方式之信号量,最后通过一个简单的示例实现一个父子进程之间操作临界资源使用信号量处理同步与互斥的功能。

2024-07-04 17:48:29 1859 3

原创 C++中虚析构函数的作用

本文主要探讨C++中虚析构函数的作用并结合一个简单的示例代码加以说明。

2024-07-03 11:08:50 554

原创 C++ 中多态的实现

本文主要探讨C++中多态的实现原理并通过一个简单的示例实现多态。

2024-07-02 10:45:21 471

stm32之硬件SPI读写W25Q64存储器

本案例使用硬件SPI外设通信的方式实现了STM32与W25Q64 Flash存储器的通信,完成了常见的Flash存储器操作如读ID、页写、扇区擦除、读取数据等。 接线部分: 如图所示为W25Q64模块硬件接线图,左边是W25Q64模块作为从机,右边是stm32作为主机。本案例选用SPI1外设作为通信,经查阅引脚定义表可知,其中PA4对应主机的从机选择线SPI1_NSS连接到从机的CS引脚,PA5对应主机的时钟同步线SPI1_SCK连接到从机的CLK引脚,PA6对应主机的主机输入从机输出线SPI1_MISO连接到从机的DO引脚,PA7对应主机的主机输出从机输入线SPI1_MOSI连接到从机的DI引脚。最后,W25Q64模块的VCC和GND分别接到stm32的电源正负极进行供电。

2024-09-07

stm32之软件SPI读写W25Q64存储器

本案例实现了一个stm32使用软件SPI通信方式读写W25Q64存储器的功能(W25Q64是一个flash存储器芯片,它内部可以存储8M字节的数据并且是掉电不丢失数据的) 接线方面:接线图所示为W25Q64模块硬件接线图,左边是W25Q64模块作为从机,右边是stm32作为主机。为了方便下一章节硬件SPI的接线,这里直接就选择了SPI1硬件外设的接线方式。其中PA4对应主机的从机选择线SPI1_NSS连接到从机的CS引脚,PA5对应主机的时钟同步线SPI1_SCK连接到从机的CLK引脚,PA6对应主机的主机输入从机输出线SPI1_MISO连接到从机的DO引脚,PA7对应主机的主机输出从机输入线SPI1_MOSI连接到从机的DI引脚。最后,W25Q64模块的VCC和GND分别接到stm32的电源正负极进行供电。

2024-09-05

stm32之硬件I2C读写MPU6050陀螺仪、加速度传感器

本案例实现了一个stm32使用硬件I2C外设通信读写MPU6050陀螺仪、加速度传感器的功能,最终我们将MPU6050的实时数据显示在了OLED上。OLED最上面显示的是设备ID号,左下角三个是加速度传感器的输出数据,分别为X轴、Y轴和Z轴的加速度。右边三个是陀螺仪传感器的输出数据,分别为X轴、Y轴和Z轴的角速度。当我们改变MPU6050传感器的姿态这六个数据就会相应地变化。 在这里,stm32作为主机,MPU6050作为从机,是一主一从的模型。 接线方面,MPU6050模块的VCC和GND分别接到电源的正负极进行供电,SCL接到stm32的PB10口,SDA接到stm32的PB11口。XCL和XDA用于扩展的接口这里暂时用不到就先不接。AD0引脚可用于修改从机地址的最低位,如果有需要可以接上,这里由于模块内置了下拉电阻,所以引脚悬空的话相当于接地。最后INT,中断信号输出脚,我们暂时用不到先不接。 由于本次我们使用的是I2C2外设进行硬件I2C通信,经查阅引脚定义表可知I2C2_SCL接在了PB10,I2C2_SDA接在了PB11上,这个注意不要接错了。

2024-09-01

stm32之软件I2C读写MPU6050陀螺仪、加速度传感器

本案例实现了一个stm32使用软件I2C通信读写MPU6050陀螺仪、加速度传感器的功能,最终我们将MPU6050的实时数据显示在了OLED上。OLED最上面显示的是设备ID号,左下角三个是加速度传感器的输出数据,分别为X轴、Y轴和Z轴的加速度。右边三个是陀螺仪传感器的输出数据,分别为X轴、Y轴和Z轴的角速度。当我们改变MPU6050传感器的姿态这六个数据就会相应地变化。 在这里,stm32作为主机,MPU6050作为从机,是一主一从的模型。 接线方面,MPU6050模块的VCC和GND分别接到电源的正负极进行供电,SCL接到stm32的PB10口,SDA接到stm32的PB11口。XCL和XDA用于扩展的接口这里暂时用不到就先不接。AD0引脚可用于修改从机地址的最低位,如果有需要可以接上,这里由于模块内置了下拉电阻,所以引脚悬空的话相当于接地。最后INT,中断信号输出脚,我们暂时用不到先不接。 由于本次通信使用的是软件模拟I2C,就是用普通的GPIO口手动翻转电平实现的协议,它并不需要stm32内部的外设资源支持,所以这里的端口其实可以任意指定,我们只需要在程序中指定好即可。

2024-08-30

stm32之USART串口收发文本数据包

本案例实现了串口收发文本格式的数据包,通过指定的文本格式数据包实现了简单的人机交互。在PA1上接了一个LED,通过向串口发送以@开头换行符结尾的数据包,中间是命令比如LED_ON,发送之后LED就会点亮,发送LED_OFF指令LED熄灭并返回成功或者失败。如果发送指令有误则会在OLED显示屏上显示错误。

2024-08-25

stm32之USART串口收发HEX数据包

本案例实现一个串口收发一定的HEX格式的数据包,包头FF、包尾FE,中间四个字节的数据。OLED显示屏上显示发送与接收的数据,按一下按键发送指定格式的数据包。

2024-08-25

TIM输出比较之PWM驱动直流电机应用案例

本案例实现了一个利用输出PWM波形来驱动直流电机的功能。每按一次按键电机按照增量或减量的速度正反转动,比如按一下,OLED上显示当前的速度值为+20,再按一下,+40。其中正转为+,反转为-。

2024-08-20

TIM输出比较之PWM驱动舵机应用案例

本案例实现了一个通过按键控制舵机按照一定的角度与方向进行转动的功能。另外OLED上也显示了当前的角度,每按一下,角度变量就变一次,舵机也会随即跟随变化到的角度固定下来。实现原理是利用输出的PWM波形对舵机进行控制。

2024-08-20

TIM输出比较之PWM驱动LED呼吸灯应用案例

在STM32的PA0端口上接一个LED灯,上电后可以看到这个LED正在不断地切换亮度,实现了一个呼吸灯的效果。其实现的基本原理就是通过向这个PA0端口输出一个持续的PWM波形,这样我们就可以让LED不断点亮、熄灭、点亮、熄灭。当点亮、熄灭的频率足够大时,由于LED的余晖和人眼的视觉暂留效应,LED就会呈现出一个中等亮度,当调控点亮和熄灭的时间比例时就能让LED呈现出不同的亮度级别,也就是说可以用通过控制输出的PWM波形的频率或者占空比就能实现该效果。

2024-08-20

TIM定时中断之定时器外部时钟应用案例

本案例实现了一个定时器外部时钟的功能。该程序使用了外部时钟来驱动定时器,我们可以在定时器指定的外部引脚上输入一个方波信号来提供定时器计数的时钟,在这里使用的是对射式红外传感器来手动模拟一个外部时钟。当我们用挡光片依次遮挡、移开、遮挡、移开这样的操作来提供一个方波信号时,可以看到OLED上这个CNT就是定时器中计数器的值。每遮挡移开一次,计数器加1,然后计数器记到9后自动清零,同时申请中断,执行Num++。

2024-08-15

TIM定时中断之定时器定时中断应用案例

本案例实现了一个定时器定时中断的功能。定时器使用内部时钟定了一个1秒的时间,每隔1秒申请一次中断,然后在中断函数里执行Num++,最后在OLED上显示Num。

2024-08-15

EXTI外部中断之旋转编码器计次应用案例

本案例利用EXTI外部中断实现一个旋转编码器计次的功能,当旋转编码器正转时计次+1,反之则-1。

2024-08-14

EXTI外部中断之对射式红外传感器计次应用案例

本案例利用EXTI外部中断实现了一个对射式红外传感器计次的功能,当使用挡光片挡在红外对管的中间,此时输出指示灯熄灭(输出高电平),然后再拿开挡光片,此时输出指示灯亮了(输出低电平)。在灭到亮之间会产生一个下降沿,这个下降沿触发单片机引脚的外部中断,然后执行数字加1的中断程序。如此类推,实现了对挡光次数的统计并显示在OLED显示屏上。

2024-08-13

OLED显示屏驱动代码及应用案例

本工程封装了OLED四针脚显示屏驱动代码以及应用案例代码,实现了OLED的各种接口,比如写字符串、写单个字符、写十六进制等

2024-08-08

GPIO输入模式之光敏电阻传感器控制蜂鸣器应用案例

本案例实现了一个通过光敏电阻传感器控制蜂鸣器的功能。蜂鸣器I/O控制引脚接到GPIOB的PB12口,光敏电阻传感器DO输出引脚接到GPIOB的PB13口。当我们遮住光线时,输出指示灯灭,代表输出高电平。当我们松手时,输出指示灯亮,代表输出低电平。

2024-08-08

GPIO输入模式之按键控制LED灯亮灭应用案例

本案例实现了一个通过按键控制LED灯亮灭的功能,两个按键分别接到GPIOB的PB1和PB11端口,分别控制接到GPIOA的PA1和PA2的LED亮灭。按下按键,LED点亮,再按下按键,LED熄灭。

2024-08-08

GPIO输出模式之蜂鸣器应用案例

本案例实现了一个蜂鸣器按照一定的频率进行工作的功能。

2024-08-08

GPIO输出模式之LED流水灯应用案例

本案例实现了一个简单的LED流水灯功能。

2024-08-08

GPIO输出模式之LED闪烁应用案例

本案例实现了一个通过控制GPIO的PA0引脚输出高低电平实现LED闪烁的功能。

2024-08-08

空空如也

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

TA关注的人

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