自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 ESP32S3笔记

用来注册中断,参数:中断类型IO口与中断服务函数匹配;

2026-10-25 17:38:53 201

原创 can总线(STM32笔记)

帧起始:1位,总线空闲时发送总裁段:标识符位:11位,可以理解为节点ID(高位在前)远程发送请求位:区分是数据帧还会是远程帧(显性信号0代表数据帧)控制段:IDE位:1位 区分标准格式还是拓展格式(显性电平代表标准格式)R0位:保留位:以后使用DLC段:4位 用于表示本报文中的数据有多少个字节。数据段:64位。

2026-10-21 19:19:35 211

原创 OTA BootLoader

解决方法如下:定义一个。

2026-10-09 14:34:59 146

原创 FreeRTOS软件定时器&内存管理

我们一般来说还会有一个SoftTimer_List链表来储存这些软件定时器的结构体,然后我们每来一个systemStick中断的话,他会去处理SoftTimer_List来判断是否到时间了。他的时间到了后他会去读队列,然后右边的TimerTask()平时是休眠状态的,当我们写队列时,直接把他唤醒了,随后他回去读队列,随后根据读出的内容去处理Timer。RTOS考虑到了一个问题就是如果说我们的fun函数执行的时间比较长的话,那么他就会影响到我们后续的tick中断。来看看FreeRTOS怎么做的。

2026-09-29 17:02:44 198

原创 FreeRTOS的中断机制

我们在FreeRTOS中一般都会有两套API的函数,比如说队列的发送有两套:一个是普通任务里使用的,一个是中断里使用的。我们注意到任务和中断的API的参数都有:队列,数据。但是任务中使用的API含有超时时间,但是中断中使用的不含超时时间。他有一个高优先级任务唤醒参数。我们根据中断快进快出的特点可以知道中断API不含超时时间参数的原因,但是他就一直是快进快出吗?看下图:两套API的区别:普通的可以休眠,中断的不能休眠,这是人尽皆知的,而且他们都可以唤醒对方,他们的区别就在于唤醒对方;

2026-09-21 19:06:13 166

原创 FreeRTOS队列&信号量&事件标志组&任务通知

详细介绍了FreeRTOS中的队列,信号量,事件标志组和任务通知的使用方法和内部机制

2026-09-13 15:06:14 231

原创 FreeRTOS任务的创建与删除&挂起与恢复&中断管理

* 删除函数* 参数为要删除任务的句柄* TaskHandle_t:表示任务句柄类型*/当输入参数为NULL时,表示删除任务自身(当前正在运行的任务)注:参数是句柄是因为句柄是任务在TCB中的地址,TCB是实现层,删除是要删除TCB实现层。该函数用于删除已被创建的任务,被删除的任务将从就绪态任务列表、阻塞态任务列表、挂起态任务列表和事件列表中移除。我们的删除函数实际上是标记删除真正删除是靠空闲任务来释放被删除任务中由系统分配的内存。需要注意的一点是:由用户在任务中。

2026-09-02 22:23:50 227

原创 基于STM32的简易数字示波器

本项目基于 STM32F103 微控制器设计并实现了一款低成本、便携式的简易数字示波器,集波形显示、频率测量、信号发生与按键交互于一体,适合电子爱好者进行信号观测、电路调试以及嵌入式开发学习。系统以 STM32F103 为主控,通过 ADC + DMA 高速采样输入信号,在 1.8 寸 ST7735S TFT 彩屏上实时绘制波形;同时利用定时器输入捕获技术对信号频率进行硬件测量,实现“波形看得见、频率测得准”的基本示波器功能。

2026-09-01 22:25:30 186

原创 FreeRTOS基础知识

能够处理多个任务并且这些任务可以同时运行就称为我们使用的MCU都是单核处理器,多个任务或线程同时在执行:多个任务或线程在执行。

2026-08-31 22:59:43 220

