自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 USB传输核心结构体解析

这些结构体是 STM32 USB Device 库对 USB 2.0 协议的抽象封装,是 USB 设备完成枚举初始化、状态管理、数据传输的核心载体。所有 USB 设备的行为(如响应主机请求、端点收发数据、类功能实现)都围绕这些结构体展开。请参考st官方的usbd_def.h;目录为:Middlewares\ST\STM32_USB_Device_Library\Core\Inc\usbd_def.h

2026-01-12 11:59:31 937

原创 USB 设备/配置/接口/端点/描述符 和 HID类请求详解

介绍:设备描述符,配置描述符,接口描述符,端点描述符,hid描述符;HID中断端点(接收/发送) 最大数据包:设置为64字节(最大)和2字节对比;全速模式下中断端点轮询间隔:5ms和1ms对比;USB协议中的:自定义HID和HID鼠标进行对比;USB全速中HID传输流程,对比设置的端点大小与轮询间隔对整个通信周期的影响;

2026-01-09 17:31:33 838

原创 stm32 HAL配置usb全速 自定义HID类详解

通过stm32cubemx配置usb自定义类型,传输64字节,对比IN/OUT端点包长和对比中断传输轮询时间;使用Bus Hound,PortHelper,sscom软件进行usb的配置查看,usb全速枚举过程和数据传输详细介绍。

2026-01-05 10:06:48 1183

原创 (已使用)win10关闭自动更新

(可用)给win10电脑更新延期到100年后;

2025-12-01 14:20:49 318

原创 (已解决)vscode打开stm32cubemx生成的工程报红色波浪线警告

现象:keil可以编译,但是vscode报红色波浪线。可以在vscode中的json文件添加keil的文件配置DEfine,即可解决vscode报红问题!!!

2025-11-13 19:37:43 609

原创 keil修改RAM尺寸大小

keil编译失败,显示连接错误:可能是是“默认 RAM 尺寸”埋的坑。STM32F103RB 有 128 KB RAM,但 Keil 默认只给你 20 KB;把 Target→IRAM1 Size 改成 0x20000,也就是128kb,点击编译链接错误立刻消失。

2025-10-31 16:18:23 429

原创 stm32f103(移植HAL库)添加spi的OLED代码(含源码)

使用STM32CubeMX配置spi的OLDE代码,这里的oled代码是直接使用江协科技的oled驱动代码来移植的。先把spi的oled跑通,后面想改就很快,直接改引脚就行,文章结尾附源码和工程资料

2025-10-13 14:49:19 867

原创 使用NFC快速读取二代身份证uid

读取二代身份证的uid的流程的资料是公开的,参考使用PN532读取的两篇文章,用ST25R3911B测试了下,也可以读出取二代卡的uid,以下是详细资料和修改好的代码

2025-07-08 16:37:57 1648

原创 CSR8670蓝牙音频芯片快速上手(基础详细版)

大致讲解下这四个软件的使用,SDK是 ADK_CSR867x.WIN.4.4.0.21,这里跑一下sink里面的蓝牙耳机工程。介绍下各种软件的基础使用。

2025-03-05 14:22:31 1770

原创 STM32 PWM波形详细图解

步骤一:通过配置ARR(自动重装载值寄存器)和PSC(预分频器)的值,来设置CNT(计数器)的定时周期、计数频率。步骤二:再改变CCR(捕获/比较寄存器)的值,通过CNT与CCR的比较,可对PWM占空比进行调整。经过步骤一和步骤二:即可输出频率和占空比都可以调制的PWM波形ARR自动重装载值寄存器)PSC(预分频器)CNT(计数器)CCR(捕获/比较寄存器)脉冲宽度调制:PWM是一种数字信号控制技术,其中数字信号的占空比被用来控制模拟信号的幅度。

2024-11-30 16:35:27 2367

原创 XShell快速连接虚拟机(Ubuntu系统)

