自定义博客皮肤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)
  • 收藏
  • 关注

原创 从 N32L40x 的 SLEEP 例程说起:把 printf 重定向、EXTI 唤醒、WFI 睡眠一次讲透

本文分析了国民技术N32L40x SDK中的低功耗例程,重点讲解了三个关键点:1)通过重写fputc实现printf串口日志输出,包括换行符处理和MicroLIB配置;2)主程序通过闪灯延时后进入睡眠模式,按键唤醒后继续执行而非复位;3)深入解析PWR_EnterSLEEPMode函数,说明如何通过操作SCB寄存器实现浅睡眠,以及WFI/WFE指令的工作机制。文章还特别强调了清除中断挂起标志的重要性,并区分了Sleep-now与Sleep-on-exit两种唤醒模式的行为差异。

2026-07-16 17:07:34 375

原创 【编程思路】面向接口编程的写法

本文介绍了在C语言中通过函数指针结构体实现面向接口编程的方法。核心思想是定义一个包含函数指针的结构体(如Hal_CommcProtocFuncInfoHandle),描述通信协议的基本操作接口。具体协议(如UART、CAN)分别实现这些函数,并注册到结构体中。上层应用通过统一的接口指针调用,不直接依赖具体实现,从而实现解耦。文中还展示了带上下文指针的工程化实现,支持多实例,并通过封装层提高调用安全性。这种方法类似C++的虚函数表机制,在C中实现了多态和接口抽象。

2026-07-13 11:17:52 506

原创 【RTOS快速入门】06_任务调度算法(4)

本文通过实验分析FreeRTOS调度算法的三个核心配置参数:抢占(configUSE_PREEMPTION)、时间片轮转(configUSE_TIME_SLICING)和空闲任务让步(configIDLE_SHOULD_YIELD)。实验表明:1)抢占使能时高优先级任务可打断低优先级任务;2)时间片轮转使能时同优先级任务会轮流执行;3)空闲任务让步使能时空闲任务会让出CPU给用户任务。通过逻辑分析仪观测任务执行时序,验证了不同参数配置对任务调度行为的影响,为FreeRTOS调度策略的定制提供了实践依据。

2026-03-16 08:41:59 506

原创 【RTOS快速入门】06_空闲任务及其钩子函数(3)

本文探讨了FreeRTOS中空闲任务和钩子函数的工作原理及应用。通过示例代码演示了任务创建、删除的流程,说明空闲任务在清理被删除任务内存中的关键作用。文章详细分析了空闲任务的创建过程、功能扩展(如低优先级后台处理、系统空闲时间测量等)以及修改方法。同时介绍了钩子函数的使用限制和实际应用场景,包括在调试过程中遇到的问题及解决方案。最后强调合理使用空闲任务和钩子函数对实现高效嵌入式系统开发的重要性,它们是优化系统资源管理和功耗控制的核心工具。

2026-03-16 08:40:30 617

原创 【RTOS快速入门】06_任务状态实验(2)

本文通过FreeRTOS任务管理实验,实现了任务状态控制与延时函数对比。实验使用Task1控制Task3进入挂起状态并在20个Tick后恢复,同时让Task2通过vTaskDelay主动进入阻塞态。通过逻辑分析仪观察任务执行时序,发现时钟频率配置问题并给出两种解决方案。重点对比了vTaskDelay和xTaskDelayUntil两个延时函数:前者在任务执行时间不固定时会导致周期不稳定,后者通过指定起始时间和间隔可实现精确周期控制。实验结果表明,xTaskDelayUntil能有效保证任务的周期性执行。文中

2026-03-15 11:32:41 523

原创 【DMA】存储器到外设模式实验2

本文介绍了使用DMA将存储器数据传输至USART外设的实验设计。硬件上采用CH340G实现MCU与PC的连接,软件部分通过配置USART和DMA模块实现数据传输。USART配置包括时钟使能、GPIO复用模式设置和波特率等参数初始化;DMA配置涉及时钟开启、数据流复位及传输方向设定(内存到外设)。实验通过DMA将指定存储器数据批量传输至USART数据寄存器,最终在PC端串口调试助手显示,实现了高效的数据传输过程。

2026-03-15 11:23:02 677

原创 【RTOS快速入门】06_任务状态理论讲解(1)

