RISC-V 架构详解:开源处理器的未来

什么是 RISC-V? RISC-V(读作"Risk Five")是一个基于 RISC 原则的开源指令集架构(ISA)。它由加州大学伯克利分校于 2010 年设计,如今已成为开源硬件革命的核心。 RISC-V 的优势 特性 说明 开源免费 无需授权费,可自由使用 模块化设计 基础 ISA + 可选扩展 简洁高效 指令集精简,易于实现 生态系统 快速增长的工具链和软件支持 开放性 由非营利组织 RISC-V International 管理 RISC-V 架构基础 指令集分类 RISC-V 采用模块化设计: 基础 ISA(必须实现) RV32I:32 位整数基础 RV64I:64 位整数基础 RV128I:128 位整数基础 标准扩展(可选) M:整数乘除法 A:原子操作 F:单精度浮点 D:双精度浮点 C:压缩指令 寄存器组织 RISC-V 有 32 个通用寄存器(x0-x31): x0:硬连线到 0(常零寄存器) x1:返回地址(ra) x2:栈指针(sp) x5-x7:临时寄存器 为什么选择 RISC-V? 对比 ARM 和 x86 特性 RISC-V ARM x86 授权模式 开源免费 商业授权 商业授权 指令复杂度 低 中 高 功耗 低 低 高 生态成熟度 发展中 成熟 非常成熟 定制能力 强 弱 无 应用场景 嵌入式系统:微控制器、IoT 设备 边缘计算:AI 加速器、智能摄像头 数据中心:服务器处理器 学术研究:处理器设计教学 开发环境搭建 工具链安装 # Ubuntu/Debian sudo apt install gcc-riscv64-unknown-elf sudo apt install qemu-system-misc # macOS brew install riscv64-elf-gcc 第一个 RISC-V 程序 // hello....

March 28, 2026 · 1 min · 👁️ 4 · Tech Snippets

TinyML 实战:在微控制器上运行机器学习

什么是 TinyML? TinyML 是指在资源极度受限的设备(如微控制器)上运行机器学习模型的技术。它让边缘设备能够在本地进行 AI 推理,无需联网。 TinyML 的优势 低功耗:毫瓦级功耗,电池供电可行 低延迟:本地推理,无需云端往返 隐私保护:数据不出设备 离线工作:无需网络连接 成本低:无需昂贵的云端服务 应用场景 应用 说明 语音识别 关键词检测、语音命令 传感器分析 异常检测、预测性维护 图像识别 人脸检测、物体分类 健康监测 心率分析、活动识别 工业 IoT 振动分析、故障预测 开发平台选择 硬件平台 平台 特点 价格 Arduino Nano 33 BLE ARM Cortex-M4F,384KB RAM $25 ESP32-S3 双核 Xtensa,WiFi+BT $8 STM32 Nucleo 多种型号,生态完善 $10-30 Raspberry Pi Pico RP2040,双核 ARM $5 软件框架 TensorFlow Lite for Microcontrollers:最流行 Edge Impulse:在线平台,易用 PyTorch Mobile:适合 Python 开发者 CMSIS-NN:Arm 优化的神经网络库 实战:语音关键词检测 步骤 1:数据收集 使用 Edge Impulse 收集语音数据:...

March 27, 2026 · 2 min · 👁️ 4 · Tech Snippets

STM32 GPIO 编程完全指南

STM32 GPIO 基础 GPIO(General Purpose Input/Output)是微控制器最基本的外设。STM32 的 GPIO 功能强大,支持多种模式和配置。 GPIO 引脚特性 多种模式:输入、输出、复用、模拟 速度配置:2MHz 到 200MHz+ 上下拉电阻:内置可配置 驱动能力:可配置输出强度 中断支持:外部中断/事件 GPIO 工作模式 1. 输入模式 模式 说明 应用 浮空输入 无上拉下拉 按键(外部有电阻) 上拉输入 内置上拉电阻 按键(默认高电平) 下拉输入 内置下拉电阻 按键(默认低电平) 模拟输入 ADC 采集 传感器、电位器 2. 输出模式 模式 说明 应用 推挽输出 高低电平驱动 LED、继电器 开漏输出 需要上拉电阻 I2C、电平转换 寄存器编程(裸机) GPIO 寄存器 // GPIO 寄存器结构 typedef struct { volatile uint32_t MODER; // 模式寄存器 volatile uint32_t OTYPER; // 输出类型 volatile uint32_t OSPEEDR; // 输出速度 volatile uint32_t PUPDR; // 上下拉 volatile uint32_t IDR; // 输入数据 volatile uint32_t ODR; // 输出数据 volatile uint32_t BSRR; // 置位/复位 volatile uint32_t LCKR; // 锁定 volatile uint32_t AFR[2]; // 复用功能 } GPIO_TypeDef; LED 控制示例 // 配置 PA5 为推挽输出 void gpio_init(void) { // 1....

