自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

猫猫的小茶馆

用心做开发。

  • 博客(241)
  • 资源 (1)
  • 收藏
  • 关注

原创 【ARM】裸机代码重定位加载

本文摘要: 裸机代码重定位加载的核心问题在于程序变量的存储位置与运行位置不一致。全局变量如char test_char1='A'在编译时链接到RAM地址,但其初始值存储在Flash中,需在启动时完成数据段重定位才能正确访问。文章分析了STM32启动时的默认时钟配置,解释了不同类型变量(可读写数据段、只读数据段、BSS段)的存储特性,并指出标准库工程通过__main函数自动完成重定位,而手写启动代码需自行实现。 关键点包括: 重定位三要素:源地址、目标地址、长度。

2025-12-30 11:42:22 974

原创 【ARM】STM32MP157裸机代码

STM32MP157芯片启动流程与内存映射解析 摘要: STM32MP157芯片采用多阶段启动流程:1)ROM代码根据BOOT引脚选择启动设备并加载FSBL(TF-A BL2);2)FSBL初始化时钟和DDR后加载SSBL(U-Boot);3)U-Boot加载Linux内核。关键点包括:ROM内置标准存储设备驱动;TF-A需针对不同板卡调整DDR和时钟配置;内存映射中0x2FFC0000为TF-A固定加载地址,0xC0100000为U-Boot加载地址。OP-TEE作为可选安全组件,在非安全场景可省略。

2025-12-30 09:48:32 895

原创 【ARM】从零封装STM32标准库

本文摘要了STM32F10x系列GPIO外设的寄存器定义和操作函数。头文件stm32f10x.h定义了GPIO和RCC外设的寄存器结构体、基地址映射、引脚编号枚举以及工作模式/速度配置类型。stm32f10x_gpio.h声明了三个关键函数:GPIO_SetBits/ResetBits用于控制引脚输出电平,GPIO_Init函数实现引脚模式初始化,通过分析GPIO_Mode参数判断输入/输出模式,并配置CRL/CRH寄存器设置具体引脚的工作模式和速度。

2025-12-24 19:37:44 479

原创 【ARM】ARM 汇编语言程序设计

本文介绍了ARM汇编语言程序设计的基础知识,主要包括:1)ARM汇编伪操作概念与分类,如数据定义伪操作(.byte、.short等)和汇编控制伪操作(.if、.macro等);2)ARM伪指令如ADR和LDR的使用方法;3)ARM汇编程序结构,包括分段格式和AAPCS调用标准;4)通过实验演示了ARM汇编编程实现数据相加操作的过程;5)介绍了C与汇编混合编程的内联汇编语法格式。文章还简要提及了Cortex-A7 GPIO的功能介绍,为后续硬件编程打下基础。

2025-12-24 19:30:25 981

原创 【ARM】ARM体系结构与开发基础(二)

本文介绍了ARM体系架构与开发基础,主要内容包括: ARM架构概述:解释了ARM公司的业务模式(仅设计CPU架构)、ARM架构分类(Cortex-A/M/R系列)及发展历程,重点说明了ARMV7和ARMV8架构特性。 关键概念区分:阐述了指令集、CPU核心和SoC的关系,以STM32MP157为例说明芯片设计层次。 Cortex-A7内核详解: 9种工作模式(User/SVC/IRQ等) 寄存器组织特点(43个32位寄存器,banked机制)

2025-12-24 18:44:26 834

原创 【ARM】VSCode和IAR工程创建

本文介绍了VSCode和IAR两种嵌入式开发环境的工程创建方法。在VSCode部分,详细说明了插件安装、编译工具链设置(ARM CC和GCC的对比及配置要点)、调试下载配置注意事项,并提供了STM32串口重定向的代码示例。IAR部分则介绍了界面布局、风格设置等基础操作。文章特别强调了不同编译器在启动文件、内存管理等方面的差异,并针对常见问题提供了解决方案,如GCC编译STM32固件库时的代码修改要求等。通过图文结合的方式,为开发者提供了实用的环境搭建指南。

2025-12-10 12:03:58 994

原创 【ARM】内核移植(编译)