本文讲解了FreeRTOS任务切换的基础机制和任务状态管理。首先通过tick定时器实现1ms时间片轮转调度,确保任务公平执行。重点分析了任务状态图,包括就绪、运行、阻塞和暂停四种状态及其转换条件。特别区分了暂停状态(主动休息)和阻塞状态(被动等待)的差异。最后介绍了FreeRTOS使用链表高效管理各状态任务的实现方式,包括就绪链表、阻塞链表等数据结构,以及在tick中断时通过链表查找切换任务的过程。这些底层机制共同构成了FreeRTOS任务调度的核心原理。

2026-03-14 00:06:11 448

原创 【RTOS快速入门】05_动态_静态创建任务(2)

本文通过四个实验探究FreeRTOS任务调度机制:1)优先级实验验证高优先级任务优先执行,同优先级任务交替执行;2)任务删除实验展示动态删除任务1和自身的效果;3)多实例任务实验证明同一函数创建不同任务时拥有独立栈空间;4)栈大小实验通过定义大数组耗尽栈空间导致程序崩溃。这些实验直观呈现了FreeRTOS的任务调度优先级规则、生命周期管理和内存分配机制,为理解RTOS内核提供了实践基础。

2026-03-14 00:04:37 542

原创 【RTOS快速入门】05_动态_静态创建任务(1)

本文介绍了FreeRTOS中静态创建任务的方法。首先通过学生信息管理的例子说明动态内存分配的不足,引出静态创建任务的必要性。然后分析源码中TCB结构体和xTaskCreate()函数,提出如何预先分配TCB和栈空间的问题。重点演示了使用xTaskCreateStatic()函数静态创建任务的过程,包括预定义任务栈和控制块、处理编译警告、解决未定义符号错误等关键步骤。最后通过调试器验证了静态任务创建的成功实现,为FreeRTOS任务管理提供了另一种内存分配方案选择。

2026-03-13 00:06:14 546

原创 【RTOS快速入门】07_同步互斥与通信概述

本文探讨了FreeRTOS中同步与互斥的核心概念及应用。首先介绍了临界资源的概念及访问保护机制,通过伪代码展示了临界区的基本实现逻辑。然后通过两个有缺陷的代码示例分别说明:1)任务间同步时轮询方式会浪费CPU资源,建议采用阻塞机制;2)互斥访问时单纯标志位仍存在竞争隐患。最后对比分析了队列、事件组、信号量、任务通知和互斥量等内核同步方法的特性,包括数据结构、操作方式和适用场景,并配以图形化总结。文章指出理解这些同步机制的本质差异,对设计可靠的多任务系统至关重要。

2026-03-13 00:03:34 535

原创 【RTOS快速入门】04_自己的第一个FreeRTOS程序及引申

本文介绍了如何在FreeRTOS中创建并执行两个任务,分别通过串口输出"1"和"2"。详细讲解了xTaskCreate函数的使用方法,包括参数设置和任务句柄定义。同时阐述了FreeRTOS的数据类型规范、变量命名规则、函数命名前缀规则(包含返回值类型和定义文件信息)以及宏定义规范。这些编码规范有助于提高代码可读性和跨平台兼容性,特别考虑了8位处理器等资源受限环境的优化需求。

2026-03-12 07:56:20 594

原创 【RTOS快速入门】03_从官方源码精简出第一个FreeRTOS程序(2)

本文介绍了如何在精简版FreeRTOS程序中增加串口打印功能。通过修改串口初始化函数,配置USART1的GPIO和通信参数,并实现fputc函数重定向标准输出到串口。调试过程中解决了FILE未定义、函数隐式声明等编译错误,最终在主函数中成功调用printf输出"hello world"。该功能为FreeRTOS程序提供了基础的调试信息输出能力,使开发者能够更直观地观察程序运行状态。

2026-03-12 07:55:11 600

原创 【RTOS快速入门】03_从官方源码精简出第一个FreeRTOS程序(1)

本文介绍了如何精简FreeRTOS源码的过程。首先从官网下载源码后,通过删除不必要的目录和文件(保留核心功能文件)来缩小代码体积。接着使用Source Insight工具阅读源码,同步修改编译器代码,逐步删除LCD相关等无关代码。通过注释和删除未使用的函数调用,最终解决了多个"Undefined symbol"编译错误,实现了零报错的精简版本。该过程展示了如何将官方FreeRTOS源码定制为适合特定项目需求的最小化版本,为后续增加串口打印功能奠定了基础。

2026-03-11 00:57:17 647

原创 【RTOS快速入门】02_堆和栈

