- 博客(36)
- 收藏
- 关注
原创 【STM32】CUBEMX下FreeRTOS 任务栈管理与栈溢出检测(CMSIS_V2接口)
printf("| %-16s | %-22s | %-16s |\r\n", "任务名", "剩余栈空间 (words)", "剩余栈空间 (bytes)");for (i = 0;i++)
2025-07-25 17:20:34
77
原创 【STM32】Keil + FreeRTOS + HAL DMA + UART 空闲中断 接收异常
项目说明问题本质DMA 缓冲区默认被放入不支持 DMA 的 CCMRAM根本原因Keil 默认内存映射未考虑 DMA 可访问区域关键措施1. 使用显式控制段位置2. 指定对齐方式3. Scatter 文件顺序正确适用范围STM32 所有使用 DMA 的应用(UART / SPI / ADC 等)调试建议使用检查地址是否在区间。
2025-07-25 11:39:05
634
原创 【markdown】 VSCode 使用 Markdown Preview Enhanced 插件转PDF
在预览窗口内右上角点击「菜单」图标(三个点),选择。里添加进去,或者你当前页面的 HTML 头中。打开需要导出的 Markdown 文件并预览。如果你用的是 Markdown 的横线。在 VSCode 命令面板中(快捷键。
2025-07-23 23:01:42
598
原创 【C++】第四章—— 函数重载 Function Overloading 笔记
函数重载:同一个作用域内可以定义多个函数名相同、但参数列表不同的函数。编译器会根据调用时传入的参数个数、类型、顺序进行区分,自动匹配最合适的函数。
2025-07-09 20:45:00
421
原创 【C++ 】第二章——类(Class)学习笔记
类是C++ 的核心特性,用来描述具有相同属性和行为的一组对象。类是“模板”,对象是“实例”。class 类名 {// 成员变量(属性) // 成员函数(行为) };✅ 成员变量私有化,公有函数访问✅ 构造+析构函数成对定义✅ 使用初始化列表设置成员变量✅ 建议将类定义分离为.h与.cpp✅ 使用 const、inline、static 提高安全性与效率✅ 利用继承和虚函数实现代码复用与多态。
2025-07-09 20:30:00
390
原创 【C语言】指针与回调机制学习笔记
typedef定义一个类型别名Callback。Callback表示一个函数指针,指向接受一个void *参数且无返回值的函数。是注册任务的函数,无返回值。Task *task:指向任务结构体指针。:函数指针,注册的回调函数。void *arg:传给回调函数的参数。术语说明*p解引用,访问指针指向地址的值&x取地址,获取变量 x 的地址void *通用指针,可指向任意类型,需强转函数指针存储函数地址,可间接调用函数定义函数指针类型,指向接受 void* 参数无返回值的函数函数注册。
2025-07-07 21:30:00
317
原创 【C语言】const、volatile、restrict、static四大关键字学习笔记
关键字修饰对象作用和意义是否可修饰函数本身const变量、指针指向内容数据只读,防止修改,提高安全和可读性否volatile变量、指针指向内容防止优化,保证每次访问内存,适合异步变化的数据否restrict指针指针唯一访问所指内存,允许激进优化否static变量、函数变量延长生命周期或限制可见性,函数限制文件作用域是。
2025-07-07 21:30:00
305
原创 【C语言】函数指针学习笔记
函数指针是指向函数的指针变量,可以用它来间接调用函数。函数名本身就是函数地址,所以我们可以把它赋值给函数指针。\n");fp是函数指针变量;它可以指向返回类型为void,参数为void *的函数。类型 变量名;// 类型是函数指针,变量名是 cb。
2025-07-07 11:06:23
328
原创 【STM32】[特殊字符] WWDG(窗口看门狗)学习笔记
是 STM32 内置的一种硬件看门狗定时器,主要用于系统。🧠 工作方式:从设定值递减计数器,必须在内重装(喂狗),否则复位系统。✅ 目的:监控主程序是否卡死、失控或未按时执行关键任务。
2025-06-26 14:41:42
1031
原创 实时中值滤波 + 低通滤波 示例程序(STM32环境)
中值滤波器(Median Filter):对短期异常值(如尖峰噪声)有良好的抑制能力;低通滤波器(Low-Pass Filter):对数据进行平滑处理,适合去除高频抖动。适用于如ADC传感器数据处理、电子秤、电流电压读取等场景。
2025-06-18 19:45:00
502
3
原创 【python】线程专题
线程(Thread)是操作系统能够进行运算调度的最小单位。它存在于进程内部,是进程的一部分。一个进程可以包含多个线程,这些线程共享内存空间和资源,但能并发执行代码。方法含义创建锁对象主动上锁(阻塞)主动解锁推荐写法,自动加解锁守护线程是一种后台线程,它的生命周期依赖于主线程。当主线程退出时,所有守护线程会自动结束,不管它们是否完成任务。非守护线程会阻止程序退出,程序必须等待所有非守护线程结束。
2025-06-17 14:19:17
989
原创 【STM32 】 LAN8720+LWIP+RTOS的WebServer实现
本项目将 STM32F429 搭建成一个 Web 服务器(WebServer),用户可通过浏览器访问其 IP,实现远程控制与配置功能,例如:接口类型:选择 模式(推荐用于性能更优的通信)GPIO 设置:根据自己电路图配置即可(CubeMX 会根据选择自动分配)任务管理系统堆大小这里重点介绍下一些配置参数:假设你要通过 发一个 2KB HTML 页面:你可以在 CubeMX 的 LWIP -> Advanced Settings -> 中手动填上这些值。具体配置如下:这里串口,时钟这些配置就
2025-06-05 18:01:26
378
原创 【OpenCV】第二章——图像处理基础
以上是图像处理的基础内容,涵盖了图像的读取、显示、基本属性、灰度化、二值化、色彩空间转换、图像变换与操作、图像滤波和平滑以及边缘检测等常用操作。
2025-04-26 15:49:44
1316
原创 【OpenCV】第一章——基础知识
OpenCV(Open Source Computer Vision Library)是一个开源计算机视觉库,它专注于实时图像处理与计算机视觉应用。OpenCV的目标是为开发者提供一整套视觉处理工具,使得图像和视频处理任务变得更加高效与便捷。它是由Intel于1999年发布的,后来逐步成为一个开源项目,广泛应用于学术研究与工业界。
2025-04-25 20:15:00
510
原创 【基础理论相关】 开关电源与线性电源
开关电源的基本工作原理是通过开关元件(如MOSFET、IGBT等)以高频开关的方式控制电流,通常采用变压器、二极管整流、滤波电容等组成电源输出模块。开关频率通常为几十千赫兹到几百千赫兹,甚至更高,通过控制开关元件的导通和断开来调节输出电压和电流。线性电源的基本工作原理是通过变压器、整流、滤波器和线性调节器(如晶体管或集成稳压器)直接调节输出电压。输出电压由线性调节器根据输入电压和负载需求调节,没有高频开关过程。
2025-04-24 19:00:00
1037
原创 【电路设计】MOS管相关参数
最大漏极源极电压V_DS(max最大漏极电流I_D(max导通电阻R_DS(on)栅极电压V_GS和栅极门限电压V_GS(th)开关速度栅极总电荷Q_g功耗和热阻RθJA封装类型根据应用需求,选择适合的 MOS 管型号,确保其能够承受电路中的电压、电流、频率和温度条件。
2025-04-21 21:45:00
1042
原创 【电路设计】静电与浪涌
静电是指由于物体之间的电荷不平衡,导致电荷通过接触或空气放电的一种现象。它通常在物体之间积累静电后,在短时间内释放出来。浪涌是电气系统中由于外部事件(如雷击、电力设备开关操作、电力系统故障等)引起的瞬时高电压波动。浪涌的持续时间通常较短,但它的幅度通常很大,可能会达到数百伏甚至数千伏。静电(ESD)和浪涌(Surge)虽然都涉及电压的波动,但它们的原因、时间尺度、电压和电流幅度以及影响都不同。静电是由于电荷积累导致的瞬时电压放电,电流较小,时间极短;
2025-04-12 11:02:28
1113
原创 【传感器】STM32驱动DS18B20
程序有HAL库和标准库版本,上拉电阻4.7K到10K都能正常读取数据,PA4引脚需要remap。其他型号MCU注意延时即可。
2025-04-01 21:33:01
372
原创 【ESP32】-SD卡测试
一开始式格式化为FAT32格式,但是电脑在SD卡新建的文件和文件夹读取不出来,具体什么原因还不清楚,格式化工具用的是SD Card Formatter。写入时间: 4930 ms | 速度: 415.42 KB/s。读取时间: 4737 ms | 速度: 432.34 KB/s。文件写入成功: /arduino_test/test.txt。(3)SD卡内存大小读取测试。=== 文件夹操作测试 ====== 文件操作测试 ====== 测试文件内容 ====== SD卡信息 ====== 速度测试 ===
2025-02-22 21:59:44
753
原创 CUBEMX配置STM32F4在Freertos下以太网通讯(DP83848驱动)
LWIP 网络栈是一个单线程的网络协议栈,在多任务环境中运行时,如果没有合理地分配任务调度和栈资源,可能会导致任务之间的冲突或资源耗尽(例如套接字缓冲区、内存池等)。RMII 接口对应的时钟频率为 50 MHz,而 MII 接口对应的时钟频率为 25 MHz。相反,客户端的角色是发起连接请求,而服务器则是监听并接受这些请求。MII模式下用到的GPIO,这里选择好MII模式后,GPIO会自动勾选,但是会。这里的寄存器要格外注意,尤其是里面小红框的那几个,建议一一比对好。,在任务函数里有调用,如下所示。
2024-11-20 21:00:00
2132
原创 STM32F4生成随机数(HAL库)
检查工程目录下是否包含“stm32f4xx_hal_rng.c”和“stm32f4xx_hal_rng.h”。
2024-11-20 21:00:00
348
原创 STM32用CUBEMX配置Freertos和PWM
TIM4挂载在APB1下,不分频的情况下,实际PWM周期 = 设置的周期数值/定时器时钟;上图设置1000的实际周期为1000/240=4.1666(单位为us)。
2024-10-29 22:43:23
406
原创 STM32串口提取数据和命令字符
很多时候我们都要用到串口来控制程序的运行模式,例如通过串口助手向单片机发送命令,控制LED,PWM,调节PID参数等。本章以点灯为例,单片机为STM32H750,其他单片机同样适用,实现了通过串口助手发送命令控制LED的开关,亮度。
2024-10-27 20:43:52
1392
原创 STM32H750用CUBEMX配置串口中断接收(带freertos)
这里避免使用半主机模式很重要,不能少。// 接收缓冲区// 用于存储接收到的单个字符int handle;//定义_sys_exit()以避免使用半主机模式x = x;//重定义fputc函数return ch;记得在KEIL勾选这个。// 接收计数器//消除警告//接收数据转存//将'\n'(usart1_rx_counter)后面的数据清空;usart1_receive_buffer[0] = NULL表示将整个数组清空//测试语句,不需要可以删除//再开启接收中断。
2024-10-24 21:10:51
793
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人