March 26, 2026 · 3 min · 👁️ 4 · Tech Snippets

ESP32 物联网开发:WiFi 与蓝牙实战

为什么选择 ESP32? ESP32 是乐鑫推出的高性能低功耗微控制器,集成了 WiFi 和蓝牙功能,是物联网开发的理想选择。 ESP32 核心特性 特性 参数 CPU 双核 Xtensa LX6,240MHz 内存 520KB SRAM Flash 4MB-16MB WiFi 802.11 b/g/n,Station/AP 模式 蓝牙 Bluetooth 4.2 BR/EDR + BLE GPIO 34 个可编程 GPIO 外设 ADC、DAC、SPI、I2C、UART 功耗 深度睡眠 10μA 开发环境搭建 Arduino IDE 方式 // 1. 添加 ESP32 板卡支持 // 文件 -> 首选项 -> 附加开发板管理器 URL https://raw.githubusercontent.com/espressif/arduino-esp32/gh-pages/package_esp32_index.json // 2. 安装 ESP32 包 // 工具 -> 开发板 -> 开发板管理器 -> 搜索 ESP32 -> 安装 // 3....

March 25, 2026 · 3 min · 👁️ 2 · Tech Snippets

实时操作系统(RTOS)基础与 FreeRTOS 实战

什么是 RTOS? RTOS(Real-Time Operating System)实时操作系统是一种能够保证在确定时间内完成任务调度的操作系统。 RTOS vs 通用 OS 特性 RTOS 通用 OS(Windows/Linux) 实时性 确定性响应 非确定性 任务调度 优先级驱动 时间片轮转 内存占用 KB 级别 MB/GB 级别 应用场景 嵌入式、工业控制 桌面、服务器 硬实时 vs 软实时 硬实时:必须在规定时间内完成(如汽车安全气囊) 软实时:尽量在规定时间内完成(如视频播放) FreeRTOS 基础 核心概念 概念 说明 任务(Task) 独立的执行线程 调度器(Scheduler) 管理任务执行顺序 优先级(Priority) 决定任务执行顺序 队列(Queue) 任务间通信机制 信号量(Semaphore) 资源同步机制 互斥量(Mutex) 保护共享资源 任务管理 创建任务 #include "FreeRTOS.h" #include "task.h" // 任务函数 void vTaskFunction(void *pvParameters) { char *pcTaskName = (char *)pvParameters; for (;;) { printf("%s is running\n", pcTaskName); vTaskDelay(pdMS_TO_TICKS(1000)); // 延时 1 秒 } } // 创建任务 void vStartTasks(void) { xTaskCreate( vTaskFunction, // 任务函数 "Task1", // 任务名称 configMINIMAL_STACK_SIZE,// 栈大小 (void *)"Task1", // 参数 1, // 优先级 NULL // 任务句柄 ); } 任务优先级 // 优先级数字越大,优先级越高 #define TASK_PRIORITY_HIGH 3 #define TASK_PRIORITY_NORMAL 2 #define TASK_PRIORITY_LOW 1 xTaskCreate(vTask1, "Task1", 128, NULL, TASK_PRIORITY_HIGH, NULL); xTaskCreate(vTask2, "Task2", 128, NULL, TASK_PRIORITY_LOW, NULL); 删除任务 // 删除自己 vTaskDelete(NULL); // 删除其他任务 vTaskDelete(xTaskHandle); 延时与超时 阻塞延时 // 延时 500ms vTaskDelay(pdMS_TO_TICKS(500)); // 相对延时(从当前时刻开始) vTaskDelayUntil(&xLastWakeTime, pdMS_TO_TICKS(100)); 精确延时 TickType_t xLastWakeTime = xTaskGetTickCount(); void vTaskFunction(void *pvParameters) { for (;;) { // 执行任务 // 精确延时 100ms vTaskDelayUntil(&xLastWakeTime, pdMS_TO_TICKS(100)); } } 任务间通信 队列(Queue) #include "queue....

March 24, 2026 · 3 min · 👁️ 1 · Tech Snippets

嵌入式 C 语言编程技巧与最佳实践