对于刚开始探索 Linux 世界的新手来说,拥有一台自己的服务器可能并不现实。幸运的是,虚拟机技术为我们提供了一个完美的解决方案。通过虚拟机,你可以在个人电脑上模拟出一台或多台服务器环境,比如 Ubuntu 或 CentOS,而无需担心影响主机系统。接下来,我将带你一起学习如何使用 Xshell 这款强大的 SSH 客户端软件,来远程连接并操控你的虚拟机,以 Ubuntu 为例,让我们开始这段精彩的学习之旅吧。

2024-09-15 19:25:21 1412

原创 IIC之原理---(基础/理解)

了解IIC基础的通信与时序知识;基础:使用IIC与AT24C02进行通信;进阶:使用IIC与NAU8822进行通信;通过理解IIC的7地址+8位数据和7地址+9位数据的不同外设通信需求区别。使用STM32进行软件IIC和硬件IIC的模拟。通过查看逻辑分析仪,进行时序的检测判断。

2024-07-30 02:47:55 2656 1

原创 STM32F103定时器中断详解

详细图解介绍:自动重装载寄存器,CNT计算器,PSC预分频器的工作原理。通用定时器通过PSC预分频器把接入的72MHZ的时钟进行分频。再通过CNT以分频后的时钟频率进行计数。定时器TIMx分为三种定时器:(基本定时器、通用定时器、高级定时器)接下来逐个介绍.....

2024-07-13 10:35:00 3869 5

原创 理解归并排序的两种方法(超详细)

结合图文剖析归并排序的思路;学习分治法、递归思想、gap调整区间优化。分治法(Divide and Conquer):归并排序是一种分治算法,它将问题分解成多个小问题,解决这些小问题,然后将它们的解决方案组合起来解决原始问题。递归(Recursion):归并排序的实现通常依赖于递归,这是一种在函数内部调用自身的方法。递归是解决某些问题(如树的遍历、排序等)的强大工具。稳定性(Stability):归并排序是一种稳定的排序算法,这意味着相等的元素在排序后保持它们原始的相对顺序。这对于某些应用场景非常重要。

2024-04-27 01:58:27 1776

原创 屏幕帧缓冲机制

屏幕多缓冲显示通常涉及帧缓冲(Framebuffer)的使用,这是一块与屏幕大小和分辨率相关联的内存区域。在图形用户界面(GUI)中,所有绘制操作都是通过对帧缓冲的操作完成的,这些操作包括内存设置(memset)和内存复制(memcpy)。这些操作的速度直接影响到帧缓冲的处理速度,因此为了优化性能,开发者通常会编写多个版本的 memset 和 memcpy。

2024-04-06 21:48:17 1699

原创 LCD屏幕mmap显示

mmap是一种内存映射文件的方法,它允许将文件或其它对象映射到进程的地址空间。使用mmap映射函数进行映射显示,与屏幕普通直接显示相比有很大的优势。

2024-04-06 00:41:24 1431

原创 系统IO函数接口

系统I/O接口提供了一系列的函数,如 open、read、write、close 等,用于打开、读取、写入和关闭文件。这些函数是进行文件处理的基础,允许程序访问磁盘上的文件资源。

2024-04-02 20:55:09 1461

原创 arm-linux-gcc配置安装

本次下载的交叉编译工具是:arm-linux-gnueabi-5.4.0.tararm-linux-gcc编译工具用于将代码编译成适用于ARM架构的Linux系统上的可执行文件。

2024-03-29 00:12:26 3910

原创 Makefile 变量与函数替换

系统变量进行Makefile操作自定义变量顾名思义就是用户自己定义的变量A = apple # 定义并赋值变量C = $(A) tree # $() 则是对某一个变量进行引用Even:@echo $(A)@echo $(B)@echo $(C)Makefile预定义变量B = ChinaEven :echo $(A);直接定义条件定义方式A = appleA?多命令行定义方式。

2024-03-27 10:32:36 1095

原创 Makefile 目标-依赖

Makefile是一个定义了如何构建一个软件项目的文本文件。Makefile通常包含了一系列的规则和指令,这些规则和指令描述了如何从源代码和其他资源文件构建出一个软件项目的目标文件(如可执行文件或库文件)。它的主要作用是自动化编译过程,确保只编译修改过的源文件,从而提高编译效率。以下是Makefile的一些关键点:

2024-03-24 16:14:54 1381

原创 动态库的制作与链接详解

这里介绍3种方法:方法一:把动态库文件放到系统默认的路径下即可 (/usr/lib 或者 /lib );方法二:把库所在的路径写入(添加)到环境变量中;方法三:在系统的默认路径下添加一个新的路径

2024-03-24 14:43:05 3067

原创 GCC制作静态库详解

带大家快速入门,学会制作静态库。本文详细介绍在Linux系统中使用gcc制作静态库的各种细节:库文件的命名: 必须使用lib作为前缀: 比如 libDeployPkg.so.0 / libhgfs.so.0 .....;静态库一般以 .a 为后缀 ;动态库一般以.so为后缀 库文件会有不同的版本, 一般写在后缀后面, 比如 lib.a.so.0.1.2;不管需要制作的是静态库还是动态库,原材料都是.o文件 (可重定位文件) 库文件内部不允许出现主函数main();

2024-03-23 17:03:25 1865

原创 GCC编译过程与实现

详细讲解gcc编译过程:预处理,编译,汇编,链接;使用gcc生成对源文件.c和.h文件进行编译运行,带大家区分它们的区别。一.GCC编辑器以下是常用的编辑器选项,不同的选项可以指导编译器有不同的行为表现,具体如下二.编译过程gcc编译过程分为四个步骤:预处理,编译,汇编,链接;接下来逐个进行介绍2.1 预处理#include 宏定义会被替换:#define 取消宏定义:#undef 条件编译:修改行号以及文件名:#line 998 "Hello.c"清除注释。

2024-03-23 15:37:01 3272

原创 传值、传址、空间释放详细图解

详细介绍函数传值和传地址区别:进行数据操作的区别,函数传值为临时拷贝,不会对实参影响。而传地址时,就是传实参,是可以影响到实参的..........

2024-03-18 22:25:07 1071

原创 指针数组/数组指针详解

了解指针数组,数组指针,一维数组,二位数组,数组首元素地址,整个数组地址等........

2024-03-17 17:13:07 564

原创 九大运算符详解

