- 博客(269)
- 资源 (52)
- 收藏
- 关注
原创 Proteus仿真基于STM32F103C8T6的WS2812彩灯控制系统程序(HAL库)
本设计基于STM32F103C8T6单片机开发了一套WS2812彩灯控制系统。系统通过PB8和PB9接口控制两组WS2812灯带,支持5种显示模式:两种彩虹流水灯、两种单色流水灯和多彩闪烁模式。系统配备三个按键实现启动/停止和模式切换功能,并通过串口实时显示彩灯工作状态。WS2812灯珠采用单总线通信,每个LED可独立控制显示1600万种颜色。该方案采用HAL库开发,已在Proteus中完成仿真验证。
2026-01-26 21:01:59
130
原创 Linux指令1
本文介绍了Linux系统常用的三种重启方法:1)基本重启命令"sudo reboot";2)灵活控制时间的"sudo shutdown -r"命令,可设置立即或延迟重启;3)系统卡死时的强制重启方法,通过Alt+SysRq组合键依次输入reisub来安全重启。这些方法覆盖了从正常到紧急情况下的系统重启需求,其中强制重启方式能有效避免文件系统损坏。
2026-01-21 08:42:23
306
原创 Linux系统初识
本文介绍了Ubuntu虚拟机的两个实用操作:1)通过Ctrl+Alt+Enter组合键快速全屏;2)设置中文界面的详细步骤:安装语言支持组件→添加简体中文包→将中文设为默认语言→重启生效。全文150字,简明扼要地说明了从英文界面切换到中文系统的完整流程。
2026-01-19 19:18:05
194
原创 Linux指令快速记忆
本文介绍了Linux基础命令的记忆技巧:1)非cd类命令通过字面/谐音记忆,如pwd记"怕我丢",clear直接记"清屏";2)cd系列命令用形象联想记忆符号含义,如~联想"家目录",/联想"树根",-记"返回",..记"上一级";3)提供懒人口诀整合记忆:"pwd看位置,clear清屏幕;cd~回我家,cd/找树根;cd-回上处,cd..上一层"。这些方法帮助初学者快
2026-01-13 17:24:48
382
原创 STM32指令集详细介绍
STM32指令集基于ARM Cortex-M内核,采用Thumb/Thumb-2指令集而非传统ARM指令集。Thumb为16位指令,适用于M0/M0+内核,强调代码紧凑和低功耗;Thumb-2为16/32位混合指令,适用于M3/M4/M7内核,兼顾性能和代码密度。关键区别在于:Thumb-2支持32位立即数、批量操作和DSP/FPU指令,而Thumb仅支持基础操作。指令集选择取决于内核类型和应用场景,如M0系列适合简单控制,M4/M7适合复杂运算。实际应用中,Thumb-2能显著提升数据处理效率。
2026-01-07 20:59:15
1100
原创 STM32 启动到运行的完整流程
STM32启动流程分为硬件复位、启动模式选择、启动文件执行、系统初始化和应用程序执行五个阶段。硬件复位后,芯片根据BOOT引脚电平选择启动地址(Flash/系统存储器/SRAM)。启动文件完成栈/堆初始化、中断向量表设置,并执行复位中断处理函数Reset_Handler,负责数据段复制、BSS段清零、系统初始化和跳转至main函数。SystemInit函数配置时钟树和向量表偏移。中断向量表存储中断处理函数地址,实现硬件级快速响应。Bootloader场景需通过SCB->VTOR寄存器调整向量表偏移地址
2026-01-07 15:12:02
1010
原创 Keil 中勾选 “Use MicroLIB” 的作用和串口重定向问题
的操作对象是「电脑的控制台窗口」(比如 VC++ 的黑窗口),但在单片机中没有控制台,所以我们通过「重写(重新实现)这两个函数」,把输出 / 输入的目标改成「单片机的串口」,这就是「串口重定向」。类型,实际存储的是字符的 ASCII 码,比如打印。(打印输出)并不是直接实现输出功能的,它的底层会。来完成「单个字符的逐个输出」;在嵌入式单片机中这个参数可以忽略。来完成「单个字符的逐个读取」。(字符输入)的底层会。
2026-01-07 09:59:22
612
原创 STM32 上下文详解以及栈详细介绍
摘要:STM32的上下文分为中断上下文(裸机/RTOS通用)和RTOS任务上下文(仅RTOS场景)。中断上下文包含硬件自动保存的8个核心寄存器(R0-R3、R12、LR、PC、xPSR)和软件手动保存的R4-R11及浮点寄存器,确保主程序中断后能恢复执行。RTOS任务上下文是中断上下文的扩展,完整保存通用寄存器、PSP栈指针、浮点寄存器及任务状态信息,支持多任务切换。上下文切换通过中断/PendSV异常触发,寄存器状态保存在MSP/PSP栈中,保证程序执行连续性。
2026-01-02 01:02:03
911
原创 FreeRTOS中栈和TCB详细介绍以及栈后进先出详细介绍
摘要:FreeRTOS中每个任务拥有独立的栈空间和任务控制块(TCB)。栈采用LIFO规则,用于保存任务上下文、局部变量及函数调用信息,是任务独立运行的基础。TCB是任务的管理核心,记录任务优先级、状态、栈指针等关键信息,通过链表管理实现任务调度。创建任务时需合理设置栈大小(如示例中的128字),避免溢出或浪费内存。TCB与栈协同工作,在任务切换时保存和恢复运行状态,确保多任务系统稳定运行。两者共同构成了FreeRTOS任务管理的核心机制。
2025-12-26 19:58:20
1080
原创 FreeRTOS事件API函数详细介绍
动态创建一个事件标志组,分配内存存储事件标志组控制块,支持最多 24 个事件位(32 位系统,高 8 位为保留位,低 24 位为用户可用事件位)。
2025-12-26 18:56:02
835
原创 FreeRTOS事件使用场景
摘要:事件标志组在嵌入式开发中适用于多事件同步场景,如多传感器数据采集(与/或逻辑)、多中断通知同一任务、外设初始化同步等。相比信号量或消息队列,它能更灵活地处理多条件触发(位操作),支持原子操作和阻塞等待。但不适用于单个事件同步(建议信号量)、资源保护(需互斥量)或数据传输(需消息队列)。使用时需注意中断安全API、事件位配置(最多24位)及自动清零机制。事件标志组能有效简化多条件判断逻辑,提升代码效率和可维护性。
2025-12-26 18:42:09
853
原创 STM32内核中断和外设中断
摘要:STM32中断分为Cortex-M内核中断和片上外设中断。内核中断是处理器内置的系统异常,优先级固定,包括NMI、HardFault等故障处理类和SysTick、PendSV等RTOS相关中断。外设中断包括GPIO、USART、ADC等模块的中断,不同系列芯片外设数量有所差异。使用中需注意:内核中断优先级不可随意修改;外设中断需先初始化硬件再配置NVIC;与FreeRTOS配合时,中断服务函数应使用中断安全API,避免长时间处理。实时性要求高的外设中断优先级建议设为0-5,普通中断设为6-14。
2025-12-26 11:42:37
982
原创 STM32的中断优先级和FreeRTOS优先级介绍
摘要:STM32的中断优先级(硬件NVIC管理)与FreeRTOS任务优先级(软件调度管理)存在本质区别。中断优先级数值越小优先级越高,用于决定硬件中断响应顺序;任务优先级数值越大优先级越高,决定任务调度顺序。硬件中断优先级高于所有任务,且FreeRTOS内核中断(如SysTick)优先级必须设为最低。配置时需注意:中断分组只需设置一次,用户硬件中断优先级应高于内核中断,中断服务函数应快速执行避免阻塞任务调度。两者仅通过"硬件中断可打断任务"这一规则关联。
2025-12-26 11:04:50
733
原创 互斥量核心API函数详细介绍和优先级继承问题
本文系统梳理了FreeRTOS互斥量API的功能分类和使用要点。主要内容包括:1)互斥量创建类API,区分动态和静态内存分配方式;2)互斥量获取和释放类API,涵盖普通任务和中断服务函数场景;3)互斥量删除类API。重点分析了优先级继承机制解决优先级翻转问题的原理,即当高优先级任务请求互斥量时,持有互斥量的低优先级任务会临时提升优先级。文章还总结了关键使用原则,包括共享资源保护范围、内存配置要求、中断场景限制和死锁避免等,为嵌入式系统开发提供了实用指导。
2025-12-26 10:42:06
860
原创 FreeRTOS进入中断后为什么要先进入临界段
摘要:该代码分析解释了FreeRTOS中断处理函数中的关键机制。DEBUG_USART_IRQHandler使用taskENTER_CRITICAL_FROM_ISR进入临界段,其核心作用是屏蔽低优先级中断但不影响当前IDLE中断。USART的IDLE中断标志位具有触发后保持置位的特性,必须通过读取数据寄存器手动清除。代码执行遵循严格时序:中断触发→进入服务函数→临界段操作→标志位检测。临界段的真正目的是保护后续DMA操作和信号量释放的原子性,防止被低优先级中断打断,而非用于中断检测本身。
2025-12-25 23:34:27
402
原创 信号量核心API函数详细介绍
c运行// 通用信号量句柄(适用于所有信号量类型)功能:定义信号量句柄,用于后续操作信号量(创建、获取、释放等);说明:句柄本质是指向信号量控制块的指针,创建成功后由 API 函数返回。
2025-12-24 17:05:27
1080
原创 FreeRTOS「中断 + 消息队列」代码完整运行顺序详解
本文介绍了基于FreeRTOS的按键中断消息处理实现。系统首先创建AppTaskCreate任务初始化消息队列(长度4,消息大小4字节)和LED_Task任务(优先级2),随后自删。LED_Task通过xQueueReceive阻塞等待队列消息,当KEY1/KEY2按键中断触发时,中断服务程序KEYx_IRQHandler使用xQueueSendFromISR向队列发送数据(1或2),并通过portYIELD_FROM_ISR实现任务切换。LED_Task收到消息后打印对应按键信息并翻转LED1电平,然后继
2025-12-24 15:15:39
981
原创 FreeRTOS任务创建到任务运行完整运行顺序及空闲任务清理资源详细介绍
本文分析了基于STM32和FreeRTOS的动态任务创建过程。首先在main函数中初始化硬件并注册AppTaskCreate任务(优先级1),启动调度器后该任务开始执行。在临界区内,AppTaskCreate创建了两个LED控制任务(优先级2)后自我删除。LED_Task和LED2_Task会交替执行LED控制操作。FreeRTOS的空闲任务(优先级0)会在高优先级任务阻塞时回收被删除任务的资源(512字节栈空间和TCB结构体),防止内存泄漏。整个过程展示了FreeRTOS的任务创建、调度和资源管理机制。
2025-12-24 11:12:57
639
原创 void *用法详细介绍
本文介绍了C语言中void指针的四种核心应用场景:1)实现通用数据结构,通过void存储任意类型数据,减少冗余代码;2)构建通用工具函数,如qsort排序函数,支持不同类型数据处理;3)实现不透明指针,隐藏底层实现细节,提升代码封装性和安全性;4)作为内存操作函数的通用参数,适配任意内存块操作。void*弥补了C语言缺乏泛型的不足,是提升代码复用性和实现封装隔离的关键技术,广泛应用于库开发、嵌入式系统等领域。使用时需注意不能直接解引用和进行指针运算,需先转换为具体类型。
2025-12-23 10:18:59
668
原创 消息队列核心 API 函数详细介绍以及全局变量和队列的区别
静态创建消息队列,需用户提前分配队列控制块和消息缓冲区,适用于无动态堆或需精确控制内存的场景。删除创建的消息队列,释放动态分配的内存(静态创建的队列不释放内存,仅注销句柄)。动态创建一个消息队列,分配队列控制块和消息存储缓冲区,返回队列句柄供后续操作。从队列尾部发送消息,若队列满则阻塞指定时间,超时未发送成功则返回失败。从队列头部接收消息,将消息复制到指定缓冲区,若队列为空则阻塞指定时间。中断服务函数中发送消息,无阻塞机制,需快速执行,避免影响中断响应。中断服务函数中接收消息,无阻塞,快速完成消息读取。
2025-12-23 09:29:53
1202
原创 函数指针和指针函数
摘要: 函数指针与指针函数是C语言中易混淆的概念,核心区别在于本质属性:指针函数是返回指针的函数(如int* func()),用于返回字符串、数组元素或动态内存地址;函数指针是指向函数的指针(如int (*fp)()),用于回调、动态调用等场景。关键差异在于语法优先级——指针函数无括号,函数指针必须用括号明确优先级。指针函数需避免返回局部变量地址,可通过静态变量或动态内存解决;函数指针需严格匹配目标函数的返回类型和参数。typedef可简化函数指针的复杂声明,提升可读性。理解二者的本质差异和适用场景,能有效
2025-12-19 17:15:06
928
原创 FreeRTOS 创建函数详细介绍
FreeRTOS核心功能解析 摘要:本文详细介绍了FreeRTOS实时操作系统的核心功能模块,包括任务管理、列表操作、临界段保护和调度机制。重点阐述了任务创建函数(xTaskCreate/xTaskCreateStatic)的参数配置和使用场景,分析了调度器启动(vTaskStartScheduler)的内部流程,以及任务延时(vTaskDelay)和删除(vTaskDelete)的实现原理。同时讲解了列表数据结构在任务管理中的应用,包括初始化(vListInitialise)和节点操作(vListInse
2025-12-19 15:34:38
596
原创 FreeRTOS 核心知识体系整理
FreeRTOS是一个轻量级实时操作系统,其核心围绕任务管理和调度机制展开。系统通过任务控制块(TCB)、双向链表等数据结构实现多任务管理,采用PendSV异常和SysTick定时器进行任务切换。内核提供任务创建、延时、优先级设置等基本功能,支持静态和动态内存分配方式。FreeRTOSConfig.h文件用于关键配置,如调度方式、Tick频率等。在STM32平台上移植时需配置处理器接口、中断服务函数等。系统启动流程包括硬件初始化、任务创建和调度器启动等步骤。FreeRTOS通过精心设计的数据结构和高效的调度
2025-12-19 15:17:25
988
原创 FreeRTOS链表详解
c运行// 定义节点结构体:数据域 + 指针域int data;// 数据域:存储整数(可替换为任意类型,比如结构体)// 指针域:指向同类型的下一个节点// 为了书写方便,重定义类型名(类似FreeRTOS的typedef)
2025-12-19 11:51:59
934
原创 FreeRTOS简介
摘要:本文介绍了FreeRTOS实时操作系统的核心概念和组件。主要内容包括:1)任务管理,通过优先级调度实现多任务并发执行;2)队列机制实现任务间数据传输;3)信号量(二进制/计数)用于任务同步和资源计数;4)互斥量保护共享资源,具有优先级继承特性;5)详细对比了队列、信号量和互斥量的区别:队列传递具体数据,信号量传递状态,互斥量确保资源独占访问。文章通过LED控制、串口通信等实例演示了各组件使用方法,并提供了组件选型指导原则。
2025-11-26 15:59:50
927
转载 EXCEL 实现“点击跳转到指定 Sheet”的方法
摘要:本文介绍如何在WPS表格中通过超链接功能实现点击单元格跳转到指定工作表。操作步骤包括:1)选中目标单元格;2)通过右键菜单或插入选项卡添加超链接;3)选择"本文档中的位置"并指定目标工作表和单元格;4)确认设置。这一技巧特别适用于制作目录页和交互式报表,能有效提升表格导航效率。(字数:99)
2025-09-23 11:11:05
2388
原创 CH32V203F6P6三种烧录方式
CH32V203F6P6-TSSOP20微控制器支持三种下载方式:USB、串口2(PA2/PA3)和SWD两线下载。通过BOOT0引脚选择启动模式:接GND从主Flash启动(正常工作),接V33从系统存储器启动(支持USB/串口下载)。USB下载需连接USB1插座,将SW3拨向V33;串口下载需交叉连接TX2/RX2,SW3拨向V33;SWD下载则需连接WCH-LINK,SW3保持GND。下载时若提示"读保护",可通过WCHISPStudio解除。使用MounRiverStudio时需
2025-09-20 10:49:21
700
原创 一种利用串口51单片机远程升级 OTA
关键的在这里,因为每次要先运行bootload 所以需要在0x0 位置 跳转到bootload地址是0x6100,再有boot程序跳转到我们的0x1000 这样成正常运行,看起来很复杂,其中只有两个关键地址,0-->0x6100 -->0x1000 , 就这两步骤。为什么要这样划分地址呢。OTA主要就三部分,一个是load程序,一个是应用程序,还有带升级的程序,三个分别存储在不同地址,我以flash 32K为例。2,应用程序 APP1设计,程序功能主要实现我们自己产品功能,以及接收保存远程发过来的程序。
2025-09-20 09:59:53
1181
原创 FPGA学习
本文系统介绍了Verilog HDL硬件描述语言的核心语法,主要包括三个部分:1. 模块定义与实例化:阐述了模块的基本概念、命名规则、连接方式,以及assign连续赋值语句的使用。2. 数据类型与常量变量:详细讲解了wire和reg两种主要数据类型,以及整型、实数型、字符串型三种常量形式。3. 关键语句结构:重点分析了initial、always、function和task四种结构说明语句,说明了它们在时序逻辑、组合逻辑中的不同应用场景。文章还涵盖了运算符、块语句、条件循环语句等基础语法元素,为Verilo
2025-07-02 15:30:11
1147
原创 UC3842/UC3843反激教程教学开关电源 反激设计步骤,每一关键元器件计算
摘要:本文介绍了一款220VAC输入、12V/6A输出的隔离式反激开关电源设计。采用UC3843AN PWM控制芯片,详细阐述了反激拓扑结构原理、器件选型和变压器设计(原边86匝/副边7匝)。电路包含EMI滤波、RCD缓冲、TL431反馈等关键模块,开关频率65kHz,功率72W。重点说明了安全注意事项,强调制作高压电源需具备专业知识,并提供完整的原理图、PCB图、变压器参数和调试方法。该设计具有电路简单、成本低、隔离安全的优点,适用于小功率电子设备电源。
2025-06-27 19:38:56
3013
原创 用ESP8266+MQTT构建完全属于自己的物联网平台
《基于Arduino+ESP8266搭建私有物联网平台》摘要 本文详细介绍如何利用ESP8266开发板搭建完全自主可控的物联网系统。通过PicoMQTT库实现MQTT服务器功能,配合PubSubClient客户端库,构建不依赖第三方平台的局域网物联网解决方案。教程包含完整实施步骤:1) Arduino开发环境配置;2) MQTT Broker服务器程序烧写;3) 客户端设备连接配置;4) 安卓APP控制界面设置。系统支持LED状态同步控制,具有用户认证机制,可实现局域网内设备互联。若具备公网IP和动态域名,
2025-06-23 20:37:18
1156
原创 开关电源计算辅助软件SMPSKIT V10.3
SMPSKIT V10.3是一款功能强大的开关电源设计辅助软件,主要特点包括:1)内置常见IC计算模块和磁芯数据库;2)提供变压器分层计算器和多种拓扑结构计算功能;3)支持用户自定义编程设计。使用注意事项:配置文件需存放在程序目录,公式编写限制每行不超过50个变量/运算符,总文本内容限制5000个变量/运算符。软件提供变量列表(如Po输出功率、Iin初级电流等)和语法检查功能,但用户需确保公式编写正确。压缩包内包含测试代码、帮助文档和相关图片资源,建议使用前详细阅读帮助文档。
2025-06-23 19:33:07
926
原创 stm32温湿度-超声波-LCD1602结合项目(Proteus仿真程序)
程序实现功能:程序基于stm32芯片实现了控制LED灯亮灭、按键控制、串口通信、电机控制、温湿度数据采集、超声波测距、LCD显示屏显示内容这几个功能,并用proteus8进行仿真。
2025-06-12 11:18:02
1286
原创 基于stm32风速风向温湿度和瓦斯检测(仿真+代码)
该环境监测系统具备风速、风向、温湿度及瓦斯检测功能,支持阈值报警设置,并通过云平台上传数据。系统采用DHT11温湿度传感器采集数据,通过STM32微控制器处理和OLED显示模块实时显示。程序包含传感器数据读取、阈值判断和显示驱动等功能模块,实现了环境参数的监测与报警。系统初始化后持续采集数据,当参数超过设定阈值时触发报警机制。
2025-05-29 00:11:32
440
原创 基于stm32LORA无线抄表系统仿真
本文介绍了一种基于LoRa无线通信的电力抄表系统。系统通过LoRa技术实现节点数据采集与传输,并在网关节点进行显示。
2025-05-29 00:00:21
318
原创 基于物联网的智能家居安全防护系统设计
1.单片机和app、OneNet云平台通过wifi进行通信2.马达模拟家里的用电设备,可通过按键开关3.可检测用电量,并显示在显示屏、app4.可检测空气质量,并显示在显示屏、app5.可检测烟雾浓度,并显示在显示屏、app6.可检测是否有人闯入,并显示在显示屏、app7.检测到烟雾浓度、空气质量超标时,蜂鸣器报警,并上报到app上,且自动打开风扇(马达)8.可通过语音和app控制风扇开关9.app上可设置烟雾浓度和空气质量报警阈值。
2025-04-25 22:41:06
1470
原创 基于STM32的温室环境智能调控系统仿真(仿真+代码)
1.单片机和app、OneNet云平台通过wifi进行通信2.可检测二氧化碳,并显示在app和显示屏3.可检测光照强度,并显示在app和显示屏4.可检测温湿度,并显示在app和显示屏5.可检测土壤湿度,并显示在app和显示屏6.自动模式下,co2、温湿度过高时风扇转动降温/除湿/通风7.自动模式下,土壤湿度过低时水泵转动进行灌溉8.自动模式下,温度过低时加热片工作进行加热9.自动模式下,光线较弱时亮灯进行补光10.自动模式下,光线过强时舵机转动进行遮光。
2025-04-25 22:30:01
899
磁悬浮相关资料,基于arduino单片机,有原理图和源程序
2025-06-25
Arduino创意机器人设计教材
2025-06-25
Arduino + ESP8266构建物联网平台
2025-06-23
Arduino UNO R3板电路原理图+PCB文件
2025-06-23
LM2596可调电压恒流输出电路原理图与PCB文件
2025-06-23
UC3842/UC3843反激教程教学开关电源 反激设计步骤,每一关键元器件计算
2025-06-27
### 电力电子基于UC3842的小功率开关电源实训:反激变换器电路设计与调试
2025-06-27
PID温控,max6675,加热棒Arduino源程序
2025-06-25
ARDUINO 入门到精通24节课
2025-06-25
ESP8266 Nodemcu原理图
2025-06-25
开关电源计算辅助软件SMPSKIT V10.3
2025-06-23
ARDUINO+OLED中文显示温湿度
2025-06-23
中景园墨水屏2.13寸例程重写(STM32F103C8T6程序)
2025-06-23
基于STM32F103ZE+MPU6050+HMC5883L串口2输出欧拉角以及四元数,数据经融合校准,Z轴无漂移,内置串口1函数,可自己修改串口1输出角度
2026-01-29
STM32F103配合Win上位机实现加解密程序+上位机(类似U盾原理)
2026-01-28
24bit ADC CS1237完整驱动源码,实测可用无bug,只需修改IO口定义
2026-01-27
Proteus仿真基于STM32F103C8T6的WS2812彩灯控制系统程序(HAL库)
2026-01-26
JSP+mysql+Tomcat7.0图书管理系统详细设计说明书
2025-09-19
51单片机+TEA5767+12864+DS1302+DS18B20+PT2257+TDA2822M的FM收音机
2025-09-20
一种利用串口51单片机远程升级 OTA
2025-09-20
单片机可控硅移相控制交流电原理 带源程序
2025-09-20
基于STM32的温度和超声波测距
2025-07-09
基于stm32电压采集仿真
2025-07-09
基于STM32的DHT11仿真
2025-07-09
基于STM32的可调时钟仿真
2025-07-09
UC3843大电流输出数控可调开关电源设计
2025-06-27
基于stm32的计算器仿真(8.11proteus版本)
2025-07-01
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人
RSS订阅