嵌入式 C 语言特点 与通用 C 的区别 特性 嵌入式 C 通用 C 资源 受限(KB 级内存) 充足(MB/GB 级) 直接硬件访问 寄存器操作 抽象 API 实时性 关键 不重要 可靠性 极高 可接受失败 数据类型 使用固定宽度类型 #include <stdint.h> // ✅ 推荐:明确位宽 uint8_t status; uint16_t adc_value; int32_t temperature; // ❌ 避免:位宽不确定 char flag; // 可能是 8 位或 32 位 int count; // 可能是 16 位或 32 位 long timeout; // 可能是 32 位或 64 位 位域操作 // 状态寄存器定义 typedef struct { uint8_t ready : 1; // bit 0 uint8_t error : 1; // bit 1 uint8_t mode : 2; // bit 2-3 uint8_t reserved : 4; // bit 4-7 } StatusReg_t; // 使用 StatusReg_t status; status....

March 22, 2026 · 4 min · 👁️ 1 · Tech Snippets

基于 STM32+FreeRTOS 的智能平衡小车完整设计

项目概述 本项目设计并实现了一款基于 STM32F4 和 FreeRTOS 的两轮自平衡小车,采用串级 PID 控制算法,能够在 200ms 内完成自平衡启动,最大行进速度可达 1.5m/s。 系统架构 系统说明: 上层应用:蓝牙遥控、速度指令、状态显示 FreeRTOS 任务层:4 个任务(控制/传感器/通信/显示) 硬件抽象层:GPIO、TIM、ADC、I2C、UART 硬件层:STM32F407 + MPU6050 + 电机驱动 + 编码器 核心技术指标 指标 参数 控制周期 1ms (1kHz) 平衡角度范围 ±15° 最大速度 1.5m/s 启动时间 <200ms 续航时间 60 分钟 负载能力 500g 硬件设计 核心器件选型 MCU: STM32F407VGT6 主频:168MHz Flash: 1MB, SRAM: 192KB 定时器:12 个(含 4 个高级定时器) 编码器接口:硬件正交解码 IMU: MPU6050 6 轴:加速度计 + 陀螺仪 I2C 接口:400kHz 量程:±2g / ±2000°/s 电机驱动: TB6612FNG 双 H 桥驱动 持续电流:1....

March 20, 2026 · 3 min · 👁️ 1 · Tech Snippets

开源 6 自由度机械臂:从设计到控制全解析

项目介绍 本项目是一款开源的 6 自由度桌面机械臂,有效负载 500g,重复定位精度±0.5mm,支持正逆运动学解算和笛卡尔空间轨迹规划。 技术参数 参数 规格 自由度 6 (J1-J6) 工作半径 400mm 有效负载 500g 重复精度 ±0.5mm 最大速度 200mm/s 控制周期 2ms 机械设计 结构方案 采用串联式 6 轴结构: J1: 基座旋转 (±180°) J2: 大臂俯仰 (-90°~+90°) J3: 小臂俯仰 (-90°~+120°) J4: 手腕旋转 (±180°) J5: 手腕俯仰 (-90°~+90°) J6: 末端旋转 (±180°) 3D 打印件 材料:PLA+ / PETG 壁厚:3mm (关键部位 4mm) 填充率:40% 层厚:0.2mm 传动设计 关节 传动方式 减速比 J1 同步带 3:1 J2 同步带 4:1 J3 同步带 4:1 J4 齿轮 5:1 J5 齿轮 5:1 J6 直连 1:1 硬件系统 控制板 主控: STM32F429...

March 18, 2026 · 4 min · 👁️ 1 · Tech Snippets

自研 BMS 电池管理系统:硬件设计与 SOC 算法

项目概述 本项目设计并实现了一款 8 串锂电池管理系统 (BMS),支持 30A 持续放电、主动均衡、SOC/SOH 估算和 CAN 通信,适用于电动自行车、储能电源等应用。 技术指标 参数 规格 串数 8S (29.6V 标称) 持续电流 30A 峰值电流 60A (10s) 均衡电流 100mA 电压精度 ±2mV 电流精度 ±1% SOC 精度 ±3% 硬件设计 系统架构 信号流向: 电池组 → AFE:8 串电池电压采集 AFE → MCU:I2C 数字接口 传感器 → MCU:ADC 模拟输入 MCU → CAN/保护/电源:控制输出 关键器件选型 AFE 芯片: ISL94208 8 串电池监测 电压精度:±2mV 内置均衡开关 I2C 接口 电流检测: INA240 双向电流检测 共模电压:80V 增益:20V/V 带宽:400kHz MCU: STM32G071 主频:64MHz ADC: 12 位,2....

March 15, 2026 · 6 min · 👁️ 3 · Tech Snippets