登录社区云,与社区用户共同成长
邀请您加入社区
先说明:不同 CPU、编译器、优化级别、操作系统 ABI 的细节不同。现代 64 位系统里,参数通常优先走寄存器,不一定真的全部压栈。但“调用栈 / 栈帧”的整体模型仍然非常重要。栈是一种后进先出的内存结构。可以把它想象成一摞盘子:最后放进去的盘子,最先拿出来。函数调用时,当前函数使用一块栈空间,这一块空间称为:栈帧,Stack Frame。内容说明返回地址call指令压入,ret指令弹出。逻辑上
涵盖IMU使用、各传感器作用、四元数与欧拉角转换、ROS消息格式。总结了IMU的使用方法:加速度计测线性加速度(需去重力)、陀螺仪测角速度(有零偏需校正)、磁力计辅助防偏航漂移。姿态常用四元数表示,可转欧拉角(右手系)。ROS中数据通过sensor_msgs/Imu发布,融合定位用nav_msgs/Odometry,均含协方差矩阵。
本文介绍了一个基于STM32和RFID技术的智能仓库管理系统毕业设计项目。系统采用STM32单片机作为下位机,通过RFID传感器实时读取货物信息,并利用WiFi模块与上位机通信。上位机采用Python语言结合Tkinter GUI框架构建,实现C/S架构的仓库管理功能。系统能够提高数据精确性、加快出入库速度、优化盘点作业,并降低人工成本。硬件部分包含RFID模块、TFTLCD显示等核心组件,软件部
队列:任务与任务、任务与中断之间进行数据交流的一种机制消息传递FreeRTOS基于队列, 实现了多种功能,其中包括队列集、互斥信号量、计数型信号量、二值信号量、 递归互斥信号量队列的核心:关中断(实现互斥)、链表(实现休眠和唤醒)、环形缓冲区(保存数据)Q:队列作用与全局变量作用的区别?答:功能类似于全局变量,但又比全局变量更安全假设全局变量a= 0,现有两个任务都在操作全局变量a,正常情况下,a
摘要为满足智能家居场景下的自动化、便捷化需求,本文设计并实现了一套基于STM32的智能光敏窗帘系统。该系统以STM32F411CEU6为主控核心,集成BH1750光照度传感器、SHT30温湿度传感器、MQ135空气质量传感器,实现环境参数精准采集;搭配舵机执行机构、TFTLCD显示模块及ESP8266 WiFi通信模块,结合RT-Thread实时操作系统,完成窗帘自动开合控制、环境数据实时显示及远
基于STM32智能宠物健康监控系统设计与实现摘要:针对传统宠物养护模式中实时照料不足、健康监测不全面、远程交互便捷性差等问题,本文设计并实现了一套基于STM32的智能宠物健康监控系统。系统以STM32F411CEU6为主控芯片,融合多传感器技术、物联网技术与嵌入式实时操作系统,构建“硬件层-软件层-云端层”三层架构。硬件层整合SHT30温湿度传感器、MPU6050六轴运动传感器、MQ135空气质量
对于绝大多数企业来说,第三方专业软件是最优解——既不像BIOS那样一刀切影响办公,也不像组策略那样粗粒度难以精细管控,而是在安全与效率之间找到最佳平衡点。公司专用U盘可一键加密,加密后的U盘自动划分明区和暗区——明区公开资料随便读,暗区只有装了客户端的电脑才能打开。系统自动记录每一次USB设备的插拔时间、设备名称、操作用户,甚至能详细记录“拷了什么文件”(文件名、大小、拷贝方向)。原理:BIOS/
摘 要为解决室内空气污染治理与环境参数实时监测的实际需求,设计一款基于STM32的室内环境感知与智能净化系统。该系统以STM32F411CEU6为主控核心,整合SHT30温湿度传感器、BH1750光照度传感器、MQ135空气质量传感器,实现室内多环境参数的精准采集;搭载ESP8266 WiFi模块与AI语音识别模块,构建本地显示、语音交互与远程云端监控的多模式操作体系;基于RT-Thread实时操
FreeRTOS 是目前嵌入式系统中最流行的实时操作系统之一,而任务创建是整个 RTOS 的核心功能。本文将深入探讨的使用方法和内部实现机制,帮助读者理解 FreeRTOS 任务管理的底层原理。内存分配:为 TCB 和栈分配内存TCB 初始化:设置任务属性、优先级、名称等栈初始化:创建初始栈帧,模拟中断现场链表管理:将任务添加到就绪列表调度触发:必要时触发上下文切换更好地优化任务设计快速定位问题合
以智购科技为例,其AI视觉开门柜采用视觉加称重双重识别方案,识别准确率不低于99.7%,自研SaaS后台管理系统支持远程改价、实时库存监控、故障自检报警等78项功能,系统终身免费升级,设备联网无流量费用、0算力费、0平台费;V5.0主控方案RK3588加Android或Linux,操作系统Android或Linux,核心能力AI推理加端侧识别,典型成本约500元,适用AI视觉开门柜。V3.0主控方
本文介绍如何基于C语言手动实现MQTT3.1.1协议的核心报文封装与解析,适用于STM32等无操作系统的MCU开发环境。内容涵盖:1)定义MQTT协议相关枚举和结构体;2)实现剩余长度的可变字节编解码工具函数;3)详细解析CONNECT、PUBLISH等核心报文的组装过程;4)提供简易的报文解析框架;5)列举裸机开发中的常见问题,如TCP粘包处理、大端字节序转换等。通过底层协议实现,帮助开发者深入
在FreeRTOS实时操作系统中,多任务并发执行时,必然会出现多个任务竞争同一独占性资源(如全局变量、硬件外设、串口等)的场景。若不对资源访问进行控制,会导致数据错乱、硬件操作异常等问题,互斥锁(Mutex,全称Mutual Exclusion Semaphore)便是解决该问题的核心机制。它本质是一种带有所有权和优先级继承特性的特殊二值信号量,专门用于实现任务间对临界资源的独占式访问,最大限度规
运行一键下载脚本,OpenOCD 输出一切看着正常,但板子 LED 不闪烁、程序没跑起来;用手动 GDB 连接调试却一切正常,可以单步、可以跑 main。本文讲清楚两条高频警告的真相,以及旧脚本命令链里埋着的三个致命问题,并给出最小改动的修复方案与验证标准。💡 适用场景:STM32MP157 M4 独立运行在内部 SRAM、LiteOS-M 操作系统、GCC + Makefile 裸金属开发,不
FreeRTOS 是一款市场领先的开源实时操作系统(RTOS),专为微控制器和小型微处理器等资源受限的嵌入式设备而设计。它由 Richard Barry 开发,目前归属于亚马逊旗下,采用 MIT 开源许可证,商业应用完全免费且无需开源衍生代码。实时操作系统(RTOS)与通用操作系统(如 Windows、Linux)的核心区别在于:RTOS 的调度器旨在提供可预测的、确定性的执行模式。这意味着系统能
【Socket工业级网络编程实战指南】150字摘要 本专栏针对嵌入式开发者常遇的TCP粘包、半连接、弱网丢包等工程难题,深入剖析Socket底层原理与工业级解决方案。关键点: Socket本质:操作系统提供的网络API,桥接应用层与内核协议栈(TCP/UDP); TCP/UDP选型:TCP可靠有序但开销大,适合指令传输;UDP实时性强,适用于心跳/直播; 核心机制:TCP通过ACK确认、超时重传、
1、MOU6050是一个6轴姿态传感器,可以测量芯片自身X、Y、Z轴的加速度、角速度参数,通过数据融合,可进一步得到姿态角(欧拉角),常用于平衡车、飞行器等需要检测自身姿态的场景。2、3轴加速度计(Accelerometer):测量X、Y、Z轴的加速度;3轴陀螺仪传感器(Gyroscope):测量X、Y、Z轴的角速度;3、16位ADC采集传感器的模拟信号,量化范围:-32768~32767;4、加
任务切换 = 改寄存器(含 PC):时间片结束 → 把当前任务各寄存器的值(含 PC)保存到该任务创建时分配的任务栈 → 令 PC 指向另一个任务的开头 → 新时间片正常运行 → 再切换时重复保存 → 对已完成的任务"出栈"恢复寄存器,如此循环。RTOS(Real-Time Operating System)是处理实时事件的轻量级操作系统内核,引入"任务(Task)"概念,由任务调度器(Sched
工作五年还在炼气期?进程线程区别TCP三次握手哈希表底层实现这些基础问题一问就懵。筑基期四座地基数据结构与算法操作系统数据库计算机网络每座都有判断标准和学习资源。工作年限不等于修为会用框架不等于筑基
RTOS(Real-Time Operating System,实时操作系统)是一种能够在确定时间内响应外部事件或内部任务请求的操作系统。与通用操作系统(如 Linux、Windows)追求高吞吐量和多任务并发不同,RTOS 的核心目标不是“跑得更快”,而是“在可预期的时间内完成任务”。它通过任务调度、优先级管理和中断处理机制,保证关键任务能够及时获得 CPU 控制权。
LVGL是一款轻量、多功能的开源嵌入式图形库,内置丰富控件与图形资源,还支持模拟器仿真。本文以STM32CubeMX生成的HAL库代码为基础,介绍LVGL图形库的添加方法,并对比不同控制方式、缓冲模式及刷新频率下的显示效果。LVGL官方提供字库生成,根据需要填写内容。在STM32上无操作系统移植LVGL图形库的过程中,可能会遇到各类问题,也需使用多种控件,建议多查阅官网资料,其中包含详尽的解释与示
FreeRTOS是一款专为微控制器设计的嵌入式实时操作系统,具有极小内存占用、执行速度快、可移植性强等特点。其核心文件包括任务管理、队列、链表、定时器等模块,通过硬件移植层实现跨平台支持。FreeRTOS采用任务作为基本执行单元,每个任务是一个无限循环函数,通过阻塞等待事件的方式高效运行。相比裸机开发,FreeRTOS通过多任务机制解决了实时性差、状态机臃肿等问题,提供了更清晰的代码结构和更好的资
本文深入解析了ARM Cortex-M内核中的SysTick定时器,揭示了其双重角色:既是HAL库延时函数的基础,也是实时操作系统(RTOS)的任务调度核心。文章指出SysTick的24位计数器特性决定了其最大定时周期(72MHz时钟下约233ms),并重点讨论了时钟切换导致的延时精度问题、中断优先级冲突、RTOS与HAL库的兼容性问题等关键陷阱。同时提供了微秒级延时实现方案和低功耗模式下的注意事
本文提供了一份全面的计算机快捷键指南,涵盖Windows、macOS和Linux(GNOME/KDE)三大操作系统。内容按系统分类,包含系统管理、文件操作、截屏录屏等实用快捷键,并补充了跨平台通用的浏览器和文本编辑快捷键。Windows部分详细介绍了Win10/11的系统操作;macOS标注了符号对应键位;Linux则区分了GNOME和KDE环境。文章最后鼓励读者补充遗漏内容,并邀请分享常用快捷键
十大品牌中能跑完整MES客户端的只有5家:亿道信息、ONERugged、松下、戴尔、神基,预装Windows专业版加酷睿i3/i5以上加全系列工业接口。亿道三防适配度中等适合辅助工位。雷盾、优博讯、新大陆受限于Android系统需确认MES有移动端,但扫码和RFID强适合物料管理。联想工业接口不足不建议产线MES。选MES平板别被"工业平板"三个字忽悠,核心看操作系统兼容性、处理器够不够跑、接口能
本文详细介绍了在STM32CubeIDE中移植FreeRTOS操作系统的完整步骤:1)从官网下载所需文件;2)创建STM32工程并配置调试接口;3)建立FreeRTOS文件夹结构,复制内核源文件和头文件;4)添加移植层文件(port.c/h);5)选择内存管理方案(推荐heap_4.c);6)配置FreeRTOSConfig.h文件。整个过程需注意根据芯片型号选择正确的移植层(如STM32F1使用
本项目基于STM32F103C8T6微控制器,结合W25Q64外部Flash存储模块和ST7789 LCD显示屏,实现了视频播放功能。通过FreeRTOS实时操作系统创建视频播放任务,利用Python脚本将视频转换为240×240 RGB565格式的.bin文件,再通过串口传输至STM32并存储到外部Flash。系统采用双SPI接口分别控制LCD显示和Flash读写,实现了从视频解码、数据传输到屏
误区真相close()后立即open()应该成功close()返回不代表驱动清理完成sleep()可以等待释放sleep()阻塞事件循环,反而阻碍清理加长延时就能解决问题关键在于事件循环是否运转,而非时长代表端口已释放只代表Qt层句柄释放,内核可能还在忙"能用"和"可靠"之间隔着一个操作系统原理的距离。串口编程看起来简单(openwritereadclose),但Windows底层的重叠I/O、完
汇编和寄存器理解
摘要: 本文系统解析MPU6050六轴姿态传感器的原理与应用。MPU6050集成3轴加速度计和3轴陀螺仪,通过I2C接口输出16位数据,需融合处理获得欧拉角(Pitch/Roll/Yaw)。关键点包括:量程选择(±2g~±16g加速度/±250°~2000°/s陀螺仪)、数字低通滤波器配置、寄存器操作(重点唤醒0x6B寄存器),以及互补滤波算法实现数据融合。硬件部分分析模块电路(VCC/GND/S
本文深入解析ACPI表的结构与功能,将其比作操作系统与硬件之间的"菜单"。主要内容包括: ACPI表概述:作为硬件配置的核心数据结构,ACPI表让操作系统无需猜测硬件细节,避免系统崩溃。 分层结构解析: 从RSDP入口开始,通过XSDT索引FADT、DSDT、SSDT等关键表 详细介绍FADT(全局控制寄存器)和DSDT(设备描述)的核心作用 关键设备描述对象: _CRS:设备资源占用情况 _PR
STM32功能强大、性能优异、片上资源丰富、功耗低,是一款经典的嵌入式微控制器ARM既指ARM公司,也指ARM处理器内核ARM公司是全球领先的半导体知识产权提供商,ARM公司设计ARM内核,半导体厂商完善内核周边电路并生产芯片NVIC(嵌套向量中断控制器):用于管理中断的设备,比如配置中断优先级这些东西SysTick(系统滴答定时器):主要用于给操作系统提供定时服务来进行任务切换的功能上面两个是内
n || 主要用途 | C 函数、可变参数 | Win32 API | 性能敏感代码 | C++ 成员函数 | SIMD/向量化计算 |## 总结通过本次实验,我们深入理解了 Windows x86 平台上五种主要调用约定的差异。函数调用约定是编译器与操作系统之间的一种“协议”,它规定了:- 参数传递的顺序(从左到右还是从右到左)- 堆栈的清理责任方(调用者还是被调用者)- 参数的传递方式(通过堆
CH340N:USB2.0 全速 → TTL-UART 桥接芯片✅ 核心定位:实现PC USB ↔ STM32 串口通信ROS 小车串口上位机通讯、程序下载。厂商:南京沁恒微电子(WCH)SOP-8(贴片 8 引脚)2Mbps内置 12MHz 时钟,无需外部晶振,外围电路极简(对比老款 CH340G SOP16 必须外接晶振)供电支持:3.3V / 5V 双电压供电操作系统驱动:Windows/m
基于STM32微控制器和FreeRTOS实时操作系统,设计并实现了一款集温湿度采集、实时时钟显示、闹钟与阈值报警、蓝牙远程控制及UI交互于一体的物联网监测终端。系统采用模块化分层设计,具有低功耗、高可靠性和良好的人机交互体验。
本文分析了实时操作系统中为何需要为任务和中断服务程序(ISR)提供两套不同的API函数。关键区别在于:任务函数可以阻塞等待,而ISR必须快速执行完毕。以队列写入函数为例,任务中使用的xQueueSend()允许阻塞,而ISR专用的xQueueSendFromISR()则不会阻塞且不会自动触发任务切换。文章还提出了一种优化方案:在ISR中通过xHigherPriorityTaskWoken标记是否需
RTOS是操作系统的一种类型【Real-Time Operating System】------实时操作系统实时操作系统强调实时性使用抢占式调度TSOS是另外一种类型的操作系统【Time-sharing Operating System】------分时操作系统分时操作系统强调共享和公平一般使用时间片轮转调度。
本文介绍了一个基于STM32和BNO086传感器的嵌入式姿态监测系统。项目通过软件I2C驱动九轴IMU传感器,配合240×240 SPI显示屏,实现了直观的数据可视化界面。系统采用模块化设计,包含传感器驱动、显示管理、按键处理等核心模块,支持菜单导航、页面切换、Tare置零等功能。针对I2C通信中的总线卡死问题,设计了带超时检测的总线恢复机制。项目还实现了与VOFA+上位机的数据同步,可实时显示欧
在嵌入式开发中,USB硬件电路设计完成、PCB打样回来、焊接好接口之后,真正的挑战才刚刚开始——软件层面的配置。你可能会遇到这样的场景:把设备插上电脑,设备管理器里出现了“未知设备”;或者设备能被识别,但无法通信;又或者Windows上跑得好好的,换到Linux下就完全不认了。USB通信的软件配置是一个系统工程,涉及设备枚举、驱动安装、固件描述符配置、操作系统驱动栈匹配等多个环节。任何一个环节出了
本文概述了嵌入式系统的历史演变、基本概念及技术方向。嵌入式系统从1960年代航天专用计算机发展至今,经历了芯片革命、性能提升、开源智能化等阶段,现已广泛应用于物联网和AI领域。它作为专用计算机,专注于特定任务,具有高效、低成本特点。嵌入式系统核心硬件包括单片机(MCU)、应用处理器、FPGA和DSP四大方向:MCU适合简单控制任务;应用处理器支持复杂操作系统;FPGA可编程硬件电路;DSP专精信号
同时在嵌入式系统中,对内存的分配时间也很严格,分配时间如果过长将影响实时性,一般的内存管理算法是根据存储的数据长度来一块块去寻找与它相接近的内存块,然后将数据存储在里面,而寻找这样的内存块需要的时间是不确定的,这对于实时操作系统来说是不可接受的,因此需要一个更好的内存管理算法,让它可以在可预测的时间内完成,在嵌入式系统中内存是非常珍贵的,嵌入式中64K的内存相对于电脑中8GB的内存是小巫见大巫,用