本文详细介绍了Linux内核移植的关键步骤与流程。首先梳理了硬件工程师、系统工程师、驱动工程师等角色在项目中的职责分工与交付物。随后重点讲解了内核源码获取的两种渠道(官方镜像和芯片原厂BSP包)、解压和打补丁的详细操作,特别强调了日志记录的重要性。在配置环节,文章详细说明了如何生成标准板配置文件、安装必要工具库以及通过menuconfig进行内核定制。最后介绍了内核编译命令和版本管理注意事项,包括环境变量确认和merge_config.sh的使用技巧。整个过程涵盖了从源码获取到最终编译的完整流程。

2025-12-08 09:53:54 1024

原创 【ARM】BootLoader(Uboot)介绍

本文介绍了BootLoader(以U-Boot为例)的基本概念、启动流程和功能特点。BootLoader是操作系统内核运行前的一段程序,负责硬件初始化和内存映射,分为stage1(硬件初始化、准备RAM空间)和stage2(设备初始化、加载内核)两个阶段。U-Boot作为开源引导程序,支持多种处理器和操作系统,提供丰富的设备驱动和调试命令(如启动内核、擦写Flash等)。文章还列出了U-Boot的常用命令集,展示了其强大的系统部署和调试能力,是嵌入式开发的关键工具。

2025-12-05 14:58:48 1092

原创 【ARM】ARM体系结构与开发基础(一)

本文介绍了ARM体系结构与开发基础,重点讲解了ARM汇编实验和程序设计方法。主要内容包括:1)在Eclipse中创建ARM汇编工程的详细步骤,包括Makefile、start.S汇编程序和链接脚本的编写;2)ARM汇编语言程序设计,涵盖伪操作概念、数据定义伪操作、汇编控制伪操作等;3)ARM伪指令的使用方法,如ADR和LDR伪指令;4)ARM汇编程序结构格式和过程调用标准AAPCS;5)ARM内联汇编的格式说明。文章通过具体代码示例和操作截图,解析了ARM汇编开发的完整流程和关键知识点,为ARM提供了基础。

2025-12-05 13:12:29 1016

原创 【ARM】eclipse 中创建汇编工程

参考:Cortex-A7 开发环境搭建本文的目的在于帮你在主机上搭建一套完整的 Cortex-A7 交叉开发环境,从工具链安装到仿真、烧录与调试,为后续驱动与系统开发打下基础。假定你已学会了 Linux 基础命令、嵌入式交叉编译概念。

2025-12-05 12:09:12 646

原创 【ARM】ARM的介绍

ARM架构与开发环境概述 ARM架构包含三大系列:Cortex-M(微控制器)、Cortex-A(应用处理器)和Cortex-R(实时处理器)。Cortex-M面向低功耗嵌入式设备,Cortex-A支持复杂操作系统,Cortex-R用于硬实时控制。ARM寄存器组织包含43个32位寄存器,工作模式决定可访问的寄存器组。存储系统采用多级架构,包含MMU实现虚拟内存管理。处理器采用流水线技术,三级和五级流水线通过并行执行提高效率,但访存指令和互锁会影响性能。Cortex-A7裸机开发环境需特殊仿真器和工具链支持。

2025-12-04 21:53:41 922

原创 【PCB工艺】数模电及射频电路基础

本文系统介绍了数模电及射频电路基础知识,重点分析了半导体特性、二极管和三极管工作原理。主要内容包括:1)导体、绝缘体与半导体特性差异,N型与P型半导体载流子特点;2)PN结形成机制及二极管单向导电性,稳压二极管和发光二极管特性;3)三极管放大原理,工作区划分及特性曲线分析;4)门电路与组合逻辑设计要点;5)射频电路关键参数与信号处理技术。文章通过图文结合方式,深入浅出地阐述了电子元件的基本工作原理及其在电路中的应用特性。

2025-12-04 20:53:19 2004

原创 【汇编语言】ARM体系结构(含汇编开发)

ARM体系结构综述 本文系统梳理了ARM架构的发展历程与技术特性。ARM自1985年推出首款处理器ARM1以来,历经多次迭代,从ARMv1演进至ARMv9,形成了Cortex-A/R/M三大产品线,分别面向应用处理器、实时控制和微控制器场景。文章深入解析了ARM的硬件基础原理,包括三极管工作原理、门电路组成以及处理器的RISC架构特点。通过对比CISC与RISC指令集,阐述了ARM采用精简指令集的设计优势,最后介绍了ARM处理器的基本架构和寄存器访问机制,为理解嵌入式系统提供了硬件层面的理论基础。