原创 HAL库学习笔记

本文总结了STM32 HAL库开发中的关键外设功能实现方法,包括GPIO输入输出配置、外部中断(EXTI)、串口通信(UART)、I2C传感器读取、定时器应用(PWM/编码器)、ADC模数转换和RTC实时时钟等核心技术要点。文章详细讲解了各模块的工作原理和HAL库函数使用方法,重点剖析了不同工作模式(轮询/中断/DMA)的适用场景与实现差异,并针对实际开发中的常见问题提供了解决方案(如串口不定长接收、RTC掉电保持等)。通过CubeMX配置与代码实例相结合的方式,系统性地呈现了STM32 HAL库开发的核心

2026-08-05 23:44:58 382

原创 按键消抖的一种方法

本文介绍了一种基于定时器+中断的按键消抖方法。硬件上采用电容消抖,软件上避免了阻塞CPU的Delay方式,转而使用定时器周期性采样按键状态。具体实现步骤包括:配置1ms定时器中断,在中断服务函数中每20ms调用Key_Tick()检测按键状态;通过比较前后两次采样值判断有效按键动作;主程序通过Key_GetNum()非阻塞获取按键值。文章还指出GPIO内部上拉能力不足时需外接上拉电阻的问题。该方法有效解决了机械抖动问题,同时避免了CPU资源浪费。

2026-08-03 21:24:06 210

原创 PCB学习笔记

摘要:本文详细介绍了51单片机核心板和USB拓展坞的硬件电路设计。核心板部分包含4个关键电路:1)电源电路采用Type-C接口供电,通过DPDT开关和AMS1117-3.3稳压芯片实现5V转3.3V;2)晶振电路为单片机提供时钟信号;3)RC复位电路实现上电复位;4)按键检测电路采用低电平有效设计。USB拓展坞设计包含:1)Type-C模块处理差分信号和供电;2)保险丝保护电路;3)SL2.1A主控芯片管理4个USB接口;4)USB模块的电源滤波设计。两种设备均采用多级电容滤波方案,并详细说明了各功能模块的

2026-07-16 23:14:40 470

原创 FLASH闪存(STM32)

摘要:STM32F1系列FLASH由程序存储器、系统存储器和选项字节组成,支持ICP和IAP编程。操作需先解锁,通过FPEC模块实现擦除和编程。程序存储器可写入16位半字数据,支持页擦除和全擦除。选项字节用于配置读写保护、看门狗等参数,操作时需注意反码写入。FLASH掉电不丢失,可用于保存用户数据或实现程序自更新。操作步骤包括解锁、设置控制位、触发操作、等待完成和验证结果。

2026-07-13 21:00:26 205

原创 看门狗(stm32笔记)

摘要:STM32内置独立看门狗(IWDG)和窗口看门狗(WWDG),用于监控程序运行状态,防止系统卡死。IWDG基于内部低速时钟(40kHz),通过键寄存器控制喂狗,超时自动复位;WWDG基于APB1时钟(36MHz),需在特定时间窗口内喂狗,否则复位。两者对比:IWDG独立运行,时间精度低;WWDG时间精度高,支持窗口检测和早期中断。库函数提供配置、喂狗、使能等操作,IWDG侧重基础定时,WWDG支持窗口控制和中断管理,适用于不同可靠性场景。

2026-07-11 17:14:59 262

原创 PWR电源控制(STM32笔记)

本文介绍了STM32的电源控制模块(PWR)功能,重点阐述了三种低功耗模式:睡眠模式(关闭CPU)、停机模式(关闭CPU和外设)和待机模式(完全断电)。通过配置PDDS、LPDS等寄存器位可选择不同模式,并详细说明了各模式的进入/唤醒机制、时钟状态及I/O引脚变化。文章还提供了PWR相关库函数的使用方法,包括模式切换、电压监测和标志位操作等,为STM32低功耗设计提供了实用参考。