本文介绍了RTOS中堆和栈的概念与应用。堆是一块可动态分配释放的内存区域,通过代码示例展示了简单的内存分配实现。栈则用于函数调用时的局部变量和返回地址存储,演示了函数调用过程中栈的操作流程。文章还通过调试验证了堆内存分配的正确性,并强调了多任务环境下各任务栈区的独立性。堆和栈的正确使用对RTOS开发至关重要。

2026-03-11 00:54:23 489

原创 【RTOS快速入门】01_单片机架构

本文通过类比方式介绍了RTOS(实时操作系统)的基本概念及其与传统单片机程序的差异。文章以母亲同时喂饭和回复信息为例,说明RTOS通过任务调度实现多任务并行处理的能力。对比了单线程程序与RTOS程序的代码结构差异,并解释了RTOS在实时性要求高的场景中的重要性。此外,文章还简要探讨了CPU架构(如ARM和RISC-V)对RTOS的影响,强调深入理解CPU架构对RTOS移植和优化的必要性。

2026-03-10 12:47:16 535

原创 【TIM】高级定时器实验(3){ PWM 互补输出实验 }

摘要:本文介绍了基于STM32的PWM波形输出实验,通过TIM8定时器的主通道(PC6)和互补通道(PA5)输出互补PWM信号,并添加断路功能(PA6)和死区控制。硬件设计包括引脚连接和按键调节占空比,软件部分详细说明了GPIO复用配置、定时器初始化流程及关键代码实现,最终通过示波器可观察到互补PWM波形。实验重点演示了高级定时器的互补输出、断路保护和死区插入功能。

2026-03-10 11:21:42 653

原创 【TIM】基本定时器定时实验(1)

摘要:本文介绍了STM32F42xxx系列控制器的定时器功能与应用。该系列包含2个高级控制定时器、10个通用定时器和2个基本定时器,主要用于定时任务、PWM生成、信号测量等。重点讲解了基本定时器TIM6/TIM7的结构与工作原理,包括时钟源选择、计数器配置和周期计算方法。通过设置预分频器(TIMx_PSC)和自动重装载寄存器(TIMx_ARR)可实现精确定时,并详细解析了定时器初始化结构体各参数的作用。这些定时器功能为工业控制中的电机PWM控制等应用提供了基础支持。

2026-03-09 18:54:22 904

原创 【TIM】基本定时器定时实验(2)

本文介绍了使用STM32基本定时器实现RGB彩灯定时闪烁的方法。通过配置TIM6定时器,设置预分频值和计数周期,使其每0.5秒产生一次中断。在中断服务函数中翻转RGB彩灯状态,实现亮灭交替效果。硬件方面无需额外GPIO配置,软件部分重点包括定时器初始化、NVIC中断优先级设置以及中断处理函数的实现。关键参数为8400预分频和5000计数周期,配合84MHz系统时钟,可精确控制0.5秒定时。该方案展示了基本定时器在简单定时任务中的应用。

2026-03-09 15:28:41 925

原创 【DAC】 输出正弦波实验(2)

本文介绍了利用STM32的DAC和定时器输出正弦波的方法。硬件方面,使用PA4和PA5作为DAC输出通道,需注意避免与其他外设冲突。软件实现包括:1)通过Python脚本生成32点的正弦波数据表;2)配置DAC工作模式为定时器触发;3)初始化DMA自动传输波形数据。实验结果表明,该方法能有效输出正弦波信号,通过调整定时器间隔可改变波形周期。文中提供了完整的代码实现方案,包括DAC寄存器配置、GPIO设置及DMA初始化流程。

2026-03-08 20:50:17 725

原创 【DAC】 输出正弦波实验(1)

本文介绍了STM32中DAC(数字模拟转换器)的基本原理和应用。DAC用于将数字信号转换为模拟电压输出,其参考电压范围为2.4-3.3V,具有两个独立输出通道。文章详细解析了DAC功能框图,包括参考电压、转换通道、触发源等关键部件,并阐述了DHRx寄存器的数据传输机制。最后介绍了DAC初始化结构体的配置参数,包括触发模式、波形生成、输出缓冲等设置选项,为后续实现正弦波输出实验奠定理论基础。

2026-03-08 13:05:58 678

原创 【ADC】电压采集实验(4){STM32 三个 ADC 交叉采样:单通道高速采集(DMA 循环传输)}