2025-11-02 15:39:17 674

原创 【STM32项目】智能门锁项目(二)

摘要: 本文详细介绍了基于STM32的智能门锁系统开发流程。主要内容包括:1)构建标准库工程目录;2)移植FreeRTOS操作系统并进行验证测试;3)配置串口通信模块(USART1用于调试,USART2连接机智云,USART3连接AS608指纹模块)。文中提供了完整的项目代码(GitHub链接),重点讲解了FreeRTOS移植过程中的关键配置,如中断向量表绑定、任务调度设置等,并通过LED灯闪烁实验验证移植成功。文章还给出了串口初始化的示例代码,为后续功能模块开发奠定了基础。

2025-10-09 12:47:18 1186

原创 【STM32项目】智能门锁项目(一)

本文详细介绍了基于STM32F103RCT6的智能门锁系统设计与实现。系统支持密码、指纹和刷卡三种开锁方式,并具备Wi-Fi远程控制功能。硬件采用模块化设计,包含AS608指纹识别、MFRC522射频读卡、矩阵键盘等核心模块,通过FreeRTOS实现任务调度。软件方面集成了LVGL图形界面、MQTT通信协议和AES加密,确保系统安全性和交互性。项目还支持OTA升级和多方式组合验证(如"密码+指纹"),测试显示指纹识别准确率超99.9%,响应时间小于1秒。文章从硬件连接、程序设计到调试测试

2025-10-09 11:11:12 736

原创 【C语言】汇编语言与C语言的混合编程

C语言与汇编混合编程是在嵌入式开发中实现高性能和底层硬件控制的关键技术。文章介绍了两种主要方法:内联汇编(在C代码中直接嵌入汇编指令)和外联汇编(独立汇编文件通过链接调用)。内联汇编适用于简单指令(如寄存器操作、特殊指令),而外联汇编更适合复杂功能(如启动代码、中断处理)。文章重点阐述了ARM架构的AAPCS调用规范,确保C与汇编函数间的参数传递、寄存器使用和栈对齐等规则。通过具体示例(如饱和运算、协处理器访问、状态寄存器操作)说明了汇编在特定场景的必要性,并对比了不同工具链(GCC、Keil)的语法差异。

2025-09-02 10:35:25 960

原创 【项目思维】这是一份嵌入式软件开发的大纲(简化版)

本文介绍了嵌入式软件开发的学习路径和技术要点。主要内容包括: 基础技能:掌握C语言和Linux系统操作 单片机开发: 分类:MCU、MPU、DSP、FPGA 知识体系:初级/高级外设、RTOS、通信协议等 推荐学习平台:STM32、ESP32等 Linux驱动开发: 系统移植、设备驱动框架、设备树等 推荐书籍《深入理解Linux内核》 文章通过技术分类表格和知识树,系统梳理了嵌入式开发的核心内容,为学习者提供了清晰的学习框架和进阶方向。

2025-09-01 21:10:26 789

原创 【项目思维】嵌入式产业链与技术生态

本文系统梳理了嵌入式产业链的三大层级:上游(芯片设计制造)、中游(平台开发)和下游(终端应用)。详细解析了各环节的技术生态、代表企业及工程师角色定位,揭示从芯片到产品的完整价值链。通过产业链图谱展示了技术依赖关系,并给出从ARM架构学习到产品原型设计的成长路径建议,帮助开发者建立系统认知,实现从单一开发到系统解决方案工程师的职业进阶。文章强调理解全产业链对嵌入式工程师职业发展的重要性,为从业者提供了清晰的学习框架和发展方向。

2025-09-01 20:04:59 894

原创 【STM32】中断软件分支处理( NVIC 和 GIC)

本文对比分析了ARM架构中两种中断处理机制:NVIC(用于Cortex-M)和GIC(用于Cortex-A)。NVIC采用硬件向量分支,通过固定中断向量表自动跳转;而GIC通过软件分支处理,由操作系统统一入口分发中断。文章详细介绍了二者的架构特点、工作流程及在嵌入式系统中的应用差异,帮助读者深入理解ARM中断系统的底层机制。

2025-09-01 19:09:51 806

原创 【STM32】状态机(State Machine)