2026-07-10 20:24:40 221

原创 时间戳&BKP备份寄存器&RTC实时时钟(STM32笔记)

本文摘要: Unix时间戳是从1970年1月1日UTC/GMT开始计数的秒数,简化了时间表示和计算。STM32的BKP备份寄存器可在断电时保持数据,需配合PWR外设使用。RTC实时时钟提供独立计时功能,支持三种时钟源,通过32位计数器和预分频器实现精确计时。文章详细介绍了RTC初始化流程、相关库函数及操作注意事项,并提供了完整的RTC实时时钟实现代码,包括时间设置、读取和OLED显示功能。代码模块化设计,包含MyRTC.c/h和main.c,实现了从Unix时间戳到可读日期时间的转换和显示。

2026-07-09 22:48:10 208

原创 硬件SPI(STM32笔记)

STM32硬件SPI接口简介 摘要:STM32微控制器内置硬件SPI接口,支持全双工/半双工通信,可配置8/16位数据帧及多种时钟分频(最高72MHz)。硬件SPI自动处理时钟生成和数据收发,减轻CPU负担。SPI1(APB2总线)和SPI2(APB1总线)分别支持72MHz和36MHz时钟。初始化时需配置GPIO(SCK/MOSI为复用推挽输出,MISO为上拉输入)及SPI参数(主从模式、波特率、时钟极性等)。通信流程包括:拉低SS信号启动传输,通过TDR发送数据并监测TXE标志,读取RDR接收数据并检查

2026-07-08 20:58:24 322

原创 软件SPI(STM32笔记)

本文介绍了SPI(串行外设接口)通信协议的基本原理与实现。SPI是一种由Motorola开发的四线制同步全双工通信总线,包含SCK、MOSI、MISO和SS四根通信线,支持一主多从架构。文章详细说明了SPI的连接方式、四种工作模式(由CPOL和CPHA决定)以及数据传输时序,重点分析了模式0下的数据移位过程。通过W25Q64闪存模块的实例,展示了SPI通信的实际应用,包括ID读取、写使能、页编程、扇区擦除等操作。最后提供了基于STM32的软件模拟SPI通信代码实现,包含初始化、起始/终止信号生成以及字节交换

2026-07-08 14:31:46 183

原创 硬件I2C(STM32笔记)

STM32内部集成了硬件I2C收发电路,可以时钟生成、起始终止条件生成、应答位收发、数据收发等功能,减轻CPU的负担支持多主机模型支持7位/10位地址模式支持不同的通讯速度,标准速度(高达100 kHz),快速(高达400 kHz)支持DMA兼容SMBus协议STM32F103C8T6 硬件I2C资源:I2C1、I2C2。

2026-07-06 15:33:59 206

原创 软件模拟I2C通信(STM32笔记)

两根通信线:SDA和SCL。同步时序。有应答机制。可以跟多个设备之间进行通信(一主多从/多主多从)SCL:同步时序,来中断的时候可以暂停SDA:数据线,仅此一根,半双工一主多从:从机只有被主机点名后才能控制IIC总线多主多从:任何一个模块都有可能成为主机控制IIC多主多从模式下在某时刻可能会有多个设备同时控制IIC总线,这时候IIC会进行总线仲裁。

2026-07-04 20:21:13 230

原创 USART串口通信(stm32笔记)

USART(Universal Synchronous/Asynchronous Receiver/Transmitter)通用同步/异步收发器。其内部内置了CLK时钟。USART是STM32内部集成的硬件外设,可根据数据寄存器的一个字节数据自动生成数据帧时序,从TX引脚发送出去,也可自动接收RX引脚的数据帧时序,拼接为一个字节数据,存放在数据寄存器里。自带波特率发生器,最高达4.5Mbits/s。相当于一个分频器,将总线给的时钟分频得到我们想要的波特率时钟。

2026-05-23 21:15:16 483

