登录社区云,与社区用户共同成长
邀请您加入社区
├── include # 内核公共头文件(API 声明、内部数据结构)├── *.c # 内核核心实现(与硬件无关)│ ├── [compiler]/[arch] # 移植层(上下文切换、硬件相关数据类型)│ └── MemMang # 可替换的内存管理实现└── (工程目录)├── FreeRTOSConfig.h # 工程配置└── main.c / freertos.c # 入口和任务创建
STM32MP157 M4 跑内部 SRAM 踩坑,OpenOCD 二次下载后 LED 常亮 / 熄灭,无法正常闪烁;实测对比 reset‑halt 带来调试报错重连问题,通俗讲解 unknown state 警告为什么删不掉,给出 AIRCR 软复位 + RETRAM 伪向量表一键 bat 脚本,梳理开发容易踩的隐形陷阱。
忘记开时钟,串口完全不工作。中断两个开关必须全部打开,只出现RXNE标志不会自动进中断。中断函数名字不能写错。中断里面禁止Delay、复杂运算;只做读取赋值,业务逻辑放while(1)。中断优先级分组写在main最开头。
本文设计一套基于 STM32 或 51 单片机的人体生命体征监测与远程报警系统。系统采用 MAX30102 采集心率、血氧数据,DS18B20 采集人体温度,通过 LCD1602 液晶实时展示各项体征参数;设置、增加、减小、退出四个按键实现各项监测阈值自定义配置。当检测心率、血氧、体温数值超出预设范围时,设备触发 LED 与蜂鸣器组成的声光报警,并利用 AIR780E 通信模块向绑定手机发送中文异
RISC-V芯片从上电到执行main()的过程可分为四个阶段: 硬件复位:电源稳定后PC加载复位向量地址,进入Machine Mode,寄存器初始化; 启动汇编(crt0.S):关中断/看门狗,设置栈指针(sp)和全局指针(gp),重定位.data段(Flash→RAM),清零.bss段,配置异常向量(mtvec); 跳转main:直接调用或通过mret切换特权级后进入main; C环境建立:执行
【摘要】ESP32-N16R2模块因16MB Flash容量提升,特别适合固件体积大、需要丰富图形界面或离线语音处理的应用场景。相比前代N8R2,其翻倍的存储空间解决了UI资源、字库存储紧张的问题,同时支持双固件OTA升级,提升了远程维护可靠性。该模块保持ESP32-D0WDR2-V3双核240MHz主控,配备2MB PSRAM,适用于轻量AI推理和音频缓冲,但复杂场景需考虑8MB PSRAM的W
百度分享: https://pan.baidu.com/s/1ksnQHnOusRteS7xiZiX8IQ 提取码:kaj0。USB,串口工具,HOST,DEVICE,GOOGLE官方apk。对诊断,主子设备之间的 串口通讯非常有帮助!
本文介绍了嵌入式系统中的中断处理机制与FreeRTOS任务通知应用。主要内容包括:1)中断分类(外部/外设中断)及优先级设置;2)中断触发方式与处理原则(保持简短、避免阻塞、保护共享数据);3)任务通知机制实现中断与任务间通信(xTaskNotifyFromISR/xTaskNotifyWait);4)提供GPIO中断处理示例代码,包含消抖设计、任务通知传递及主任务处理逻辑。强调中断服务程序应高效
本文介绍了如何使用TB6612集成H桥芯片通过三根控制线(AIN1/AIN2/PWMA)实现电机的四种控制状态:正转调速(AIN1=1,AIN2=0)、反转调速(AIN1=0,AIN2=1)、刹车(AIN1=AIN2=1)和停止(AIN1=AIN2=0)。TB6612内置双通道独立H桥,可同时控制两个电机,适用于差分驱动小车等应用。文章还提供了STM32代码示例,对比了集成芯片与分立MOS管方案的
基于51/STM32单片机智能婴儿监护系统 多功能婴儿床婴儿摇篮系统1(设计源文件+万字报告+讲解)(支持资料、图片参考_降重降ai)哭闹检测+尿床检测+音乐播放+语音提醒+摇床。
储能逆变器硬件设计面临器件选型繁琐、替代料寻找耗时等痛点,垂直AI工具"与非AI"针对性地整合了半导体器件数据库,提供精准参数查询、替代料推荐及ECAD模型下载等功能。该工具聚焦工程师高频需求场景:1)通过关键参数快速锁定功率器件及备选方案;2)提供成熟参考设计缩短开发周期;3)直接导入封装模型节省建库时间。相较于通用AI的数据模糊性,其优势在于结构化行业数据和可溯源推荐,但深
约束问题留到最后才发现。你布完线跑 STA,发现 slack 差 200ps。改什么?改约束还是改 floorplan?不知道,因为你从来没验证过约束本身。约束写完后 → 约束完整性检查(check_timing + 人工判读)→ 综合 → CTS → SPEF → STA → 约束回归 → sign-off↑ 本篇重点工艺约束设计的核心理念周期大,约束宽松——uncertainty 0.5ns
本文提出了一种基于Arduino和BLDC电机的多智能体协同避障系统,采用A全局路径规划与速度障碍法(VO)相结合的分布式控制架构。系统通过A算法为每个机器人规划全局最优路径,同时利用VO算法实现实时动态避障。该方案具有解耦灵活、动态安全、运动平滑等特点,适用于智能仓储、智能制造等场景。文章详细分析了系统架构、协同原理,并针对工程实施中的算力瓶颈、通信延迟、运动学约束等五大关键问题提出了解决方案。
摘要 本文介绍了一种基于ESP32-S3、MimiClaw和Arduino BLDC的智能跟随机器人系统。该系统采用三层解耦架构,融合嵌入式AI与无刷电机驱动技术,具备多模态感知、全向机动和地形适应能力。核心特点包括:1)50Hz高实时性控制,AI推理与电机控制双核隔离;2)超声波、视觉、UWB等多传感器融合跟随;3)主动避障和动态轨迹预测;4)低功耗设计,本地闭环运行。应用场景覆盖消费随行、工业
摘要: Aily Blockly是一款开源AI硬件IDE,针对传统嵌入式开发痛点(环境配置复杂、库冲突、编译慢等)提出创新解决方案。通过端云协同编译将ESP32项目编译时间从60分钟缩短至1分钟,AI自动生成工程代码并支持自然语言转积木库,实现30+芯片、200+硬件的快速开发。其工程级依赖管理、一站式调试等功能显著提升开发效率,尤其适合创客、学生等群体快速原型验证。目前处于Alpha测试阶段,技
本文详细介绍了STM32串口打印实验的实现步骤。首先通过原理图确定使用USART1串口(PA9、PA10引脚),然后在IDE中新建工程并配置Debug、RCC和USART1模块。重点说明了代码修改部分:在USART.c中重定向fputc函数实现串口输出功能,在main.c的while循环中添加printf语句实现数据发送。实验采用115200波特率,8位数据位,1位停止位,无校验位的配置。最后将程
在程序编写过程中,经常会遇到头文件包含头文件的用法,假设a.h包含了main.h文件,b.h文件同样也包含了main.h文件,如果现在有一个c文件x.c,它既包含了a.h又包含了b.h,这样就会出现头文件main.h被x.c重复包含了,从而会发生变量函数等的重复声明,因此还得用到C语言的另一个知识点——条件编译。同样的,用户很多程序文件中的所要用到的函数,是在其它文件中定义的,在当前文件中要调用它
本文探讨了一个三极直接耦合放大电路的设计问题。初始使用AI工具设计的电路参数看似可行,但仿真显示Q1晶体管处于异常工作状态(BC结正向偏置)。通过重新调整电阻参数,特别是将反馈电阻R8设为10MΩ后,电路实现了正常放大功能,输出信号达到输入信号的121倍。实验表明,当反馈电阻改为100kΩ时,放大倍数降至50倍。这一案例揭示了AI辅助设计的局限性,强调工程师必须掌握电路原理才能正确判断和修正AI给
基于 STM32 和 ESP8266 的智能农业设计方案”,并结合使用 TraeAI 工具进行开发的需求,以下为您整理了一份从硬件选型、系统架构、代码实现到 AI 辅助开发的完整指南。
本文详细介绍了ARM Cortex-M4中的VTOR(向量表偏移寄存器),该寄存器用于指定中断向量表在内存中的位置。文章通过Keil仿真示例展示了默认向量表地址0x08000000与Flash起始地址的关系,重点讲解了在Bootloader应用中如何通过VTOR实现向量表重定位,包括设置偏移地址(如0x20000)和注意事项(偏移量需为512字节整数倍)。最后指出VTOR为嵌入式系统提供了灵活的中
PY32F003 的时钟没有 PLL,最高工作频率是 32MHz。有网友称其可以工作在 48MHz,还不知道是如何配置的。在 main.c 中自定义 SystemClock_Config() 可以灵活选择时钟源。PY32F003 的 HSI 的频率偏差高达 625PPM,如果需要较为准确的计时的话,需要为其配备 HSE。厂家软件包中的例程有一些 BUG,例如对板载 Push Button (PB)
本文介绍了英飞凌CY8CKIT-062S2-AI开发板实现鼾声识别的两种方案:Web端快速体验和本地工程开发。Web方案无需安装工具,通过浏览器4步即可完成设备连接、模型部署和实时识别,适合快速验证功能。本地方案基于ModusToolbox™工具链,支持二次开发和产品化定制。文章详细对比了两种方案的操作门槛、耗时和适用场景,建议普通用户选择Web方案快速验证,工程师选择本地方案进行深度开发。
STM32启动过程详解初始化栈顶指针sp将0x08000000 - 0x08000003中的值赋值给sp,由硬件自动完成。执行复位程序Reset_HandlerReset_Handler中先调用SystemInit进行系统初始化,然后调用__main函数。在__main函数中会初始化RW和ZI段,最后跳转到main函数。; Reset handlerReset_HandlerP...
嵌入式AI Agent的未来,不是“二选一”的博弈,而是“分层协同”的共赢。MimiClaw以极简C内核撕开硬件门槛,让AI Agent真正下沉至每一个微控制器、每一个低功耗节点,实现“万物皆有智能”;OpenClaw以TS全栈生态构建能力壁垒,让本地智能体覆盖全场景复杂需求,实现“智能皆可落地”。未来,二者将形成“终端-边缘-中枢”的协同体系:MimiClaw掌控终端硬件、低功耗节点,负责数据采
MimiClaw 和 OpenClaw 并非替代关系,而是共同描绘了AI智能体的完整图景:在云端,OpenClaw 负责复杂的任务规划、多轮对话、跨应用操作,是AI的“大脑”;在边缘,MimiClaw 作为物理世界的“手”和“眼”,将数字指令转化为真实的动作,是AI的“肌肉”。如果你是嵌入式开发者,MimiClaw会让你看到Agent在资源受限设备上的优雅落地,结合笔者的实战经验,能更快速上手部署
摘要:本文解析FreeRTOS中的事件组组件,对比事件组与队列的区别,指出事件组主要用于标志位管理而非数据传输。事件组通过集中管理事件位(如ADC采集完成、串口发送完成等)实现事件驱动机制,包含事件等待列表和阻塞功能。关键数据结构仅包含事件位和等待列表,核心函数包括xEventGroupWaitBits(等待事件)、xEventGroupSetBits(设置事件)和xEventGroupSync(
本文聚焦单片机启动与全局变量存储的底层原理,直面面试高频考题:“程序是否从main()启动?”“有初值的全局变量重启后如何恢复?”“全局变量存在哪里?为何初始化与未初始化变量内存分段?”从ARM Cortex-M4硬件复位出发,剖析启动文件(Reset_Handler)的全流程:上电后PC指向复位向量,启动代码完成时钟、栈初始化,通过.data段拷贝(恢复有初值全局变量)、.bss段清零(处理未
摘要:本文介绍了一套专为MicroPython开发者设计的AI代码审查方案,通过Anthropic的Claude Code命令行工具配合"MicroPython Code Reviewer"插件,将通用AI转变为嵌入式代码审查专家。该方案基于19500+历史维护数据,能精准识别内存泄漏、资源管理、性能优化等嵌入式开发特有的问题,支持ESP32/RP2040等平台。文章详细讲解了
原理解析: 由于底层 I2C Master 是在后台以极高的速度(比如 1ms 一次)自动轮询 AK09916,而主控 MCU(比如在 main.c 里)可能是以 5Hz (200ms) 的慢速去读取 ICM20948 的缓存( EXT_SLV_SENS_DATA )。这意味着:在你读取的空隙,底层已经刷新了几十次数据了!但是在实际驱动中,很多人(包括我)都会遇到一个非常头疼的问题: 加速度计和陀
本文介绍了瑞萨 Titan RA8P1 开发套件结合 MNIST 数据集、RUHMI 工具和 UART 串口功能实现手写数字识别的项目设计,包括环境搭建、工程构建、固件生成、命令行烧录、效果演示等,为相关产品在边缘 AI 领域的快速开发和应用设计提供了参考。
Air1601 不仅具备通信与外设控制特性,还拥有完善的UI 实现能力,搭配专用UI 方案可落地可视化交互,适用于工业与物联网显示类场景。
VS Code + Cortex-Debug STM32 调试配置指南 本文提供完整的 STM32 开发环境配置方案,帮助用户在 VS Code 中搭建基于 Cortex-Debug 插件的调试系统。指南包含: 核心工具链说明(ARM GCC、Cortex-Debug、GDB) 调试器选择(J-Link/ST-Link/OpenOCD)及工作原理 详细对比 VS Code+EIDE 与 Keil
本文档详细介绍了LM75A数字温度传感器的应用方法,包括寄存器定义、温度数据格式解析、配置建议和告警处理机制。LM75A通过I²C接口提供9位温度数据(0.5°C分辨率),内置超温报警功能。文档重点阐述了温度寄存器、配置寄存器及阈值寄存器的使用方法,提供了进/出风口传感器的推荐配置参数,并详细说明了超温告警触发与恢复的处理流程。此外,还给出了基于mcpld_cli工具的实际操作示例,包括温度读取、
任务启用时,SHELL先WAIT,等待串口输入(shell自己放弃运行,进入阻塞态),串口输入中断号33,调用串口处理程序,把输入的内容传到shell内,并POST,唤醒SHELL,周SHELL继续经过循环等待,直到输入换行符,shell开始解析指令。基于QEMU将UART串口重定向至控制台的实现,使用UART串口作为输入设备,通过设置信号量和中断,每次用户输入字符串,GIC会接收到中断号33,随
Dell PowerEdge R250服务器安装Windows Server 2022(RAID 5配置)问题汇总 关键问题及解决方案: 启动失败:需在BIOS中启用Generic USB Boot选项(F2进入设置) 找不到驱动器:必须手动加载PERC S150 RAID驱动(从戴尔官网下载解压) U盘识别异常:使用Rufus工具制作GPT+UEFI格式启动盘(非CSM模式) 安装速度慢:建议使
这是一个基于ARM Cortex-M3内核的MCU芯片项目,采用SMIC 55nm工艺,目标主频72MHz。整个设计过程中,AI辅助团队完成了从规格定义到物理实现的完整流程。用户提出了基于Cortex-M3的MCU芯片设计需求,目标是创建一个面向边缘计算场景的MCU芯片。"连接Feishu (飞书) 到 OpenClaw - 完成成功"
摘要:本文详细分析了基于STM32微控制器的工程主文件(main.c)设计,重点阐述了其嵌入式外设驱动、人机交互和时序控制等功能实现。系统采用STM32HAL库架构,包含串口通信、数码管显示、按键扫描等核心模块。其中,串口支持中断接收和485通信,数码管实现四位动态扫描显示,按键模块具备消抖功能,LCD屏驱动支持多种数据显示。主循环采用非阻塞式时序调度,实现多任务协调运行。文中还指出了按键引脚定义
摘要:在资源受限的STM32F103单片机(48-64KB SRAM)上运行FreeRTOS+MQTT时,Kawaii-MQTT客户端的异步日志系统(SALOF)成为隐藏的内存杀手。该框架默认开启后会占用:4.1KB动态堆作为环形缓冲区、4KB任务栈用于后台打印任务、1KB静态全局变量。仅需注释掉MQTT_LOG_IS_SALOF宏定义,即可释放总计9.2KB内存,显著改善设备稳定性。建议在资源紧
摘要:ARM汇编启动文件(startup_xw318.s)是嵌入式系统上电后最先执行的底层代码,采用ARM Thumb汇编编写,主要完成硬件初始化工作。其核心功能包括:1)配置栈和堆内存空间;2)建立中断向量表,将硬件中断与C语言处理函数关联;3)实现复位处理函数,完成CPU初始化并跳转至C语言main()函数;4)提供默认中断处理。该文件使用汇编是因为上电时C语言环境尚未建立,需要直接操作寄存器
整个编译过程涉及三类文件,第一类是c源文件,位于各个目录下,第二类是汇编文件startup_stm32f103xe.s,第三类是编译器所携带的库文件,在这个项目中对应的文件为c_w.l,位于Keil IDE的安装目录下。在启动至mian函数的整个过程如下图所示,首先是执行reset_handler函数,如果有MMU/MPU则要在调用_main之前配置完成,接下来是执行C库中的函数,完成代码的拷贝,
读 PCF8591 其他通道:直接改AD_Read()的参数为0x400x410x42(对应 AIN0~AIN2)。读其他 I²C 外设:先改底层的 I²C 设备地址(0x90→对应外设地址),再改AD_Read()的参数为该外设的控制字节。核心原则:不同外设的 “I²C 地址” 和 “控制字节规则” 不同,必须对照外设手册改这两个关键值。
完成这两个操作后,内核就可以开始从 PC 指向的地址中读取指令执行了,0x0800 0004是中断向量表的起始地址,这就是复位程序的入口地址,接着跳转到复位程序入口处,初始向量表,然后设置时钟,设置堆栈,最后跳转到main函数,即进入用户程序。这里以GD32F103C8T6为例,单片机集成了丰富的外设,比如GPIO,定时器,SPI,USART,CAN,USB,ADC等外设,这些丰富的外设能驱动很多
本篇我们探究 Bootloader里Main函数都做了些什么?
本文设计并实现了一套智能小区监控系统,采用"感知层-传输层-智能分析层-应用层"四层架构,融合AI视频分析、多传感器联动等技术。系统实现了98.5%的人形/车辆识别准确率,预警响应时间≤2.5s,误报率仅0.8%。通过实测验证,该系统显著提升了小区安防效率,降低40%人力成本,居民安全感评分从75分提升至92分。系统支持异常行为识别、设备联动、便民服务等功能,兼具安防与智能化管
摘要:本文介绍了基于单片机的电容测量仪仿真设计,该系统结合单片机控制与信号处理技术,通过RC充放电时间常数法和交流信号频率法实现高精度电容测量。系统采用模块化设计,包含主控、测量电路、显示与交互、电源等核心模块,并在Proteus仿真环境中验证了算法准确性和硬件可靠性。仿真结果表明,该系统可实现1pF~100μF范围的测量,误差≤2%,为实际应用提供了低成本验证方案,并具有扩展无线传输和AI诊断等
本文设计了一种基于STM32L431RCT6单片机的智能垃圾桶系统,通过模块化架构实现"感知-判定-执行-预警"闭环控制。系统采用红外传感器实现自动开盖,超声波传感器检测垃圾满溢状态,语音模块提供分类指引,并具备一键打包功能。测试表明,开盖响应时间≤0.5秒,高度检测误差±2cm,语音识别率≥92%,锂电池可续航15天。系统解决了传统垃圾桶卫生性差、管理不智能的问题,后续可增加
2.23号至3.1号bool,char,int等;,如用sizeof计算int为4字节;:整形,浮点型指数型常量和字符常量字符串常量还有标识常量共5种常量,其中字符常量通过定义数据类型char去+-字符得到另一个字符常量,输入字符用“”,字符串用‘’。标识常量中#define把一个常量用别的字符取代,如#definr pai 3.1415926,程序后面要用到3.1415926的地方用pai替代就
摘要:本文深入解析ARM Cortex-M系列单片机的核心架构,重点阐述存储器映射、NVIC中断控制、系统时钟和Boot流程四大关键模块。存储器映射采用4GB统一寻址空间,NVIC提供高效的中断管理机制,系统时钟配置决定MCU性能与功耗,Boot流程则完成从复位到main()的关键初始化。通过与RISC-V架构对比,揭示两种架构在存储器布局、中断处理等方面的设计差异。理解这些底层机制是开发稳定嵌入