本文介绍了状态机(State Machine)的概念及其在嵌入式开发等领域的应用。状态机是一种通过状态、事件、动作和转移来描述系统行为的抽象模型,适用于按键识别、通信协议、UI界面等场景。文章详细讲解了状态机的基本组成元素(状态、事件、动作、转移),分类(有限状态机、Mealy/Moore状态机等),并提供了按键识别的状态图示和C语言实现模板(含状态定义、事件处理、状态转移表等)。最后强调了状态机调试方法和在复杂流程管理中的优势,适合嵌入式开发者学习参考。

2025-09-01 17:32:18 1590

原创 【项目思维】贪吃蛇(嵌入式进阶方向)

这篇博客呈现了一个贪吃蛇游戏项目的8个进阶阶段,从基础实现到构建嵌入式游戏引擎框架的系统性成长路径。前3个阶段完成核心功能开发、UI优化和架构重构;中间阶段(4-6)着重跨平台移植、数据持久化和系统稳定性;最后两个阶段(7-8)拓展创新玩法并抽象为通用游戏引擎。每个阶段都明确了技术要点和能力提升目标(如模块化设计、状态机管理、接口抽象等),通过项目演进培养编程思维、系统设计能力和工程实践能力。文章提供了详细的技术模块拆解和代码参考链接,适合嵌入式开发者循序渐进地提升项目开发能力。

2025-09-01 16:33:27 1494

原创 【STM32】贪吃蛇 [阶段 8] 嵌入式游戏引擎通用框架设计

本文提出了一种可扩展的嵌入式游戏引擎框架设计方法,通过将游戏功能拆解为独立模块(核心引擎、渲染层、音频层、输入层、存档系统、AI模块),实现了可移植、可复用、可扩展的架构。该框架采用状态机管理游戏流程,抽象硬件接口支持多种显示设备(OLED/TFT/LED),并提供通用功能模块(音效、输入、存档等)。以贪吃蛇游戏为例,展示了如何构建支持多游戏动态加载的开发平台,适用于教学演示、商业原型等场景,最终形成一套完整的嵌入式游戏开发解决方案。

2025-09-01 16:30:44 1430 2

原创 【STM32】贪吃蛇 [阶段 3] 增强模块结构(架构优化)

本文详细介绍了菜单系统的架构优化方案,提出一个模块化、可扩展的菜单框架设计。核心内容包括:1)采用分层架构设计,将系统划分为菜单管理、UI显示、输入管理等独立模块;2)通过状态机(GameState)管理程序流程;3)定义菜单项结构体和事件响应机制;4)实现显示层抽象,支持多种显示设备;5)采用事件驱动架构处理输入。该设计强调模块解耦、接口抽象和可扩展性,可轻松实现菜单嵌套、多语言支持等扩展功能,为游戏和应用系统提供通用架构方案。

2025-09-01 15:57:57 566

原创 【STM32】贪吃蛇 [阶段2](嵌入式进阶方向)

本文介绍了贪吃蛇嵌入式游戏中菜单系统的设计与实现。该系统采用状态驱动界面设计,包含主菜单、难度设置、声音开关和关于页面等主要功能模块。通过menu.c/menu.h模块化编程,实现了菜单结构的定义、渲染、按键响应和状态切换等功能。代码展示了菜单数据结构、绘制函数和按键处理逻辑,支持上下选择、左右切换、确认和返回等交互操作。该系统提升了游戏的专业性和用户体验,为后续游戏逻辑集成奠定了基础。

2025-09-01 15:26:50 352

原创 【项目思维】编程思维学习路线(推荐)

这篇博客提供了一个从零基础到架构级的编程思维系统学习路线,分为7个阶段: 思维准备:理解编程本质(抽象、分解、算法等) 基础逻辑:掌握顺序/选择/循环结构和简单项目实践 模块化设计:学习函数封装、状态机、接口设计 算法与数据结构:解决复杂问题(排序、递归、动态规划等) 系统架构:构建可扩展的软件系统(MVC、驱动抽象等) 工程化协作:编码规范、文档、版本控制与团队开发 高阶抽象与建模:UML、领域驱动设计及跨平台系统开发 每个阶段均包含学习目标、核心内容、实践项目和推荐资源(如《代码大全》《算法图解》等)。

2025-08-29 21:46:49 868