原创 STM32 DMA直接存储器存取(STM32笔记)

存储器和存储器之间用软件触发,软件可以用很快的速度一股脑的转运完成。外设和存储器之间用硬件触发,因为外设是有一定的时机的,要等到ADC外设数模转运完成才可以转运并且每个DMA的通道,对应的硬件触发源不一样。使用某个外设的硬件触发源,就要使用它连接的那个通道,而不能任意选择通道。

2026-05-19 22:00:49 423

原创 STM32ADC模数转换器(STM32笔记)

ADC(Analog-Digital Converter)模拟-数字转换器ADC可以将引脚上连续变化的模拟电压转换为内存中存储的数字变量,建立模拟电路到数字电路的桥梁12位逐次逼近型ADC,1us转换时间输入电压范围:0~3.3V,转换结果范围:0~409518个输入通道,可测量16个外部和2个内部信号源规则组和注入组两个转换单元模拟看门狗自动监测输入电压范围STM32F103C8T6 ADC资源:ADC1、ADC2,10个外部输入通道。

2026-05-19 10:16:44 401

原创 STM32定时器输入捕获功能(STM32笔记)

IC(Input Capture)输入捕获 输入捕获模式下,当通道输入引脚出现指定电平跳变时,当前CNT的值将被锁存到CCR中,可用于测量PWM波形的频率、占空比、脉冲间隔、电平持续时间等参数每个高级定时器和通用定时器都拥有4个输入捕获通道可配置为PWMI模式,同时测量频率和占空比可配合主从触发模式,实现硬件全自动测量。

2026-05-17 17:45:22 353

原创 STM32定时器输出比较功能(STM32笔记)

PWM(Pluse Width Modulation) 脉冲宽度调制在具有惯性的系统中,可以通过对一系列脉冲的宽度进行调制,来等效地获得所需要的模拟参量,常应用于电机控速等领域PWM参数:频率 = 1 / Ts 占空比 = Ton / Ts 分辨率 = 占空比变化步距。

2026-05-11 20:06:48 573

原创 STM32通用定时器基本定时功能(STM32笔记)

定时器实际上就是一个计数器,stm32中集成了多个定时/计数器TIM,根据型号和功能的不同,STM32系列芯片最多包含了8个定时/计数器,TIM1、TIM8为高级定时器,TIM2、TIM3、TIM4、TIM5为通用定时器,TIM6、TIM7为基本定时器。

2026-05-08 19:45:22 460

原创 STM32 EXTI外部中断(STM32笔记)

中断:在主程序运行过程中,出现了特定的中断触发条件(中断源),使得CPU暂停当前正在运行的程序,转而去处理中断程序,处理完成后又返回原来被暂停的位置继续运行中断优先级:当有多个中断源同时申请中断时,CPU会根据中断源的轻重缓急进行裁决,优先响应更加紧急的中断源中断嵌套:当一个中断程序正在运行时,又有新的更高优先级的中断源申请中断,CPU再次暂停当前中断程序,转而去处理新的中断程序,处理完成后依次进行返回。

2026-04-26 18:22:25 451

原创 GPIO输入输出的配置及输出和输入模式(STM32笔记)

浮空输入时:输入驱动器里面的两个(像弹簧一样的)连接的开关都不会闭合,就导致了电压处于浮空状态(没有具体的值,易受环境影响)(你可以理解为把模拟量变成了数字量,因为模拟量可以是1,1.2,3,4 ... 然后设置了两个值x和y,当低于x时为0,高于y时为1)上拉输入:输入驱动器里面上面的开关闭合,此时上面的Vdd导通,此时电压处于Vdd=3.3v。当输入的电压>3.3v时,上面的二极管导通,输入的电压就全部流向上面。当输入的电压<0v时,下面的二极管导通,输入电压就全部流向下面。

2026-04-26 16:42:31 562

空空如也

空空如也

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

TA关注的人

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