自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 STM32_I2C通信

​ I2C是一种总线结构,可以进行多设备连接,可以让单片机跟大量设备连接,单片机一般作为主机,其他设备作为从机,I2C由两条线组成:SCL(串行时钟线,传输时钟信号)和SDA(串行数据线,传输数据)。I2C总线还需要两颗上拉电阻,分别接在SCL和SDA上。SCL和SDA引脚都应该使用开漏输出,开漏输出有两种情况分别为低电压和高阻抗。为什么要设置为开漏输出呢?这是为了实现逻辑线与。

2025-04-13 16:08:34 186

原创 TCP和UDP协议简单概述

TCP和UDP协议都工作在网络的传输层,TCP是基于连接的,UDP基于非连接。

2025-04-13 15:16:06 139

原创 STM32_SPI通信和CubeMX相关配置

​下图可以更好地理解线路相连。

2025-04-12 16:37:07 462

原创 STM32ADC采样

​​ ADC就是将模拟信号转换为数字信号的转换器,模拟信号就是时间和幅度都连续的信号,数字信号就是时间和幅度都离散的信号。例如我们某一天的温度是连续变化的,一点点升温一点点降温,但是这种信号我们的计算机(单片机)是没办法直接获取的,就像GPIO它只有高电平和低电平(0和1),是离散的,所以当我们将一个模拟信号直接作为输入端,我们计算机获取的值只有0和1没办法知道这个连续的变化。

2025-04-11 20:30:00 590

原创 stm32低功耗模式

stm32有三种低功耗模式——睡眠,停止,待机。睡眠模式:内核时钟关闭,不影响外设和存储器的运行。停止模式:内核时钟关闭,关闭内核逻辑电路的所有时钟,关闭时钟系统。待机模式:内核时钟关闭,关闭内核逻辑电路的所有时钟,关闭时钟系统,关闭电压调节器。待机模式节能效果最好但是程序会复位,少数条件才能唤醒。那么相关模式怎么配置呢?其实很简单,首先我们可以将三个模式的唤醒均设为WKUP唤醒,之后再分别对三个模式设置。

2025-04-01 20:13:37 313

原创 STM32——通用定时器输入捕获

以上是初始化函数的代码我们可一看到它其实与PWM非常相似都是先配置定时器的初始化函数后再配置相应的功能,这里配置的是输入捕获通过查看代码后面的注释就可以理解分频模式和滤波我们都设置为不后就是通道的选择我们需要自行查看KEY_UP的IO引脚对应哪个定时器哪个通道的复用。由上图我们就可以知道他的计数原理,就是当产生一个上升沿后清除定时器,使其重新计数,之后每当有一次溢出我们就定义一个变量让其的值加一这样来累计定时器溢出的次数,等到产生下降沿的时候我们获取当前计数的值,这样我们就可以通过计算也就是图片中的。

2024-07-19 21:02:32 1729

原创 STM32通用定时器——PWM输出(LED呼吸灯)

PWM是通过修改占空比来模拟出类似于正弦状的电信号,假如我们让我们的程序在运行中它的占空比是动态变化的,此图就是关于PWM模式一和模式二的区别,以模式一中的向上计数的低电平有效举例,我们通过看图易知此模式下,当计数值大于CCRX后我们输出高电平,低于则输出低电平,而我们就是通过修改CCRX来实现不同的占空比。这里我们其实对PWM的配置已经完成了至于步骤5和6,步骤6没用上就不说了,步骤五的函数其实就是一个类似于直接能修改CCRx的函数,也就是直接修改占空比,我们可以在主函数中调用来实现。

2024-07-19 18:08:37 563

原创 STM32基本定时器——LED灯模拟(正点原子精英板)

​ 定时器其实就是一个计数器,当时间递增或者递减到我们设置的一个数值后就会实现一些功能,这就是定时器。那么定时器与我们平常用的延时有什么区别呢?我们平常用的延时函数是属于一种软件延时,而接下来要学的定时器是一种硬件延时,这二者的区别其实很好区分和理解,我们只需要知道软件延时,也就是我们平常用的延时函数他会阻塞我们的程序,例如在主函数里我们使用了延时函数,我们的程序是不是得等这个延时过去了,我们的程序才会继续向下进行,这其实就是一种阻塞。

2024-06-26 16:23:21 995

原创 STM32窗口看门狗——用LED灯来模拟(正点原子精英板)

这里解释一下WWDG的提前唤醒回调函数,其实这个函数里我们就可以编写我们想要实现的操作了,因为我想要模拟窗口看门狗的功能所以我点亮的LED1,这里我们其实就可以将回调函数理解成图1中的产生中断的那个时刻。那么如果我们注释掉回调函数里喂狗函数并且将主函数里的延时设置为30ms,取消注释喂狗函数,实验现象就是LED1永远都不会亮起,并且LED0常亮,这是因为我们在窗口进行了喂狗,窗口看门狗会重新计时(也就跟独立看门狗喂狗一样了),而产生中断操作在这之后,所以窗口看门狗并不会产生中断操作,LED1也就不会亮起。

2024-06-22 21:26:05 1870

原创 STM32_IWDG独立看门狗功能模拟(正点原子精英板)

主函数中首先对iwdg进行初始化,这里我将iwdg的初始值设置为了3秒,那么想设置成3秒我们应该选择哪个预分频参数呢,根据图2我们可以知道当预分频系数设置为32时最长时间为3276.8可以满足我们的需要,那么重装载系数我们通过公式就可以计算出它为3750。定义为了全局变量这是因为在下面的喂狗函数里调用的HAL库的独立看门狗喂狗函数的形参是此结构体。首先我们需要编写看门狗程序的初始化代码,下图3是HAL库中独立看门狗的初始化代码,内容可以不做了解,只需要查看此代码的形参即可。这个是我iwdg.c的完整代码。

2024-06-21 21:32:04 695

原创 STM32中断处理——用按键控制LED灯来模拟出效果(正点原子精英板)

里我将EXIT4_IRQn的抢占优先级设置为0,EXIT3_IRQn的抢占优先级设置为1,所以如果当先按下KEY1后LED1会亮起5秒,但是在LED1亮起过程中我按下KEY0后LED0也会亮起5秒这时LED1的状态会暂停也就是停在了延时5秒的这个阶段(LED1并不会熄灭),当LED0灭了之后也就是LED0亮起5秒过后LED1会继续之前的过程也就是完成延时五秒的部分。这里我们只需要编写中断服务函数和回调函数即可,而中断服务函数里只调用了HAL库中断处理公用函数,这是HAL封装好的不用我们编写。

2024-06-20 23:35:24 2344

原创 STM32按键控制LED灯(正点原子精英板)

且该LED是低电平点亮所以led_set()函数里的HAL_GPIO_WritePin()函数最后一个参数应为GPIO_PIN_RESET。该函数的第一个参数为GPIO[A~G],第二个为GPIO_Pin_[0~15],第三个设置是GPIO_PIN_RESET还是GPIO_PIN_SET即是低电平还是高电平。该函数的第一个参数为GPIO[A~G],第二个为GPIO_Pin_[0~15]。该函数的第一个参数为GPIO[A~G],第二个为GPIO_Pin_[0~15]。2.输入模式设置为普通的输入模式即可。

2024-06-20 17:05:36 626 2

空空如也

空空如也

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

TA关注的人

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