
简介
该用户还未填写简介
擅长的技术栈
可提供的服务
暂无可提供的服务
初入嵌入式,复习之前所学的内容,开启新的一段征程!本文包括c语言经典的面试题目,可多方面覆盖学习。

Linux命令与工具速查摘要 本文整理了Linux常用命令和开发工具的核心用法,分为以下四部分: 1. Linux常用命令分类 目录导航:pwd/ls/cd/mkdir/rmdir 文件操作:touch/rm/cp/mv 内容查看:cat/more/less/head/tail 搜索查找:find/grep/which/whereis 压缩传输:zip/unzip/rz/sz/tar 系统信息:d

本文基于STM32CubeMX与HAL库,实现W25Q64 SPI Flash的阻塞模式驱动开发。通过配置SPI1、GPIO及串口,完成芯片初始化、读取ID、状态检测、写使能、扇区/整片擦除、页编程与跨页写入、数据读取等核心功能。驱动采用结构体封装参数,支持多型号兼容,结合轮询等待机制确保操作可靠性。实测验证了读写一致性、地址回卷特性及擦除功能,最终实现完整数据存储与测试流程,为嵌入式系统提供稳定

本文详解STM32通用定时器TIM2~5的核心功能,对比基础定时器,突出其支持向上/向下/中央对齐计数、4个独立通道、多种时钟源及输入输出能力。重点解析输出比较机制,阐述PWM频率(由ARR/PSC决定)与占空比(由CCR决定)的计算关系,并通过“7步配置法”实现精准波形输出。强调“软件可调占空比”特性:仅需修改CCR,无需停机,硬件自动生效。深入剖析“时基、比较、DMA、中断”四模块协同机制,结

本文详解STM32基础定时器TIM6/TIM7的原理与寄存器配置,将其类比为“闹钟”:通过时钟源与计数器量化时间,设定自动重装载寄存器(ARR)定义超时时间,当计数器溢出(CNT=ARR+1)时触发中断或事件。核心机制包括影子寄存器保障参数更新的原子性、预分频器调节分辨率、以及溢出后自动重装与清零。文章还系统梳理了时钟路径、初始化流程及关键寄存器作用,强调硬件定时器相比软件延时在精准性、并发性与C

本文基于STM32 HAL库,采用状态机设计实现串口DMA收发,通过switch(g_state)明确状态流转,实现收发时序解耦。中断仅通知事件(如数据就绪、发送完成),主循环负责逻辑处理,遵循“中断只改状态、主循环做业务”原则,提升系统鲁棒性与可维护性。针对普通模式DMA收完即关的隐患,状态机在错误状态统一恢复:停止DMA、清除溢出标志、延时后重置为IDLE,确保异常后自动恢复。结合分层架构(应

本文基于STM32F103ZET6芯片,通过STM32CubeMX配置串口USART1的DMA收发功能,实现上位机与开发板间高效数据传输。系统采用DMA模式接收8字节数据后,自动回传并翻转LED4指示通信状态。代码分析涵盖时钟使能、DMA通道初始化、中断配置及HAL库函数调用流程,重点解析HAL_UART_Receive_DMA与HAL_UART_Transmit_DMA的底层机制,包括寄存器配置

DMA通过中断机制通知CPU数据搬运完成,其核心在于通道级中断配置。每个通道可独立使能TCIE(传输完成)、HTIE(半传输)、TEIE(传输错误)中断,由DMA_ISR寄存器硬件自动置位标志位,CPU通过读取该寄存器区分事件类型。中断经NVIC分发至对应处理函数,完成数据处理后需写DMA_IFCR清除标志。双缓冲(Ping-Pong)利用HT中断实现数据搬运与处理并行,广泛用于音频等实时场景。配

本文系统讲解STM32 DMA技术,从“搬运工”思想出发,阐明其核心作用——解放CPU资源,实现外设与内存间高速数据传输。通过分析DMA与CPU、MCU及外设的四方关系,深入理解总线共享与仲裁机制。重点解析DMA通道、优先级、寄存器配置(如CCR、CNDTR、CPAR、CMAR)及其工作流程,结合串口收发示例,完整呈现DMA启动、请求、传输与中断通知全过程,为实际应用奠定坚实基础。

本文详解STM32 SPI中断模式收发数据全流程,基于W25Q64芯片读取JEDEC ID场景。核心流程为:启动函数仅登记缓冲区并开启TXEIE/RXNEIE/ERRIE中断,随后硬件通过时钟边沿交替触发发送与接收中断,由HAL_SPI_IRQHandler分发至对应ISR(TxISR/RxISR)完成字节搬移。收发同步进行,每发一字节即收一字节,需发送哑元以产生时钟。传输结束由收尾函数SPI_C