原创 【项目思维】通过编写一个贪吃蛇小程序,并移植到嵌入式设备上,解析编程思维的本质

摘要:本文通过贪吃蛇游戏开发案例,从控制台版本到STM32嵌入式移植,剖析编程思维本质。详细拆解了游戏初始化、输入处理、碰撞检测等核心模块的实现流程,提供完整C语言代码(含注释)。文章强调通过小项目整合技术栈的重要性,帮助新手建立"项目化学习"思维,为后续大型项目开发奠定基础。项目采用模块化设计,包含游戏流程伪代码、函数结构表和逐步实现指南,兼具教学性与实践性。

2025-08-29 18:18:42 1351

原创 字库原理 GB2312-80

GB2312-80汉字编码原理是通过区位码和偏移计算实现汉字点阵数据存储的。每个汉字对应一个区号和位号(如"中"为54区48位),计算机存储时需加上0xA0偏移以避免与ASCII冲突。汉字点阵按区位码顺序排列,通过公式计算偏移量获取字模数据(16x16点阵占32字节)。该机制实现了嵌入式系统中汉字的快速显示,是图形界面和字符屏的基础技术。文章详细介绍了区位码转换、偏移计算和点阵读取的全过程,适合电子信息、嵌入式开发者参考。

2025-08-27 20:09:28 716

原创 【STM32】将 FreeRTOS移植到STM32F103RCT6 详细流程

本文详细介绍了将FreeRTOS移植到STM32F103RC的完整步骤。首先创建项目根目录并建立标准子文件夹结构(apps/doc/drivers等),然后从标准库和FreeRTOS源码中复制必要文件。接着在Keil中新建项目,配置设备型号为STM32F103RC,设置文件分组并添加必要源文件。文中重点说明了需要修改的中断处理函数名称(vPortSVCHandler等)和头文件路径配置,并解决了编译中出现的FreeRTOSConfig.h缺失问题。最后通过创建LED闪烁和蜂鸣器任务来验证系统移植成功。

2025-08-27 17:58:49 766

原创 【STM32】CubeMX(十三):RT-THREAD

本文介绍了在STM32平台上使用CubeMX集成RT-Thread实时操作系统的完整流程。主要内容包括:RT-Thread的特性(多任务调度、丰富组件、CMSIS支持等);通过CubeMX安装RT-Thread软件包的具体步骤(从创建工程、添加PDSC链接到参数配置);重点演示了如何创建LED闪烁线程任务,并提供了完整的代码示例。文章还对比了CubeMX集成方案与官方版本的区别,给出了RT-Thread源码、Env工具和文档的获取方式。该教程可帮助开发者快速构建基于STM32的RT-Thread实时系统。

2025-08-26 18:46:40 1753

原创 【STM32】CubeMX(十二):FreeRTOS消息队列

摘要 本文介绍了使用 STM32 + HAL 库 + FreeRTOS 消息队列 实现任务间通信的方法。FreeRTOS 提供消息队列、任务通知等交互方式,其中消息队列适用于异步数据传输和任务间通信。文章详细讲解了 CubeMX 配置流程,包括启用 FreeRTOS、配置消息队列和任务,并提供了代码示例,涵盖队列创建、任务发送/接收数据以及中断处理。通过按键触发和外部中断演示了数据传递,帮助开发者快速掌握 FreeRTOS 消息队列的应用。

2025-08-25 21:38:33 1512

原创 【STM32】CubeMX(十一):FreeRTOS任务挂起与解挂

本文介绍了基于STM32 HAL库和FreeRTOS的任务挂起与恢复机制实现。通过CubeMX配置创建两个任务:myTask01控制蓝灯闪烁(500ms周期),StartTask监控按键(PC1)状态。当按键按下时,通过vTaskSuspend()挂起蓝灯任务,再次按键则用vTaskResume()恢复任务。文章详细说明了任务状态转换机制、CubeMX配置方法(包括RTOS启用和任务参数设置),并提供了关键代码解析,特别是按键边沿检测逻辑和任务控制实现。最后展示了运行效果:按键切换可实现蓝灯闪烁的暂停与恢复

2025-08-22 17:15:40 982

原创 【STM32】CubeMX(十):FreeRTOS任务创建与删除

