嵌入式
文章平均质量分 82
IT方大同
阳光开朗大男孩一枚;后面会更新更多相关开发设计个人心得;希望能够帮助到大家
展开
专栏收录文章
- 默认排序
- 最新发布
- 最早发布
- 最多阅读
- 最少阅读
-
(嵌入式操作系统)信号量
信号量是用于控制多线程/进程同步访问共享资源的机制,由Dijkstra于1965年提出,通过计数器避免竞争条件。主要分为二进制信号量(0/1值,用于互斥)和计数信号量(非负整数,限制并发量)。信号量通过获取/释放操作实现资源管理,如二进制信号量保护临界区,计数信号量模拟停车场车位管理。使用时需先创建句柄,通过rt_sem_create/take/release等函数操作。示例工程展示了按键控制停车位申请/释放的同步过程:按键1获取车位信号量(若满则提示),按键2释放车位信号量,实时输出可用车位数。该机制有效原创 2026-06-16 21:59:10 · 331 阅读 · 0 评论 -
(实时操作系统)消息队列
消息队列是一种用于线程间异步通信的数据结构,支持先进先出(FIFO)和优先级排队方式。RT-Thread中的消息队列具有超时机制、紧急消息发送、支持不同长度消息等特性。创建队列时需分配内存并初始化空闲消息链表。发送消息时从空闲链表获取块并挂到队尾,队列满时返回错误;接收消息时线程可选择立即返回、超时等待或死等。实验演示了通过按键触发消息发送,接收线程打印消息的过程,展示了队列在RT-Thread中的实际应用。使用时需确保开启RT_USING_MESSAGEQUEUE宏,并通过rt_mq_create等API原创 2026-06-16 12:40:46 · 188 阅读 · 0 评论 -
(实时操作系统)线程管理
摘要:本文介绍了RT-Thread实时操作系统线程的基本概念,包括线程优先级机制(数字越小优先级越高)和状态转换。重点讲解了动态线程的创建步骤:定义句柄、创建入口函数、初始化线程及启动线程,并以按键扫描线程为例进行说明。同时介绍了RT-Thread的轻量级打印函数rt_kprintf的特点及实现原理。最后指出实验需注意的移植要点:添加头文件、设置波特率、移植串口驱动等。通过Proteus仿真可观察实验现象,完整的代码移植是实现功能的关键。原创 2026-03-30 21:50:11 · 264 阅读 · 0 评论 -
RT_thread(RTOS实时操作系统)线程的创建与切换
本文对比分析了静态线程与动态线程的特点及应用场景。静态线程在程序启动时创建,资源预分配,适合任务量固定的场景,具有低延迟优势但灵活性不足;动态线程运行时按需创建,资源利用率高,适合负载波动大的场景,但存在创建开销。文章详细演示了两种线程的实现方法:静态线程通过全局变量定义栈和控制块,动态线程使用rt_thread_create()从堆分配资源。最后总结了二者的关键区别,包括内存管理方式、性能表现和适用场景,为开发者选择线程类型提供了实用建议。原创 2026-03-28 14:16:46 · 423 阅读 · 0 评论 -
实时时钟RTC
摘要:本文介绍了实时通信(RTC)技术及其在STM32微控制器上的实现。RTC技术通过WebRTC框架、UDP协议和NAT穿透等实现低延迟通信。在STM32应用中,RTC模块支持日历功能,可自动处理日期修正。实验内容包括:1)通过STM32CubeMX配置RTC日期;2)设置内部时钟频率;3)实现日期/时间获取与LCD显示功能。关键代码展示了如何使用HAL库函数获取时间日期,并通过sprintf格式化后在LCD屏显示。最终测试验证了系统能正确显示设置的2025年11月11日11时11分11秒。原创 2026-01-06 20:16:48 · 371 阅读 · 0 评论 -
DMA方式的串口通信
摘要:本文介绍了STM32中DMA(直接存储器访问)技术的原理与应用。重点阐述了DMA的四个关键要素(传输源、目标、数量和触发信号)以及STM32-DMA控制器的特性,包括12个通道、优先级管理和多种传输模式。特别探讨了DMA在高速串口通信中的优势,通过对比中断方式,说明DMA能有效提高CPU利用率。文中提供了在STM32CubeMX中配置DMA串口通信的具体步骤,并给出实现不定长数据收发的代码示例,包括空闲中断回调函数和DMA传输控制方法。实验结果验证了DMA方式在高速通信中的有效性。原创 2026-01-06 19:40:44 · 966 阅读 · 0 评论 -
串口通信UART
本文介绍了计算机通信中的并行和串行通信技术。并行通信通过多线路同时传输数据,速度快但成本高;串行通信则通过单线路逐位传输,成本低且抗干扰强。重点分析了串行通信的异步与同步方式、常见协议(UART、SPI、I2C)及其参数设置,并详细说明了STM32平台下串口通信的初始化、发送接收实验步骤,包括轮询与中断两种实现方式,最终完成固定内容和可变数据的收发测试。原创 2026-01-05 22:43:43 · 789 阅读 · 0 评论 -
ADC&DAC概述
摘要:本文介绍了ADC(模数转换器)和DAC(数模转换器)的基本原理与应用。ADC通过采样、量化和编码将模拟信号转换为数字信号,其类型包括SAR、Pipeline和Σ-Δ型等。DAC则将数字信号还原为模拟信号,常见类型有电压输出型和电流输出型。在STM32开发中,通过CubeMX配置ADC引脚和参数,并编写读取函数实时显示转换结果。实验通过HAL库函数获取ADC值,并在LCD上显示温度(R37)和湿度(R38)数据。代码实现了ADC的启动、转换和结果显示功能。原创 2026-01-05 22:00:20 · 966 阅读 · 0 评论 -
TIM(定时器概要)
本文介绍了定时器的工作原理及其实现方式。定时器通过内部时钟或外部信号计时,达到预设时间后触发操作,可分为定时和计数两种模式。硬件定时器利用振荡器产生时钟信号,通过计数器累加脉冲实现定时功能,如555定时器使用RC电路设定时间。文章详细讲解了STM32微处理器的三种定时器:基本定时器用于精确延时,通用定时器支持多种工作模式(定时、输入捕获、PWM输出),高级定时器提供更高精度。最后通过两个实例演示了定时器应用:使用定时中断实现LED闪烁,以及通过PWM调节占空比制作呼吸灯效果,并提供了关键代码片段。原创 2026-01-04 20:42:25 · 548 阅读 · 0 评论 -
NVIC&EXTI
本文概述了计算机系统中处理器与外部设备数据传输的四种方式:无条件传输、查询方式、中断方式和DMA方式。重点阐述了中断机制,包括中断的定义、作用(处理突发事件、多任务调度、提高I/O效率、错误检测)、优先级与嵌套规则,以及中断服务程序和中断向量表的功能要求。最后以STM32为例,介绍了外部中断处理流程和具体实现方法,包括中断设置、回调函数编写和标志清除等操作。文章还提供了一个利用按键中断实现LCD显示和LED控制的实例代码。原创 2026-01-04 14:57:26 · 1006 阅读 · 0 评论 -
EEPROM&DCP&I2C
摘要:本文介绍了I2C总线协议及其在STM32上的应用实现。首先概述I2C的双线制、多主从架构等核心特性,详细说明其物理层和协议帧结构。然后重点讲解EEPROM存储器的特点和I2C通信实现方法,包括X24C02的读写函数和MCP4017数字电位器的控制函数。最后通过实验演示了使用I2C实现EEPROM数据存储和电位器调节功能,包括上电次数记录和电阻值动态调整。整个方案展示了I2C在嵌入式系统中连接低速外设的典型应用。原创 2025-12-23 13:03:26 · 761 阅读 · 0 评论 -
LCD的介绍和使用
摘要:本教程介绍LCD显示控制实验,重点讲解如何将LCD初始化文件添加到STM32工程(支持F401RB和G4芯片),并实现按键控制LED和蜂鸣器状态时在LCD上同步显示状态信息。实验基于74HC573电路设计,通过控制使能端消除LED干扰。主要内容包括:LCD驱动函数使用(初始化、清屏、文本显示)、按键状态判断逻辑,以及在不同行显示"LED ON/OFF"和"BUZZ ON/OFF"状态信息的实现方法。实验需在原有按键控制LED的基础上,结合提供的代码框架完成LCD原创 2025-12-21 21:47:23 · 868 阅读 · 0 评论 -
SYSTICK、RCC应用
摘要:SYSTICK是ARM Cortex-M处理器的24位递减计数器,用于周期性中断、精确延时和低功耗场景。通过CTRL、LOAD、VAL和CALIB四个寄存器配置,定时周期由重装载值和时钟频率决定。RCC模块管理时钟和复位,通过RCC_CIR寄存器处理时钟中断。实验任务包括利用SYSTICK进行按键扫描,切换HSE/HSI时钟源并观察现象。系统滴答定时器需在CTRL寄存器中使能才能正常使用。原创 2025-12-20 21:49:50 · 604 阅读 · 0 评论 -
KEY(按键)&BUZZ(蜂鸣器)
摘要:本文介绍了按键(KEY)和蜂鸣器(BUZZ)的基本概念与分类,重点阐述了STM32开发板上的应用实现。通过STM32CubeMX配置按键(输入)、LED灯和蜂鸣器(输出)引脚,使用状态机消抖法处理按键扫描。实验实现了按键1/2控制LED1开关,按键3/4控制蜂鸣器开关的功能。文中提供了硬件引脚配置方案和Keil代码实现框架,建议课后扩展练习其他LED控制和蜂鸣器时长调节功能。(149字)原创 2025-12-20 21:19:58 · 1061 阅读 · 0 评论 -
嵌入式按键扫描模块化
摘要 本文介绍了STM32按键扫描的模块化编程实现方法。通过配置GPIO引脚和编写独立的按键扫描模块,将功能分解到.c和.h文件中。文章详细展示了按键扫描的三种状态处理(未按下、按下、等待松手),使用HAL_GPIO_ReadPin()函数读取引脚电平,并通过状态机实现按键消抖功能。最终模块可返回不同按键对应的数值(1-4),为后续功能调用提供基础。该模块化设计使主函数代码更简洁,便于维护和扩展。原创 2025-11-23 20:30:06 · 357 阅读 · 0 评论 -
GPIO输入及按键、蜂鸣器的应用
本文介绍了嵌入式系统中GPIO输入及按键、蜂鸣器的应用。按键部分详细讲解了基本功能、硬件设计要点、软件实现方法、典型应用场景和常见问题优化。蜂鸣器部分阐述了其在报警提示、人机交互、调试辅助等方面的核心功能。实验使用STM32CUBE进行配置,通过代码示例展示了LED灯和蜂鸣器的控制方法,包括电平反转和引脚写入操作,并提出了流水灯与蜂鸣器联动的实现思路。全文涵盖了从硬件配置到软件实现的完整开发流程。原创 2025-11-22 22:01:02 · 966 阅读 · 0 评论 -
通用输出端口(GPIO)
GPIO是嵌入式开发中常用的数字接口,可通过寄存器直接控制引脚状态。STM32的GPIO寄存器包括模式寄存器(MODER)、输出类型寄存器(OTYPER)、数据寄存器(ODR/BSRR)等,用于配置引脚工作模式、输出类型和电平状态。通过操作ODR寄存器可实现LED控制,如0x0000FE00对应PC8引脚输出低电平点亮LED。流水灯实现采用循环移位操作ODR寄存器,配合延时函数。寄存器操作需注意位运算、时钟使能和电平兼容性等问题。相比库函数,直接操作寄存器效率更高,但需熟悉芯片手册的寄存器定义。原创 2025-10-03 15:20:24 · 1170 阅读 · 0 评论 -
嵌入式开发环境应用
摘要:本实验以STM32F401RB开发板为例,通过STM32CubeMX配置LED引脚(PC8设置为输出高电平),完成时钟、外设等初始化工程创建。在Keil5中编写代码,使用HAL_GPIO_TogglePin函数实现LED电平反转,配合500ms延时实现LED闪烁效果。实验重点包括芯片选择、引脚分配、时钟配置等关键步骤,最终成功点亮LED灯。原创 2025-09-17 18:36:37 · 471 阅读 · 0 评论 -
嵌入式系统设计(基于STM32CUBEMX和HAL库)
摘要:嵌入式系统是专用计算机系统,具有实时性、低功耗特点。STM32CubeMX是ST公司推出的图形化配置工具,可快速生成基于HAL库的初始化代码,简化STM32开发流程。HAL库提供统一API接口,封装底层操作,便于移植。两者结合可显著提升开发效率,但需注意性能开销和代码体积问题。开发环境安装需通过指定网盘获取安装包,按指引完成STM32CubeMX及芯片支持包的安装。原创 2025-09-17 12:24:09 · 1642 阅读 · 0 评论
分享