
STM32 非阻塞多任务调度方案,无需 RTOS
介绍在 STM32 裸机环境下实现多任务调度的方法。通过利用 HAL 库的 SysTick 定时器获取时间戳,构建轻量级任务调度器,替代传统的阻塞式延时(HAL_Delay)。该方案支持非阻塞轮询,确保按键扫描、屏幕刷新、LED 控制等多任务并发执行,提升系统实时性。代码基于结构体封装,易于移植至不同 STM32 系列,并通过 IO 翻转法验证定时精度。

介绍在 STM32 裸机环境下实现多任务调度的方法。通过利用 HAL 库的 SysTick 定时器获取时间戳,构建轻量级任务调度器,替代传统的阻塞式延时(HAL_Delay)。该方案支持非阻塞轮询,确保按键扫描、屏幕刷新、LED 控制等多任务并发执行,提升系统实时性。代码基于结构体封装,易于移植至不同 STM32 系列,并通过 IO 翻转法验证定时精度。
Keil 5 开发环境的安装流程,涵盖 C51 单片机与 STM32 微控制器的双版本部署。内容包括分别安装 C51 版与 MDK 版,通过合并配置文件实现兼容,以及后续芯片包的安装。安装时需注意路径设置、驱动安装及管理员权限。

使用 VSCode 配合 STM32CubeMX 进行嵌入式开发的完整流程。内容包括安装 VSCode、STM32CubeMX、CMake 及必要插件;配置 STM32CubeMX 生成工程;在 VSCode 中配置调试器(launch.json);以及通过修改 CMakeLists.txt 添加自定义代码文件的方法。旨在帮助开发者利用 VSCode 提升 STM32 开发效率。

在 STM32F407ZET6 开发板上移植 LVGL 8.3 图形库的完整流程。涵盖硬件选型、屏幕驱动移植、LVGL 源码集成、工程配置、显示与输入设备适配、系统心跳及任务调度处理。通过配置 lv_conf.h、编写 disp_flush 回调及触摸读取函数,实现 LCD 屏幕的图形界面显示与触摸交互功能。
STM32F407 微控制器中 DAC(数模转换器)外设的原理与应用。内容涵盖 DAC 的基本概念、12 位分辨率及双通道特性、软件/定时器/外部触发方式以及噪声与三角波波形生成功能。文章提供了基于标准库的完整配置步骤与 C 语言代码示例,包括时钟使能、GPIO 模拟模式配置、DAC 初始化及电压转换函数实现,帮助开发者快速掌握 DAC 在音频、电机控制等场景中的使用方法。

基于 STM32 通过 IIC 接口驱动 MPU6050 六轴运动传感器的方法,包括寄存器配置、数据读取及物理量转换。重点阐述了利用加速度计和陀螺仪数据进行四元数姿态解算的算法实现,涵盖初始化、误差计算、四元数更新及欧拉角提取。提供了完整的 C 语言代码示例,并总结了调试注意事项与应用场景。

对 STM32 二次下载出现 Internal command error 报错提供解决方案。主要原因包括 MCU 内部 Flash 未彻底擦除导致残留程序干扰通信,以及 PA13/PA14 调试引脚被复用为普通 IO 或外接电阻干扰 SWD 时序。解决方法分为两步:首先使用 STLINK Utility 软件进行全片擦除;其次检查并修改代码中的 PA13/PA14 配置,确保保留默认 SWD 功能,移除外部上下拉电阻。清理工程后重新编…
基于 STM32 定时器触发 ADC 转换并结合 DMA 传输数据的温度采样方案。通过硬件触发确保采样精度,利用 DMA 降低 CPU 占用。主要步骤包括配置定时器输出 TRGO 信号、设置 ADC 外部触发源及内部温度传感器通道、配置 DMA 循环模式搬运数据。该方案适用于对实时性和稳定性要求较高的工业控制场景。
汇总了 STM32 微控制器结合 FreeRTOS 实时操作系统的工程实践教程。内容涵盖开发环境搭建、FreeRTOS 任务调度与同步机制、堆栈管理,以及驱动开发实战。驱动部分包括 LED、DHT11 传感器及串口通信的实现,涉及状态机、环形缓冲区等技术,并探讨了 AI 辅助驱动编写的思路。适合嵌入式初学者参考学习。