C语言中的九大运算符分别是:算术运算符、关系运算符、逻辑运算符、位运算符、赋值运算符、条件运算符、逗号运算符、指针运算符、杂项运算符。算术运算符:用于执行数学计算,如加(+)、减(-)、乘(*)、除(/)和取模(%)等。还有自增(++)和自减(--)运算符。关系运算符:用于比较两个值之间的关系,包括大于(>)、小于(=)和小于等于(

2024-03-16 16:00:47 1163

原创 linux中tar归档与(zip,gzip,bzip格式)压缩和解压

学会在linux中使用tar归档与(zip,gzip,bzip)压缩和解压。在Linux中,文件归档指的是将一个或多个文件或目录集合储存在一个文件中,这个过程也被称为打包。归档本身并不涉及数据压缩,所以生成的归档文件大小是所有包含文件大小的总和。归档通常用于备份和传输操作,方便管理和存储。归档后的文件可以通过不同的命令进行压缩以节省空间和加快传输速度。下面是一些常用的归档和压缩命令:

2024-03-16 14:15:18 2189

原创 死磕Shell命令

熟悉掌握最重要的几个Shell基础命令,在普通的linux日常操作中就显得游刃有余了。top 动态进程信息(类似进程管理器);sort 对文件的内容进行排序;which 查看命令所在的位置;uniq 去掉文件中重复项然后输出等.........

2024-03-13 23:30:51 1212

原创 程序员如何选择职业赛道?

程序员的学历,职位的市场需求,不同技术岗位工资等,都会影响程序员选择职业赛道,我们需要重视评估自己,来确定最适合自己的路径.............

2024-03-13 00:52:07 1025

原创 vim基础命令

启动vim编辑器后自动进入编辑模式,在此模式中输入命令对应vim一个动作,比如:进入编辑模式、复制粘贴、保存文本、查找替换等等,如下表。

2024-03-10 22:07:40 1569 1

原创 程序员的金三银四求职宝典

金三银四是指每年的3月和4月,这两个月是求职的高峰期,很多企业开始大量招聘新员工。对于程序员来说,这是一个寻找更好工作机会的黄金时期。为了在竞争激烈的求职市场中脱颖而出,以下是一些面试技巧分享:

2024-03-10 22:03:44 1092

原创 I2C(IIC)---EEPROM超详细图解

图解IIC--EEPROM的通信使用过程,使用单片机的IO口,进行模拟IIC时序与AT24C20进行双向通信(读写)。

2024-03-09 23:36:15 23734 6

原创 STC89C52串口通信详解

详细图解,同步和异步通信原理,单片机串口,通信速率计算,串口寄存器与工作方式

2024-03-05 23:59:12 4769 1

原创 STC89C52定时器中断详解

细节图解分析定时器0/1中断细节,T0和T1的使用,以及机器时序的计算.........

2024-03-05 08:13:38 2031

原创 STC89C52外部中断详细解析

分析STC89C52外部中断的硬件组成与细节。中断:为了响应外部或内部的事件而暂停当前正在执行的任务,转而去处理这些事件的一种机制。

2024-02-21 18:34:10 4817

原创 STC89C52 动态数码管详解

快速理解STC89C52数码管模块的组成细节与动态显示原理,配合74HC245 和 74HC138 芯片使用

2024-02-17 15:21:43 3645 1

原创 C++支持函数重载的原理

C/C++编译过程是什么?为什么C++支持函数重载,而C语言不支持函数重载呢?在C/C++中,一个程序要运行起来,需要经历以下几个阶段:预处理、编译、汇编、链接。接下来逐个进行详细介绍..........

2024-02-04 15:06:23 854 1

原创 LINUX入门命令(CentOS7)

在Linux系统下一共有七种文件类型 普通文件(mp3,avi,mp4,ppt....)d 目录文件(文件夹)p 管道文件(一般用于进程通信)l 连接文件(相当于快捷方式)s 套接字文件(一般用于网络通信)b 块设备文件(驱动设备文件由驱动生成)c 字符设备文件(驱动设备文件由驱动生成)

2024-01-31 15:45:24 983

原创 搞懂排序(稳定和非稳定性)

相同元素的相对位置排序完没有改变,则为稳定排序。若排序后相同元素的相对位置发生变化,则为不稳定排序。

2024-01-23 23:24:50 3434 3

原创 计数排序(罕见时间复杂度O(n))

优点:时间复杂度O(n);时间复杂度快的比较罕见缺点:需要额外的空间来存储计数数组,它的空间复杂度也是O(n)。适用于:数据范围不是很大

2024-01-23 13:24:00 1510 1

stm32f103(移植HAL库)添加spi的OLED代码(含源码)

参考b站博主:https://www.bilibili.com/video/BV1PZ42177GM/?spm_id_from=333.1387.favlist.content.click&vd_source=ddd10a5e1227824a60d03b78a47ce68e视频。 由于新项目有SPI需要,我需要快速配置和测试好HAL库的SPI,参考B站该博主的视频添加测试OLED,我快速的配置好了。 因为我拿vscode打开这个项目文件夹报红,所以往其他项目里面复制了个.vscode文件夹过来,解决插件报红问题。不影响使用

2025-10-13

arm-linux-gnueabi-5.4.0.tar

arm-linux-gcc交叉编译工具: 备注:使用此资源时需要解压两次,因为上传时显示资源重复上传失败,于是套了两层压缩。建议使用window系统下载先解压一次再到Linux中进行解压,这样方便查看 此外,如果把编译器gcc替换成arm-linux-gcc时。 使用arm-linux-gcc 出现一下问题: rm-linux-gcc src/Output.c -o src/Output.o -I./inc -c /usr/local/arm/5.4.0/usr/bin/../libexec/gcc/arm-none-linux-gnueabi/5.4.0/cc1: error while loading shared libraries: libmpfr.so.4: cannot open shared object file: No such file or directory 解决方法: $sudo ln -s /usr/lib/x86_64-linux-gnu/libmpfr.so.6 /usr/lib/x86_64-linux-gnu/libmpfr.so.4

2024-03-28

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

TA关注的人

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