本文介绍了如何在STM32上使用HAL库结合FreeRTOS实现任务创建与删除机制。主要内容包括:通过CubeMX配置FreeRTOS参数,创建两个任务分别控制LED闪烁;详细说明了任务控制块(TCB)结构和任务生命周期管理;给出了具体的代码实现,其中StartTask在运行10次后自动删除,而myTask01保持常驻运行。文章还提供了CubeMX的配置截图和关键代码片段,完整展示了从工程配置到任务管理的实现过程。

2025-08-22 12:24:10 1051

原创 【STM32】HAL库中的实现(九):SPI(串行外设接口)

SPI(Serial Peripheral Interface)是一种全双工主从通信协议,采用4线制(SCK时钟、MOSI主发从收、MISO主收从发、CS片选),支持多从机连接。W25Qxx系列SPI Flash存储器(如W25Q64)具有大容量、长寿命特性。本文通过STM32 HAL库实现了SPI驱动W25Qxx的完整方案。

2025-08-21 18:54:06 2311

原创 【STM32】HAL库中的实现(八):I2C通信(以 AT24C02 为例)

本文介绍了基于HAL库的STM32硬件I2C驱动AT24C02 EEPROM的实现方法。主要内容包括:1)通过CubeMX配置I2C1外设(PB6/PB7引脚)和时钟树;2)AT24C02硬件连接说明及地址设置;3)HAL库I2C函数的使用方法,重点讲解读写操作的代码实现;4)调试技巧和注意事项。文章强调编程思维的重要性,建议先理解代码逻辑再移植,而非直接复制代码。项目实现了从CubeMX配置到I2C读写EEPROM,再到串口输出验证的完整流程,适用于STM32F1/F4系列芯片。

2025-08-21 08:35:08 1409

原创 【STM32】HAL库中的实现(七):DMA(直接存储器访问)

DMA(直接内存访问)是一种外设与内存直接传输数据的机制,无需CPU介入。相比传统方式(ADC→CPU→RAM),DMA(ADC→DMA→RAM)能显著提升效率,释放CPU资源。本文以STM32为例,介绍通过CubeMX配置ADC和DMA的步骤:1)设置ADC通道和触发模式;2)配置DMA为循环模式;3)启动HAL_ADC_Start_DMA函数实现自动采样。数据存入数组后可直接读取,适用于高频采样场景。代码示例展示了单通道ADC采样值的获取与串口打印流程。

2025-08-20 12:05:50 1413

原创 【STM32】HAL库中的实现(六):DAC (数模转换)

本文介绍了STM32中DAC(数模转换器)的基本原理与应用方法。DAC可将0-4095的数字信号转换为0-3.3V的模拟电压输出,支持12位分辨率、双通道输出。文章详细说明了CubeMX配置步骤、HAL库操作流程(包括初始化、启动、设置输出值等),并提供了DAC与ADC配合实现双向转换的实验方案。通过代码示例展示了输出电压渐变逻辑,并给出了多种验证方法(万用表、ADC采样、串口输出、示波器观测)。该实验方案可用于音频输出、波形生成等实际应用场景。

2025-08-20 11:07:05 1185

原创 【STM32】HAL库中的实现(五):ADC (模数转换)

摘要:本文介绍了STM32中ADC(模数转换器)的基本概念与配置方法,实现光敏传感器模拟信号采集并通过串口输出。ADC特性包括12位分辨率(0~4095)、0~3.3V输入范围,支持单次/连续转换及DMA传输。通过STM32CubeMX配置ADC1_IN10通道(PC0引脚),设置软件触发、右对齐和239.5周期采样时间。HAL库关键函数包括启动转换(HAL_ADC_Start)、获取数值(HAL_ADC_GetValue)等。示例代码展示了ADC校准、数据采集和串口输出的完整流程,实现每秒1次的光照检测。

2025-08-19 17:50:43 884

原创 【STM32】HAL库中的实现(四):RTC (实时时钟)

摘要: STM32 HAL库中的RTC(实时时钟)模块提供三种中断源(秒中断、闹钟中断、溢出中断),用于低功耗唤醒和定时任务。HAL库默认仅封装闹钟中断,秒中断和溢出中断需裸机配置。通过CubeMX配置RTC时钟源(如LSI)并启用中断后,需在RTC_IRQHandler中调用HAL_RTCEx_RTCIRQHandler,并在回调函数HAL_RTCEx_RTCEventCallback中处理业务逻辑(如每秒打印时间)。代码示例展示了秒中断的完整实现流程,包括初始化、中断使能及回调函数配置。

