自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 博客目录框架

本文整理了技术开发相关的学习资源体系,主要分为三大系统:1)骨骼系统(机械结构与运动学)、2)神经系统(电路设计与传感器)、3)思维系统(C语言与编程)。其中思维系统为核心部分,详细分类为:面试必备(C指针、关键字、结构体等)、入职指南(Git使用)、进阶提升(链表操作、状态机等)以及底层开发(哈希表、程序构建流程等)。每个分类均提供了对应的CSDN技术文章链接,形成了一套从基础到深入的完整技术学习路径。

2026-04-02 23:14:25 354

原创 100_VSCOLD常用安装插件(持续更新)

正文内容][正文内容][步骤一][步骤二][步骤三][步骤四][结语段落]参考资料一参考资料二参考资料三所有[xxx]占位符替换为实际内容。一、→1.→(1)→a.→i.→⓵。代码注释统一使用/*CN:中文--EN:English*/双语格式。函数命名统一使用(如所有缩进使用,严禁空格和 Tab。所有表格均使用 HTML<table>格式实践指南章节的初始化代码,推荐使用“代码切片”模式:按GPIO→EXTI→NVIC。

2026-07-01 08:35:55 232

原创 99_SPI控制RGB灯的颜色

正文内容][正文内容][步骤一][步骤二][步骤三][步骤四][结语段落]参考资料一参考资料二参考资料三所有[xxx]占位符替换为实际内容。一、→1.→(1)→a.→i.→⓵。代码注释统一使用/*CN:中文--EN:English*/双语格式。函数命名统一使用(如所有缩进使用,严禁空格和 Tab。所有表格均使用 HTML<table>格式实践指南章节的初始化代码,推荐使用“代码切片”模式:按GPIO→EXTI→NVIC。

2026-06-29 09:26:56 156

原创 98_BUG调试方法

正文内容][正文内容][步骤一][步骤二][步骤三][步骤四][结语段落]参考资料一参考资料二参考资料三所有[xxx]占位符替换为实际内容。一、→1.→(1)→a.→i.→⓵。代码注释统一使用/*CN:中文--EN:English*/双语格式。函数命名统一使用(如所有缩进使用,严禁空格和 Tab。所有表格均使用 HTML<table>格式实践指南章节的初始化代码,推荐使用“代码切片”模式:按GPIO→EXTI→NVIC。

2026-06-27 07:03:31 192

原创 97_Keile 嵌入式开发勘误笔记

嵌入式开发编译问题及解决方案摘要 本文记录了嵌入式开发中两个典型编译问题及解决方案: ERR-001:Keil AC6编译器报错"unknown type name",主要由于: 源文件含不可见特殊字符/BOM头 宏定义重复且含乱码 AC5/AC6内联汇编语法差异 解决方案: 清理宏定义并适配AC6语法 统一文件编码为UTF-8 without BOM 添加编译器字符集参数 ERR-002:标准库函数未声明警告,因缺少<string.h>头文件。 预防措施: 统一编码规范 避免复制粘贴引入乱码 使用条件编译

2026-06-17 14:23:27 182

原创 96_从硬件原理到软件封装与地址寻址

摘要:寄存器原理与应用解析 本文深入浅出地讲解了寄存器的核心概念及其在嵌入式系统中的实际应用。寄存器是CPU内部的高速存储单元,用于临时存放数据、地址或控制信息,其访问速度远超内存但数量有限。文章通过STM32芯片实例,详细解析了GPIO、定时器、串口通信、ADC模数转换、PWM输出等常见外设如何通过寄存器实现功能控制,包括端口配置、定时器设置、数据收发等关键操作。同时从软件层面揭示了寄存器地址映射的原理,展示了硬件功能如何通过地址访问和宏定义进行封装,为理解嵌入式系统底层工作机制提供了清晰视角。

2026-06-17 09:57:23 178

原创 # 95_一些新技术

PS D:\Users\Acer\Desktop\SDK\project\开发板示例\示例代码> ls。PS D:\Users\Acer\Desktop\SDK\project\开发板示例\示例代码>

2026-06-12 10:05:55 16

原创 #94_systick定时器简介

本文摘要:STM32定时器是单片机重要外设,STM32F103C8T6包含高级、通用和基本三类定时器。基本定时器结构简单,由分频器、计数器和自动重装寄存器构成计时单元,时钟源通常72MHz,通过设置分频系数和计数值实现精准定时。当计数值达到设定值时产生中断或触发DAC转换(硬件自动完成)。学习建议从基本定时器入手,通过实践项目(如智能设备开发)加深理解,推荐使用立创EDA工具进行软硬件结合练习。

2026-06-08 12:30:24 212

原创 #93_一些新技术

正文内容][正文内容][步骤一][步骤二][步骤三][步骤四][结语段落]参考资料一参考资料二参考资料三所有[xxx]占位符替换为实际内容。一、→1.→(1)→a.→i.→⓵。代码注释统一使用/*CN:中文--EN:English*/双语格式。函数命名统一使用(如所有缩进使用,严禁空格和 Tab。所有表格均使用 HTML<table>格式实践指南章节的初始化代码,推荐使用“代码切片”模式:按GPIO→EXTI→NVIC。

2026-05-19 16:33:11 376

原创 #92_CMSIS是什么?

正文内容][正文内容][步骤一][步骤二][步骤三][步骤四][结语段落]参考资料一参考资料二参考资料三所有[xxx]占位符替换为实际内容。一、→1.→(1)→a.→i.→⓵。代码注释统一使用/*CN:中文--EN:English*/双语格式。函数命名统一使用(如所有缩进使用,严禁空格和 Tab。所有表格均使用 HTML<table>格式实践指南章节的初始化代码,推荐使用“代码切片”模式:按GPIO→EXTI→NVIC。

2026-05-19 15:56:46 378

原创 91_拿到芯片手册如何设计硬件电路

这篇短文探讨了如何通过STM32数据手册学习电路设计的方法。作者建议以手册中的参考电路为模板,结合自身学习3D建模的经验,制定循序渐进的学习计划:白天专注主业,晚上抽空撰写技术博客,每周固定练习原理图绘制,并借助AI工具进行分析交流。文章强调从基础做起("先解决1再解决100"),通过分解任务、持续实践来掌握电路设计技能。这种学习方法既系统又灵活,兼顾专业提升与知识沉淀。

2026-05-14 09:26:44 89

原创 74_SysTick滴答定时器中断

本文深入解析了Cortex-M内核中的SysTick定时器,从其发展历史、工作原理到技术规格。SysTick作为系统节拍定时器,最初为RTOS设计,后广泛应用于裸机延时。文章通过沙漏比喻形象说明其工作流程,详细介绍了24位计数器的特性、时钟源选择及寄存器功能。重点分析了CTRL、LOAD和VAL寄存器的协同工作机制,以及如何通过轮询或中断实现精准延时。SysTick凭借内核集成、统一地址和高效特性,成为嵌入式开发中精准延时的关键工具。

2026-05-13 16:08:18 474

原创 80_聊聊SPI以及它们的变体

SPI(串行外设接口)是一种由Motorola开发的高速全双工同步串行总线协议,采用四线制(SCK、MOSI、MISO、SS)实现主从设备通信。该协议通过移位寄存器实现数据交换,支持一主多从架构和四种时序模式(CPOL/CPHA组合)。SPI因其简洁高效被广泛集成于MCU中,从最初的1MHz发展到如今超过100MHz的传输速率,并衍生出Quad SPI等高速变种。使用时需根据从机手册配置正确的时序模式,模式0和模式3最为常见。SPI在Flash存储、传感器等嵌入式设备中具有重要应用价值。

2026-05-12 21:17:48 497

原创 #90_代码开关预处理的详解

摘要: 本文介绍了在C语言中使用预处理器宏控制死代码的几种方法。用户已定义#define SWITCH_FOR_DEAD_CODE 0宏开关,可通过以下方式使用: #if !SWITCH_FOR_DEAD_CODE包裹代码(当宏为0时编译) #if SWITCH_FOR_DEAD_CODE包裹代码(当宏为非0时编译) 直接使用#if 0...#endif简单禁用代码 文中澄清了常见的错误用法,如#ifnend不是有效指令,正确的结束标记应为#endif,并区分了#ifndef(检查未定义)的不同用途。提供了

2026-05-11 10:48:10 250

原创 #88_代码时间复杂度的计算公式

这段C代码的时间复杂度是O(log n)。函数mystery(n)通过递归调用不断将n除以2,直到n为0。每次递归都将问题规模减半,类似于二分查找的过程。因此,时间复杂度是对数级的,正确答案是选项A。

2026-05-11 10:05:22 37

原创 #87_MD5 哈希详解

本文详细介绍了MD5哈希算法及其在文件去重中的应用。MD5是一种生成128位固定长度哈希值的密码学函数,具有确定性、雪崩效应和不可逆等特性,适合用于文件内容比对。文章解释了Windows文件系统的命名冲突规则和自动添加副本后缀的机制,指出文件名不同但内容可能相同的情况。最后强调文件去重的核心是通过MD5比对内容而非文件名,并概述了典型去重脚本的工作流程:清理异常后缀、计算MD5值、保留唯一副本。全文系统性地阐述了MD5原理与文件管理实践的关系。

2026-05-11 09:37:51 377

原创 #86_【无标题】每次 .h 被 #include,就等于在所有包含它的 .c 文件中都复制了一份定义。

摘要:在.h文件中定义数码管段码表NUM_TAB时出现"Symbol redefined"错误,原因是该变量在多个文件中被重复定义。解决方法是将.h文件中的定义改为extern声明,并在对应的.c文件中进行实际定义。同时指出g_Time_Tick变量也存在类似问题,需要同样处理。最后汇总了具体修改方案,包括将.h中的定义改为extern声明,并在.c文件中添加实际定义,以彻底解决重复定义问题。

2026-05-09 19:29:13 199

原创 #85_库函数开发

本文以STM32寄存器编程为主题,通过生动比喻讲解了嵌入式开发中的核心概念。文章首先将寄存器比作"功能盒子",详细解析了GPIO、定时器、串口通信、ADC等模块的寄存器功能,如GPIOx_CRL配置引脚工作模式、TIMx_ARR设置定时器周期等。随后深入探讨了寄存器地址封装、CAN初始化流程、.hex文件解析等底层知识,并提供了GPIOA总线控制的实践示例。全文采用"技术概念+生活类比"的讲解方式,将抽象的寄存器操作转化为直观的硬件控制逻辑,适合嵌入式初学者理解STM

2026-05-09 17:52:16 343

原创 72_聊聊I2C以及他们的变体

写到这里,你可能会发现,I2C 的寿命之所以绵长,是因为它的设计足够"傻"又足够"巧":傻到可以用几个 GPIO 硬生生模拟出来,巧到能支撑无数设备在同一总线上愉快相处。手搓 I2C的意义,不在于取代硬件,而在于拆掉总线协议的黑箱,建立起从"波形电平"到"读传感器数值"的完整认知链。下回你再在示波器上看到 SDA(数据线) 上的那一串抖动,你就会会心一笑:“嗯,这是应答位,那个小脉宽,是时钟延伸。愿你在嵌入式的路上,永远保有一根地气、一颗匠心。

2026-05-08 23:06:29 423

原创 84_动态扫描再扩展全彩屏幕数据解析

本文介绍了全彩LED点阵屏幕(基于WS2812B协议)的驱动方法。与单色点阵相比,全彩屏幕每个像素由红绿蓝三色LED组成,采用单总线协议控制,支持24位真彩色显示。文章详细解析了WS2812B协议的时序参数(如0码/1码的高低电平时间)和数据传输格式(G-R-B顺序)。通过头文件设计,定义了8×8点阵尺寸参数、颜色数据类型(RGB_Color_T)和全局变量(显示缓冲区、亮度控制等),并提供了初始化、刷新显示等基础驱动函数接口。该方案仅需一根数据线即可控制64个像素,每个像素需传输24位颜色数据。

2026-05-08 17:25:20 382

原创 83_动态扫描业务详解

ADC采集电池电压 →batcaculatebatcaculate计算电量百分比74= 7474↓LedTaskLedTask将74转换为段码:7410774/10 = 774/107→gDspFlgNUMTAB70x07gDspFlgNUMTAB70x0774%10 = 4→↓Led_Scan()以200μs19步一帧(6步点亮 +13步消隐)

2026-05-08 14:40:33 402

原创 82_关于字节对齐

内存对齐的发展与重要性 随着CPU从8位发展到64位架构,内存对齐成为提升性能的关键因素。早期8位CPU无需对齐,但现代CPU访问未对齐数据会导致多次内存读取和拼接操作,显著降低性能(32位CPU未对齐访问耗时可达对齐访问的2-4倍)。在实时系统中影响尤为严重,如导弹控制系统未对齐访问可能导致响应延迟、硬件异常甚至系统崩溃。编译器通过填充字节实现自动对齐,牺牲少量空间换取访问效率。优化后的数据结构应将大成员前置,确保自然对齐,这对嵌入式系统、外设寄存器和DMA操作至关重要。实测显示,对齐版本可使中断响应时间

2026-05-07 10:22:31 49

原创 #81_闲谈语言的分类

中级语言并非严格分类,有时用于描述兼具高低级特性的语言(如C介于汇编与高级语言之间),但主流教材仍将其归为高级语言。C语言虽支持指针等底层操作,但其语法抽象、不依赖特定硬件,符合高级语言定义,因此选D。高级语言则接近自然语言,独立于具体硬件,需编译/解释才能运行;低级语言通常指机器语言和汇编语言,与硬件紧密相关;机器语言是二进制指令,CPU可直接执行;

2026-05-07 09:03:45 24

原创 79_NOP()嵌入式C语言中内联汇编宏的抽象封装模式研究

这段代码是使用汇编指令集编写的嵌入式系统代码片段,主要包含以下关键元素: 宏定义: NOPENI()和DISI():调用_disi汇编指令(可能用于禁用中断) WDTC():看门狗定时器清零指令 NOP():空操作指令 ENI():可能用于启用中断 SLEP():休眠指令 特点: 使用_asm内联汇编语法 主要涉及系统底层控制指令 包含中断管理、休眠和看门狗功能 这段代码展示了嵌入式系统中常见的底层硬件控制方法,通过宏定义简化了汇编指令的调用,适用于资源受限的嵌入式环境。

2026-05-05 19:02:07 43

原创 #78_如何在Windows上优雅的整理文件

文章摘要: MD5是一种128位的哈希算法,可将任意长度数据转换为固定长度的"指纹"。它具有确定性、雪崩效应和不可逆性,适合快速判断文件内容是否相同。Windows系统中,同名文件会自动添加"副本"或数字后缀避免冲突,但这会产生冗余文件。判断重复文件不能依赖文件名,必须通过MD5等哈希算法比较内容。实际应用中,可通过PowerShell脚本计算文件MD5值,识别并清理内容相同的重复文件,保留最新版本。虽然MD5在安全领域已被破解,但对于普通文件去重仍安全有效。

2026-05-04 08:19:13 417

原创 78_DMA协议以及变体

本文介绍了DMA(直接存储器访问)技术的发展历程、核心原理及实现方法。早期计算机依赖CPU完成所有数据传输,导致效率低下。DMA技术的出现解放了CPU,使其专注于计算任务。文章详细解析了DMA协议的核心概念,包括总线主设备切换、传输参数配置和仲裁机制,并对比了内存到外设和外设到内存两种典型传输模式。最后,作者通过Verilog代码演示了如何实现一个简易的单通道DMA控制器,包含状态机设计、数据传输通路等关键模块。该设计展示了DMA如何独立完成数据搬运任务,为理解现代计算机系统中的DMA技术提供了实践参考。

2026-05-04 00:31:20 396

原创 77_PWM原理历史与工程实战

三个例子从简单到复杂,核心框架始终不变——引脚查复用、定时器算参数、代码换端口和通道名例子引脚定时器+通道频率PSCARR特殊配置舵机(原例)无呼吸灯(例一)通道函数名加数字电机调速(例二)换定时器编号半桥互补(例三)PA8TIM1_CH1互补输出+死区+刹车+主输出使能掌握了这个“换参不换框架”的思路,几十个引脚的PWM配置可以一套模板全搞定。软件PWM的跨平台精髓在于把硬件相关部分集中到几个宏里,框架代码一个标点都不用改。移植到新MCU根据主频调好NOP()延时——

2026-05-04 00:30:22 196

原创 76_EXTI

本文深入解析STM32的外部中断(EXTI)机制,从历史演进、工作原理到技术规格。EXTI作为GPIO引脚电平变化的"哨兵",实现了从轮询到事件驱动的转变,极大提升了CPU效率。文章详细介绍了EXTI的19条中断线分配、边沿检测机制、中断/事件双通道特性,以及AFIO引脚映射配置方法。通过门铃系统的生动比喻,阐述了EXTI如何实现高效中断响应,并对比了不同触发方式的适用场景。最后还讲解了中断向量表入口的共享机制,为开发者提供了全面的EXTI应用指南。

2026-05-04 00:29:26 239

原创 75_关于NVIC

你用这一行代码的背后,是Cortex-M内核里几百个触发器和优先级比较器在为你工作——它们保证那些关键时刻永远有最高的CPU执行权,而平时你又感觉不到它们的存在。下次在代码里看到,愿你能想起那个分诊台护士的比喻——所有中断都在她手里排着队,你的任务就是给她一张正确的优先级名单。NVIC章节PM0056Cortex-M3AN10381inLPC2000。

2026-05-04 00:28:31 235

原创 #71_聊聊CAN

xxxxxxxxxxxxx

2026-05-03 22:00:09 30

原创 69_如何给自己手搓一个串口

TTL是什么?TTL串口是一种基于晶体管-晶体管逻辑(TTL)电平标准的串行通信接口,通常用于嵌入式系统和短距离数据传输。它直接反映了微控制器内部逻辑电平,无需额外的电平转换器即可与数字电路连接。这种较高的电压摆幅提供了更强的抗干扰能力,使得通信距离可达约15米。标准定义了20多条信号线,但实际常用的只有几条:RS-232与TTL- 逻辑"1"(MARK−3V-3V−3V到−15V-15V−15V- 逻辑"0"(SPACE3V+3V3V到15V+15V15Vi.

2026-05-03 21:26:05 414

原创 #70_GCC编辑器内部究竟是什么?

GCC 是开源世界里最庞大的 C 语言项目之一,它支持多种编程语言、多种目标平台。从输入到输出a.out,中间发生的一切都可以在源码中找到答案。本文将以GCC 主线源码为脉络,带你从main函数出发,逐层深入词法分析、语法分析、中间表示、优化遍、代码生成,看清编译器这座精密工厂的内部构造。阅读本文前,建议具备以下基础:- 熟悉 C 语言,了解编译的基本流程(预处理、编译、汇编、链接)- 对编译器前端(词法、语法)有初步概念。

2026-05-02 09:31:07 94

原创 # 68_OTA升级_

文章摘要: 本文系统解析MCU固件OTA升级的四种主流方案,从分区方式和搬运责任两个维度分类:单分区+外部存储中转(适合小容量MCU)、单分区+Bootloader负责(适合极简App)、双分区+App负责(主流IoT方案,零停机体验)、双分区+Bootloader负责(工业设备适用)。通过对比Flash需求、变砖风险、回滚能力等核心指标,给出选型建议:网络升级优先选择双分区App方案,本地升级可根据可靠性需求选择方案3或4。文章强调双分区设计对可靠性的重要性,并指出Bootloader复杂度与通信方式的关

2026-04-27 22:13:35 427

原创 # 67_MCU的几大分区

本文深入剖析了高性能MCU的存储分区体系,重点分析了Flash、RAM和Cache三大核心模块的架构特点与应用场景。文章指出,与8位MCU简单的存储结构不同,高性能MCU采用层次化存储系统,包含Bootloader区、中断向量表、TCM/CCM专用内存等多种功能分区。特别强调了RAM根据性能需求划分为DTCM、ITCM、SRAM等多类区域,以及Cache使用中需要注意的数据一致性问题。通过STM32F407实例展示了存储地址映射关系,为嵌入式开发者优化系统性能、确保功能安全提供了重要参考。

2026-04-25 15:34:30 439

原创 66_C语言与微控制器底层开发

本文介绍了WicePlus C编译器在EM78系列微控制器开发中的核心特性与应用指南。主要内容包括:1)编译器支持的ANSI C标准子集,强调数据类型限制(如不支持浮点型)和内存管理(数组最大32字节);2)预处理指令详解,包含#include、宏定义和条件编译的使用方法;3)运算符优先级表和各类控制语句(条件判断、循环、跳转)的编程示例。特别提醒注意数据类型转换可能造成的数据丢失风险,以及长整型运算对特定内存地址的占用问题。该指南为开发者提供了EM78系列MCU的高效C语言开发解决方案和技术规范。

2026-04-24 14:58:10 426

原创 #65_反激电源

在开关管再次导通之前,变压器副边电流已经下降到零。此时,原边电感电流从零开始线性上升。在开关管再次导通时,变压器副边电流尚未下降到零,原边电感电流从某个非零的初始值开始上升。反激电源作为一种经典的隔离式拓扑,其精髓在于将变压器的励磁电感同时作为储能元件,实现了能量的传递与电气隔离。理解其DCM与CCM模式差异漏感尖峰抑制以及反馈环路设计是掌握该电源拓扑的关键。

2026-04-22 23:01:01 499

原创 64_188数码管驱动技术(扫描型)详细技术解析

该代码实现了188数码管的动态扫描驱动,基于JSC8P012平台,通过GPIO宏操作引脚。主要功能包括:定义数码管段码表、引脚映射关系、显示缓冲区管理,以及内部扫描函数。采用分时扫描方式,支持在指定位置显示数字,包含清除所有引脚和驱动特定段的功能。代码结构清晰,包含详细的注释和修改日志,适用于三位数码管的显示控制。

2026-04-21 16:01:50 529

原创 #63_电子元器件中三大开关

本文对比了三种常见功率器件:MOSFET是一种电压控制型场效应管,通过栅极电压导通,适用于高频开关电路;IGBT结合MOSFET和双极型晶体管特点,兼具电压控制和低导通损耗,适用于中高压场合;功率三极管为电流控制型器件,导通需基极电流,多用于线性放大。此外还提及机械开关和继电器等传统开关器件。MOSFET与功率三极管的主要区别在于控制方式(电压/电流)和开关速度(MOSFET更快)。

2026-04-20 08:16:14 42

原创 61_[Thought_System] 思维 _C语言_数据结构__章节集合_1

本文整理了C语言学习与面试准备的系列文章,分为三个部分:面试准备(指针、关键字、结构体等核心概念)、入职指南(Git使用手册)以及进阶提升(数据结构、算法、状态机编程等)。内容涵盖从基础语法到企业级开发的完整知识体系,适合不同阶段的C语言学习者系统性地提升技能。

2026-04-20 07:18:03 90

原创 62_[Control_System] 调控_控制论__章节集合_1

本文摘要探讨了数学理论与工程实践的紧密联系。在理论推导部分,重点介绍了ReLU函数构造、PID控制框架、复数域应用、矩阵概念、泰勒级数、拉氏变换和傅里叶变换等数学工具的原理与推导方法。工程实践部分则阐述了这些理论的实际应用场景,包括矩阵在工程中的作用、复变函数应用、正态分布意义、Z变换价值以及拉普拉斯变换的工程必要性。文章通过理论推导与工程案例的结合,展现了数学工具在解决实际问题中的关键作用。

2026-04-20 07:17:52 45

空空如也

空空如也

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

TA关注的人

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