本文介绍了STM32三重ADC交替模式的实现方法。该模式通过ADC1、ADC2和ADC3三个转换器交替采样同一通道,利用转换阶段的空闲时间实现高速数据采集。硬件设计采用单通道输入,软件配置包括:1)初始化ADC引脚为模拟输入;2)启用三个ADC和DMA时钟;3)配置DMA传输规则数据;4)设置三重交替模式,4分频采样;5)配置各ADC参数;6)启用DMA请求和自动转换。该模式相比独立ADC显著提高了采样效率,适用于需要高速采集单通道信号的场景。

2026-03-02 16:49:25 1005

原创 【ADC】电压采集实验(3){STM32 ADC 扫描模式 + DMA 循环传输:多通道采集实现}

本文介绍了STM32独立模式多通道ADC采集实验的实现方法。硬件设计上通过排针引出多个ADC通道引脚,需注意引脚独占使用。软件设计采用DMA+ADC多通道连续采样模式,主要步骤包括:初始化ADC引脚为模拟输入、使能时钟、配置DMA传输、设置ADC工作模式等。代码分析展示了三个ADC通道的宏定义配置、GPIO初始化函数以及核心的ADC工作模式配置函数,实现了多通道数据通过DMA自动传输到内存的功能。该方案可高效完成多个模拟信号的同步采集,适用于需要同时监测多个传感器信号的场景。

2026-03-02 16:00:49 606

原创 【ADC】电压采集实验(2){STM32F4 ADC 独立模式 + 中断服务函数:电位器电压采集}

本文介绍了基于STM32的独立模式单通道ADC采集实验。通过配置开发板上的电位器作为模拟输入源,利用ADC1的通道8(PB0引脚)进行电压采集。实验采用12位分辨率、连续转换模式,通过软件触发启动转换,并在中断服务函数中读取转换结果。硬件设计使用滑动变阻器提供0-3.3V可变电压输入,软件设计包含GPIO初始化、ADC模式配置、中断优先级设置等关键步骤。主程序通过串口实时输出采集的电压值,采样周期设置为56个时钟周期以平衡精度与速度。该实验实现了不使用DMA的情况下,通过中断方式完成ADC数据采集与传输的功

2026-03-02 15:03:05 910 1

原创 【ADC】电压采集实验(1){STM32F4 ADC 功能框图剖析 + 12 位电压采集公式与实现}

本文介绍了STM32F407ZGT6微控制器中ADC(模数转换器)的基础知识。该芯片包含3个12位ADC,支持独立、双重和三重工作模式。文章详细解析了ADC功能框图,包括电压输入范围(0-3.3V)、19个输入通道(16个外部+3个内部)、规则/注入通道的转换顺序设置、多种触发源选择、转换时间计算(采样周期3-480个ADC时钟周期)以及数据寄存器的使用方法。同时介绍了中断处理机制(转换结束、模拟看门狗和溢出中断)和DMA数据传输功能,最后给出了模拟电压到数字值的转换公式。

2026-03-01 21:21:28 856

原创 【电容触摸屏】触摸画板实验(3)

本文介绍了基于STM32F407和GT5688触摸控制器的电容触摸屏驱动实现。硬件部分详细说明了触摸面板、液晶面板与主板的连接方式,重点分析了STM32与GT5688芯片通过软件模拟I2C的通信接口设计。软件部分从官方Linux驱动移植了GT5688驱动程序,实现了I2C时序控制、GPIO初始化、中断处理等核心功能。文章最后展示了如何利用这些驱动开发一个简易触摸画板应用,通过获取触摸坐标实现屏幕绘图功能。整个方案采用软件模拟I2C方式,降低了硬件依赖性,为嵌入式系统触摸功能开发提供了实用参考。

2026-02-27 18:32:54 866

原创 【电容触摸屏】触摸画板实验(2)

本文介绍了电容触摸屏控制芯片GT5688的工作原理和配置方法。该芯片通过I2C接口与外部控制器通信,具有26个激励信号输出引脚和14个信号检测引脚。上电时序决定了I2C设备地址的选择(0x14或0x5D)。文章详细说明了寄存器配置要点,包括分辨率设置、触点数量、模式切换等,并介绍了坐标读取流程:当INT引脚产生上升沿中断时,控制器需在规定周期内读取状态寄存器和坐标数据寄存器,获取触点位置信息。GT5688通过track id区分不同笔迹,实现多点触控功能。

2026-02-27 15:56:56 859

原创 【电容触摸屏】触摸画板实验(1)