2025-08-05 20:32:57 1900

原创 【STM32】HAL库中的实现(三):PWM(脉冲宽度调制)

摘要: 本文介绍了HAL库中PWM功能的实现原理与应用。PWM通过定时器的输出比较功能产生周期性脉冲信号,广泛应用于电机调速、LED亮度控制等场景。文章详细讲解了PWM的核心参数(PSC、ARR、CCR)及其计算公式,并提供了STM32CubeMX配置流程和HAL库常用API。重点以呼吸灯为例,展示了如何使用TIM2生成PWM信号,结合TIM3中断动态调整占空比,实现LED亮度渐变效果。最后给出了完整的代码实现方案,包括初始化配置、中断回调函数和参数计算方法。

2025-08-05 20:04:55 1918

原创 【STM32】HAL库中的实现(二):串口(USART)/看门狗(IWDG/WWDG)/定时器(TIM)

本文介绍了STM32 HAL库中USART串口和看门狗的实现方法。在USART部分,详细展示了配置流程和关键代码实现,包括中断回调函数、数据接收处理以及printf重定向等核心功能。看门狗部分则重点说明了IWDG的配置方法及喂狗操作。文章还剖析了HAL库内部工作机制,包括USART的初始化流程、数据收发原理和中断处理机制。通过具体的代码示例(如串口控制LED、数据收发处理等),帮助开发者快速掌握HAL库中这两个常用外设的编程方法。

2025-07-31 21:37:50 1089

【嵌入式系统开发】RT-Thread env工具用户手册:开发辅助工具详解与使用指南

RT-Thread env 工具用户手册。

2025-08-26

W25Q64数据手册.pdf

W25Q64数据手册.pdf

2025-07-21

STM32JTAG / SWD 调试原理简析 文章对应的完整源代码资源 STM32F103RC的在线仿真功能 解压后打开文件 MDK-ARM\STD-Proj.uvprojx

【STM32】JTAG / SWD 调试原理简析 文章对应的完整源代码资源。STM32F103RC的在线仿真功能。 解压后打开文件夹 STD_STM32F103RC_DeBug\MDK-ARM\STD_Proj.uvprojx

2025-06-23

标准库新建 STM32 工程的基本目录结构:STD-STM32F103RC-Demo

标准库新建 STM32 工程的基本目录结构:STD_STM32F103RC_Demo

2025-03-14

数据结构与算法(附代码详解)

包含两个文件:数据结构_DataStructure.pdf、数据结构_Algorithm.pdf;包含所有数据结构和算法分析(附代码)。

2025-01-06

Makefile 使用手册完整版 包含完整使用指南 + 项目的创建和管理详细流程

Makefile 使用手册完整版。包含完整使用指南 + 项目的创建和管理详细流程。

2024-12-19

运行开发板前的网络配置: 资源内容包含演示代码中的音乐播放器配置的详细过程 + 运行开发板之前的网络服务配置

运行开发板前的网络配置: 资源内容包含演示代码中的音乐播放器配置的详细过程 + 运行开发板之前的网络服务配置。

2024-12-14

putty-外部终端.exe

putty-外部终端.exe

2024-12-10

Linux man中文文档

Linux man中文文档

2024-11-12

《流程图、图灵机和只有两条形成规则的语言》论文原版

Bohm C., Jacopini G. "Flow diagrams, Turing machines and languages with only two formation rules." Communications of the Association for Computing Machinery, Vol.9, pp. 366--371. 1966. 1966年,计算机科学家 Bohm 和 Jacopini 证明了这样的事实:任何简单或复杂的算法都可以由顺序结构、选择结构和循环结构这三种基本结构组合而成。所以,这三种结构就被称为程序设计的三种基本结构。也是 结构化程序设计 所必须采用的结构。

2024-10-19

Vim中文手册-2.3.0版本

Vim中文手册-2.3.0版本 VIM 用户手册 | 包含所有命令的更多详细信息

2024-10-17

JQ实现--TAB切换登录界面(兼容至IE8)

JQ实现TAB选项卡登录界面,兼容IE8,IE8以下版本不支持。

2018-06-08

空空如也

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

TA关注的人

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