介绍 DHT11 温湿度传感器特性及 STM32 驱动实现。涵盖电气参数、引脚定义、单总线通信协议与时序分析。提供基于寄存器的 C 语言驱动代码,包括初始化、读写函数及主程序逻辑,演示通过串口输出温湿度数据的方法。
一种基于STM32主控与NB-IoT通信模块的温室智能调控系统设计方案。系统通过DHT11、BH1750及土壤湿度等传感器采集环境数据,利用NB-IoT实现远程传输。硬件选型注重低功耗与稳定性,支持双电源供电。重点阐述了传感器安装位置对数据准确性的影响及具体部署方案。
SBUS 协议是遥控器与飞控间常用的串行通信标准,基于反向电平 UART,单线传输多通道数据。本文解析其物理层、波特率、帧结构及 STM32 代码实现,涵盖电平转换方案与通道值解析逻辑,适用于无人机、航模等嵌入式控制场景。

讲解单链表概念与结构,利用火车厢类比说明非连续存储原理。详细阐述了结点定义、内存分配、打印、增删改查(尾插、头插、尾删、头删、查找、指定位置插入删除)及销毁的 C 语言实现。包含完整头文件、源文件及测试代码,重点展示指针操作与动态内存管理技巧。

顺序表是线性表的顺序存储结构,底层基于数组实现。本文讲解静态与动态顺序表的区别,并详细实现初始化、头尾及指定位置插入删除、查找修改和销毁等核心操作。通过代码示例展示内存分配、扩容机制及元素移动逻辑,帮助理解顺序表的增删查改原理。
STM32 开发中__weak 关键字的核心作用。该关键字用于声明弱定义函数,允许用户通过同名强定义函数进行覆盖。主要应用于中断服务函数和 HAL 库回调函数,系统提供默认空实现作为兜底,开发者可根据需求自定义具体逻辑,从而降低开发门槛并避免中断异常导致程序崩溃。

Linux 进程管理的核心流程,涵盖进程创建(fork 函数原理及返回值)、写时拷贝机制、进程终止场景与方法(exit/_exit/return 区别)、以及进程等待(wait/waitpid 解决僵尸进程)。通过代码示例和原理分析,帮助读者理解父子进程关系、状态检测及资源回收,掌握系统编程基础。

深入解析 Linux 环境下 C 语言实现的进度条程序。涵盖回车换行(CR/LF)原理、缓冲区机制及刷新控制。通过倒计时示例演示位宽对齐与原地更新技巧,并展示进度条架构设计与多版本迭代实现,包含头文件封装、Makefile 配置及多任务调度模拟,帮助读者掌握控制台交互的核心技术。

树与二叉树的基本概念、术语及分类,重点讲解了顺序结构存储下的堆(Heap)。内容包括堆的结构定义、初始化、销毁、插入(向上调整)、删除堆顶(向下调整)及获取堆顶等功能实现。通过对比向上与向下调整算法的时间复杂度,得出向下调整更优的结论,并提供了完整的 C 语言代码示例,涵盖头文件声明、核心算法实现及测试用例。

C 语言中栈和队列两种重要数据结构。栈遵循后进先出原则,支持压栈、弹栈等操作,可通过数组或链表实现。队列遵循先进先出原则,支持入队、出队操作,同样支持数组和链表实现。文章对比了两者特性,并列举了函数调用、表达式求值、任务调度等应用场景。掌握这些基础有助于学习更复杂的数据结构。

Linux 网络编程涉及 IP 地址、端口号及套接字概念。TCP 为可靠面向流协议,UDP 为不可靠面向报文协议。网络字节序规定为大端模式。介绍 socket 编程常见 API,包括 socket、bind、listen、accept、connect 等函数,以及字节序转换(htonl 等)和 IP 地址转换(inet_aton 等)函数。此外还说明了 sockaddr 结构的作用。