本文介绍了电容触摸屏的基础知识,主要分为电阻式和电容式两种。电阻式触摸屏通过压力使导电层接触来检测单点触摸,成本较低;电容式触摸屏则利用电容效应检测多点触摸,精度更高。文章详细阐述了两种触摸屏的工作原理:电阻屏通过测量触点电压确定坐标,而电容屏通过检测电极间电容变化定位触摸点。电容屏特有的菱形电极结构使其支持多点触控,广泛应用于智能设备,而电阻屏多用于工控领域。两者可通过绝缘体触摸测试进行区分。

2026-02-27 13:37:30 904 2

原创 【LCD】液晶显示中英文实验(5)

本文介绍了实现任意大小字符显示的方法。通过编写缩放函数ILI9806G_zoomChar,将原始1bit/像素的字模数据转换为8bit/像素并缩放至目标尺寸。核心函数ILI9806G_DisplayStringEx支持中英文混合显示,自动处理32x32中文和16x32英文字模的缩放,并实现坐标越界换行和反色显示功能。测试程序验证了该方案能灵活显示不同尺寸字符,解决了传统字库固定尺寸的限制问题。(150字)

2026-02-26 21:47:05 622 2

原创 【LCD】液晶显示中英文实验(4)

本文介绍了在嵌入式系统中显示中英文字符的两种实现方法:外部Flash存储和SD卡存储。硬件设计包括获取字模数据、编写液晶显示函数和测试程序。代码分析部分详细说明了显示32×32点阵汉字的函数实现,通过GetGBKCode从外部存储器读取字模数据并逐位绘制。同时提供了显示混合字符串的函数,支持自动换行处理。最后介绍了从SPI-Flash获取GB2312/GBK编码字模数据的方法,包括地址计算和初始化流程。这些方法适用于需要同时显示中英文的嵌入式显示应用场景。

2026-02-26 15:18:08 856 2

原创 【LCD】液晶显示中英文实验(3)

本文介绍了基于STM32芯片的液晶显示实验,重点探讨了字模数据存储在内部Flash中的实现方法。文章分为硬件设计和ASCII字符显示两部分:硬件设计部分对比了内部字库和外部字库两种模式的特点;ASCII字符显示部分详细说明了编程要点,包括获取字模数据、编写显示函数等,并提供了8x16点阵的ASCII字模数据数组实现代码。该方案适用于字库数据量较小的应用场景,为后续大容量字库的外部存储方案奠定了基础。

2026-02-25 20:10:41 816

原创 【LCD】液晶显示中英文实验(2)

本文介绍了字模的基本概念及其在液晶显示中的应用。字模是将字符形状数字化后的像素点阵数据,通过编码与字模的映射关系实现字符显示。文章详细讲解了字模的构成(16×16点阵)、显示原理(逐位扫描并绘制像素点)以及如何利用取模软件生成GB2312字模。针对大容量字模存储问题,提出了将数据存入外部Flash芯片的方案,并阐述了按需读取的实现方法。最后通过实例验证了字模寻址公式的正确性,为后续液晶显示开发提供了理论基础。

2026-02-25 18:25:53 702

原创 【LCD】液晶显示中英文实验(1)

本文介绍了计算机字符编码的发展历程,从ASCII编码到Unicode标准。ASCII编码仅支持英文字符,而中文编码如GB2313、GBK采用双字节表示汉字。为满足国际化需求,Unicode制定了UTF-32、UTF-16和UTF-8等编码方案。其中UTF-8因兼容ASCII、无字节序问题成为主流,但汉字存储效率较低。文章还提到BOM标记用于区分编码方式,但因兼容性问题未广泛使用。这些编码知识为后续LCD显示实验奠定了基础。

2026-02-11 21:28:51 897

原创 【FSMC】LCD液晶显示实验(4)

本文介绍了使用FSMC外设控制4.3寸ILI9806G液晶屏的硬件设计与软件实现。硬件部分详细解析了液晶屏的触摸面板、液晶控制器和PCB主板结构,以及FSMC接口的连接方式。软件部分通过建立bsp_nt35510_lcd.c和.h文件,实现了FSMC初始化、8080时序仿真、屏幕初始化配置及像素显示功能。文章还提供了完整的代码分析,包括地址定义、引脚配置和显示参数设置,为开发者移植和优化屏幕驱动提供了参考。

2026-02-11 17:54:50 1045

原创 【FSMC】LCD液晶显示实验(3)

本文主要介绍了FSMC控制ILI9806G液晶屏的硬件设计和软件实现。硬件部分详细说明了液晶屏与开发板的连接方式,包括CS、RS、数据线等接口信号;软件部分讲解了FSMC外设配置、8080时序模拟以及底层驱动函数编写。文章重点剖析了如何通过STM32的FSMC接口驱动854x480分辨率的RGB565液晶屏,包括初始化流程、像素控制及图形绘制等核心功能实现。该内容有助于深入理解液晶屏底层驱动原理,适合需要掌握显示屏驱动开发的技术人员参考。

2026-02-10 21:20:38 949

原创 【FSMC】LCD液晶显示实验(2)

本文介绍了野火4.5寸液晶屏的结构与工作原理。该液晶屏由触摸面板和液晶面板组成,通过ILI9806G控制器实现显示功能。重点分析了ILI9806G的内部结构,包括GRAM显存、控制信号线和背光源控制等模块。详细说明了8080接口的通讯方式,包括CSX、RESX、DCX、WRX和RDX等关键信号线的作用。液晶屏采用16位数据线的RGB565格式,STM32通过8080接口发送命令和数据来控制显示内容。文章为理解液晶屏的硬件连接和通信协议提供了清晰的技术说明。

2026-02-10 14:48:17 1025 8

原创 【FSMC】LCD液晶显示实验(1)

本文介绍了显示屏的基本原理、分类及控制技术。主要内容包括:1)LCD、LED和OLED三种主流显示屏的工作原理与技术特点,LCD通过液晶电光效应调控光线,LED直接自发光,OLED兼具高像素密度和自发光优势;2)显示屏关键参数如像素、分辨率、色彩深度等;3)液晶控制原理,涉及RGB接口信号、数据传输时序及显存概念。文章对比了不同显示技术的优缺点,指出OLED因其优异性能有望成为未来主流显示方案,并详细解析了STM32微控制器驱动液晶屏的硬件实现方式。

2026-02-09 17:59:44 1021

原创 【FSMC】扩展外部 SRAM(3)

摘要 本实验通过STM32的FSMC接口扩展外部SRAM存储器,使用型号为IS62WV51216的1MB容量SRAM芯片。硬件设计中将SRAM连接到FSMC的Bank1_NORSRAM4区域(地址范围0x6C000000-0x6FFFFFFF),通过FSMC_NE4使能信号控制。软件部分主要包括初始化GPIO和FSMC时钟、配置SRAM访问时序和工作模式,并编写测试函数验证读写功能。实验提供了完整的硬件连接示意图和软件代码框架,重点实现了基础的外部SRAM驱动,为后续内存管理功能的开发奠定基础。

2026-02-08 19:15:25 802 4

原创 【FSMC】扩展外部 SRAM(2)

摘要: 本文深入解析STM32的FSMC(灵活静态存储控制器)模块,重点介绍其工作原理、结构框图及SRAM控制时序。FSMC作为并行接口,可高效扩展SRAM、NOR Flash等静态存储器,通过19位地址线和16位数据线实现快速数据传输。文章详细剖析了FSMC的通信引脚配置、存储器控制器架构(NOR/NAND双控制器设计)和时钟分频逻辑,并对比了FSMC与I2C/SPI存储访问方式的本质差异——FSMC通过内存映射实现直接寻址。此外,通过时序图分析了SRAM的读写操作流程,并给出关键寄存器配置的结构体定义,

2026-02-08 16:41:02 989 2

原创 【FSMC】扩展外部 SRAM(1)

摘要:本文介绍了STM32F407通过FSMC接口扩展外部SRAM的方法。以IS62WV51216为例,详细解析了SRAM的原理图、内部结构及读写流程。该SRAM采用512K×16位架构,通过18位地址线寻址,支持16位/8位数据宽度选择。文章重点阐述了地址译码器工作原理、控制电路功能(包括片选、读写使能、字节选择等),并图解说明了读写时序流程,强调了地址信号应先于片选信号发送以确保稳定寻址。该方案有效解决了单片机内部存储资源不足的问题。

2026-02-07 21:18:41 1045 6

原创 【DMA】存储器到外设器模式实验

本文介绍了使用STM32的DMA功能实现存储器到外设(USART)数据传输的方法。通过配置DMA控制器,将存储器中的数据自动传输到USART数据寄存器,实现高效串口通信。硬件设计基于USART1模块,软件部分包括主程序初始化、LED控制配置和USART-DMA配置。主程序填充发送缓冲区后启动DMA传输,同时CPU可执行其他任务(如控制LED)。该方案适用于STM32与其他设备(如PC)之间的高速数据传输,提高了系统效率。

2026-02-02 21:28:58 1378

空空如也

空空如也

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

TA关注的人

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