如何用C语言实现低功耗嵌入式系统?:工业级省电设计的4项关键技术

ARM Cortex-M4内核与K60微控制器:嵌入式系统核心架构与低功耗设计实战 在嵌入式系统开发中,微控制器(MCU)作为核心处理单元,其架构设计与性能优化是项目成功的关键。ARM Cortex-M系列内核以其低功耗、高实时性的特点,成为众多嵌入式应用的首选。其中,Cortex-M4内核在保留上述优势的基础上,通过集成DSP指令集和可选的单精度浮点单元(FPU),为数字信号处理、电机控制等复杂算法提供了硬件加速能力,显著提升了运算效率与精度。这种架构革新不仅带来了性能的代际提升,更在工业控制、便携医疗设备等对实时性与可靠性要求严苛的场景中展现出巨大技术价值。本文以飞思卡尔Kinetis 阅读详情

第一章:C语言在低功耗嵌入式系统中的角色与挑战

在资源受限的低功耗嵌入式系统中,C语言因其接近硬件的操作能力和高效的执行性能,成为开发的首选语言。它允许开发者直接访问内存地址、控制外设寄存器,并精细管理CPU的运行模式,这些特性对于优化功耗至关重要。

高效资源利用

C语言生成的二进制代码体积小,执行效率高,适合在Flash和RAM极为有限的微控制器上运行。通过手动管理内存和避免使用重量级库函数,开发者能够最大限度地减少动态内存分配带来的开销。

直接硬件操作能力

C语言支持指针和位操作,使得对寄存器的读写变得直观高效。例如,在配置低功耗模式时,可直接设置MCU的电源控制寄存器:

// 进入待机模式,关闭除RTC外的所有外设时钟
PWR->CR |= PWR_CR_PDDS;              // 设置掉电深度睡眠
SCB->SCR |= SCB_SCR_SLEEPDEEP_Msk;   // 使能深度睡眠模式
__WFI();                             // 等待中断唤醒
上述代码通过直接操作STM32系列MCU的PWR和SCB寄存器,将系统置入低功耗待机状态,仅需微安级电流维持RTC运行。

面临的挑战

尽管C语言具备强大控制力,但也带来一定风险。手动内存管理可能导致内存泄漏或越界访问;缺乏类型安全可能引发难以调试的运行时错误。此外,不同厂商的硬件抽象层(HAL)差异较大,增加了跨平台移植的复杂度。 为提升开发效率与可维护性,常结合使用标准外设库或CMSIS框架。以下是一些常见低功耗策略对比:
功耗模式典型电流唤醒时间适用场景
运行模式5-20 mA即时数据处理
睡眠模式1-5 mA<10 μs周期性采样
停机模式10-100 μA<100 μs事件触发唤醒
待机模式<1 μA>1 ms长期休眠
合理选择模式并配合C语言的底层控制能力,是实现极致能效的关键。

第二章:处理器级省电技术实现

2.1 理解MCU的低功耗模式:从IDLE到STOP模式

微控制器单元(MCU)在电池供电设备中广泛应用,低功耗设计至关重要。常见的低功耗模式包括IDLE、SLEEP和STOP模式,它们通过逐步关闭系统时钟和外设电源来降低能耗。
低功耗模式对比
模式CPU状态时钟源唤醒时间典型功耗
IDLE停止执行主时钟运行快速100–300μA
STOP完全关闭仅RTC运行中等1–10μA
STOP模式配置示例
/* 进入STOP模式并启用RTC唤醒 */
PWR_EnterSTOPMode(PWR_LOWPOWER_STOP, PWR_STOPENTRY_WFI);
该代码调用STM32标准外设库函数,将CPU置于STOP模式,并通过WFI(等待中断)指令暂停执行。此时主时钟关闭,仅保留RTC和备份域供电,显著降低功耗。唤醒源可为外部中断或RTC闹钟。

2.2 使用C语言配置时钟树以降低系统功耗

在嵌入式系统中,合理配置时钟树是优化功耗的关键手段。通过C语言直接操作微控制器的时钟控制寄存器,可动态调整主频和外设时钟,实现按需供电。
时钟源选择与分频配置
通常系统支持多种时钟源,如HSI、HSE、PLL等。低功耗场景下优先启用高速内部振荡器(HSI),避免外部晶振持续工作。

// 配置HSI为主时钟源,系统运行于16MHz
RCC->CR |= RCC_CR_HSION;                    // 启用HSI
while (!(RCC->CR & RCC_CR_HSIRDY));         // 等待稳定
RCC->CFGR |= RCC_CFGR_SW_HSI;               // 切换至HSI
RCC->CFGR |= RCC_CFGR_PPRE1_DIV2;           // APB1分频系数设为2
上述代码通过设置RCC寄存器,启用HSI并配置总线分频,降低外设时钟频率,从而减少动态功耗。
外设时钟门控
仅在使用时开启对应外设时钟,其余时间关闭以节省能耗。
  • RCC_APB1ENR:控制低速外设时钟使能
  • RCC_APB2ENR:控制高速外设时钟使能
  • 运行空闲外设时应清零对应位

2.3 基于中断唤醒机制的节能程序设计

在嵌入式系统中,降低功耗是延长设备运行时间的关键。通过中断唤醒机制,MCU可在空闲时进入低功耗睡眠模式,并由外部事件触发唤醒,实现高效节能。
中断唤醒工作流程
系统初始化后关闭非必要外设,进入待机模式。当按键、传感器或定时器产生中断信号时,CPU被唤醒并执行相应服务程序,处理完成后再次进入睡眠。
代码实现示例

// 配置GPIO中断唤醒
void setup_wakeup_interrupt() {
    enable_gpio_clock();
    gpio_configure_as_input(WAKE_PIN);
    gpio_enable_interrupt(WAKE_PIN, FALLING_EDGE);
    enable_irq(GPIO_IRQn);
    system_enter_sleep_mode(); // 进入低功耗模式
}
上述代码配置指定引脚为下降沿触发中断,调用 sleep 指令后 CPU 停止运行,仅保留必要电路供电。中断发生时自动退出睡眠,恢复执行。
典型应用场景对比
场景持续轮询功耗中断唤醒功耗
温湿度采集8.5mA1.2mA
按键检测6.3mA0.9mA

2.4 动态电压与频率调节(DVFS)的C实现

动态电压与频率调节(DVFS)通过在运行时调整处理器的工作电压和时钟频率,实现功耗与性能的平衡。在嵌入式系统中,常通过寄存器配置和电源管理单元(PMU)接口进行控制。
核心控制逻辑
以下C函数展示了基于预设负载级别切换频率与电压的基本实现:
void dvfs_set_level(int level) {
    const int freq[] = {800000, 1200000, 1600000}; // 单位kHz
    const int voltage[] = {900, 1100, 1300};       // 单位mV

    if (level < 0 || level > 2) return;

    set_cpu_frequency(freq[level]);     // 配置PLL
    set_cpu_voltage(voltage[level]);    // 调整LDO输出
    __dsb(); // 数据同步屏障,确保寄存器写入完成
}
该函数根据传入的性能等级选择对应的频率与电压值。调用底层函数修改时钟源和稳压器输出,__dsb() 确保寄存器操作顺序不被乱序执行。
状态映射表
LevelFreq (MHz)Voltage (mV)Use Case
0800900Idle/Low Power
112001100Balanced
216001300High Performance

2.5 实战:构建基于状态机的低功耗主循环

在嵌入式系统中,主循环的设计直接影响功耗与响应性。采用有限状态机(FSM)可清晰划分系统行为,结合低功耗模式实现高效运行。
状态机设计结构
系统定义三种核心状态:待机(STANDBY)、采集(ACQUIRE)、通信(TRANSMIT)。MCU在待机时进入睡眠模式,通过外部中断唤醒。

typedef enum {
    STANDBY,
    ACQUIRE,
    TRANSMIT
} system_state_t;

system_state_t current_state = STANDBY;
上述枚举类型明确状态边界,便于维护和扩展。变量 current_state 驱动主循环分支逻辑。
主循环实现

while (1) {
    switch (current_state) {
        case STANDBY:
            enter_low_power_mode();
            break;
        case ACQUIRE:
            read_sensors();
            current_state = TRANSMIT;
            break;
        case TRANSMIT:
            send_data();
            current_state = STANDBY;
            break;
    }
}
该循环依据当前状态执行对应操作,任务完成后切换至下一状态。进入低功耗模式后,由中断服务程序唤醒并跳转至采集状态,实现事件驱动节能。

第三章:外设与资源管理优化

3.1 外设时钟门控与按需使能策略编程

在嵌入式系统中,外设时钟门控是降低功耗的关键技术。通过关闭未使用外设的时钟信号,可有效减少动态功耗。
时钟门控的基本原理
微控制器通过寄存器控制外设时钟的开启与关闭。例如,在STM32系列中,RCC(复位和时钟控制器)模块提供对各外设时钟的精细管理。

// 使能GPIOA和USART2时钟
RCC->AHB1ENR  |= RCC_AHB1ENR_GPIOAEN;     // GPIOA时钟使能
RCC->APB1ENR  |= RCC_APB1ENR_USART2EN;    // USART2时钟使能
上述代码通过置位对应位来激活外设时钟。仅在需要通信时开启USART2时钟,任务完成后关闭以节能。
按需使能策略实现
采用“使用前开启、闲置时关闭”的策略,结合状态机或事件触发机制动态管理时钟资源。
  • 初始化阶段:仅开启必要外设时钟
  • 运行阶段:根据任务需求动态启停外设时钟
  • 低功耗模式:自动关闭所有非关键外设时钟

3.2 利用DMA减少CPU介入的数据传输控制

在高性能嵌入式系统中,直接内存访问(DMA)技术可显著降低CPU在数据搬运中的参与度,释放其资源用于核心计算任务。
DMA工作流程简述
通过配置DMA控制器,CPU仅需初始化传输参数,后续数据从外设到内存的搬运由硬件自动完成。

// 配置DMA通道,源地址:ADC寄存器,目标地址:内存缓冲区
DMA_InitStruct.DMA_PeripheralBaseAddr = &ADC1->DR;
DMA_InitStruct.DMA_Memory0BaseAddr = (uint32_t)&adc_buffer;
DMA_InitStruct.DMA_DIR = DMA_DIR_PeripheralToMemory;
DMA_InitStruct.DMA_BufferSize = 1024;
DMA_Init(DMA2_Stream0, &DMA_InitStruct);
DMA_Cmd(DMA2_Stream0, ENABLE);
上述代码设置DMA将ADC采集的数据批量传送到内存。参数DMA_DIR指定传输方向,BufferSize定义传输单位数,启用后CPU即可转而执行其他任务。
性能对比
  • 中断驱动传输:每字节/半字触发中断,CPU负载高
  • DMA传输:仅传输完成时中断,效率提升达70%以上

3.3 传感器采样周期的软件调度优化

在嵌入式系统中,传感器采样周期的精确控制直接影响数据质量与系统响应。为避免资源竞争和时序抖动,需采用高效的调度策略。
基于时间片轮询的轻量级调度
对于资源受限的MCU,使用定时器中断触发采样任务可保证周期稳定性。以下为FreeRTOS环境下的任务配置示例:

void vSensorTask(void *pvParameters) {
    TickType_t xLastWakeTime = xTaskGetTickCount();
    const TickType_t xSampleInterval = pdMS_TO_TICKS(10); // 10ms采样周期
    for(;;) {
        vReadSensorData(); // 执行采样
        vTaskDelayUntil(&xLastWakeTime, xSampleInterval);
    }
}
该代码通过 vTaskDelayUntil 实现绝对时间调度,有效减少累积误差。参数 xSampleInterval 需根据传感器响应时间和系统负载调整。
多传感器同步策略对比
  • 独立调度:各传感器运行于独立任务,灵活性高但易造成CPU碎片化
  • 集中轮询:主循环统一触发,降低上下文切换开销
  • 中断驱动:高优先级传感器使用外部中断,保障实时性

第四章:电源管理与能耗监控

4.1 基于RTC和定时器的周期性任务节拍设计

在嵌入式系统中,精确的时间节拍是实现周期性任务调度的基础。通过结合实时时钟(RTC)与硬件定时器,可构建高精度、低功耗的任务触发机制。
节拍生成原理
RTC提供精准的日历时间基准,而定时器负责产生固定频率的中断。系统初始化后,依据RTC设定起始时间,配置定时器以毫秒级周期触发中断,从而驱动任务调度器。
定时器中断配置示例

// 配置定时器每10ms触发一次中断
void Timer_Init() {
    SysTick_Config(SystemCoreClock / 100); // 10ms节拍
}
上述代码使用SysTick定时器,基于系统时钟分频生成10ms中断周期。SystemCoreClock为MCU主频,除以100得到10ms计数周期,确保任务调度的时间基准稳定。
  • RTC校准定时器起始时间点
  • 定时器中断服务程序更新节拍计数器
  • 任务调度器在每次节拍中断中检查任务执行时机

4.2 软件层面的电池电量估算算法实现

在嵌入式系统中,电池电量的准确估算依赖于软件算法对硬件采集数据的处理。常用方法包括电压查表法、库仑计数法及两者的融合策略。
电压-电量映射表
通过预存电压与剩余电量的对应关系实现快速估算:
const float voltage_to_soc[11] = {
    0.0,  // 3.0V
    10.0, // 3.3V
    20.0, // 3.5V
    35.0, // 3.6V
    50.0, // 3.7V
    65.0, // 3.75V
    75.0, // 3.8V
    85.0, // 3.9V
    90.0, // 4.0V
    95.0, // 4.1V
    100.0 // 4.2V
};
该数组表示典型锂离子电池在静置状态下的电压-荷电状态(SOC)映射,适用于轻负载场景。
库仑计数法实现
通过积分电流随时间变化计算电量消耗:
  • 采样周期:每10ms读取一次电流值
  • 积分公式:ΔQ = I × Δt
  • 累计总耗电量并结合初始SOC更新当前值
两种方法可融合使用以提升精度。

4.3 利用看门狗实现异常低功耗恢复机制

在嵌入式系统中,设备常运行于低功耗模式以延长续航,但可能因软件阻塞或硬件异常无法唤醒。看门狗定时器(WDT)可作为可靠的故障恢复机制。
看门狗工作原理
看门狗本质上是一个计数器,需在规定周期内“喂狗”(重置计数)。若系统卡死未能及时喂狗,计数溢出将触发系统复位。

// STM32 HAL库启用独立看门狗示例
IWDG_HandleTypeDef hiwdg;
hiwdg.Instance = IWDG;
hiwdg.Init.Prescaler = IWDG_PRESCALER_256;  // 分频系数
hiwdg.Init.Reload = 0xFFF;                  // 重载值
HAL_IWDG_Start(&hiwdg);                     // 启动看门狗
HAL_IWDG_Refresh(&hiwdg);                   // 喂狗操作
上述代码配置IWDG,预分频和重载值共同决定超时时间。在低功耗任务循环中定期调用喂狗函数,确保正常运行时不复位。
异常恢复流程
  • 系统进入Stop模式等待事件唤醒
  • 若中断未触发或任务卡死,看门狗超时
  • CPU硬件复位,重新初始化外设
  • 恢复正常运行状态
该机制显著提升系统在无人值守场景下的稳定性。

4.4 实战:集成电流检测ADC的功耗反馈系统

在嵌入式系统中,实时监测设备功耗对能效优化至关重要。通过集成高精度电流检测ADC,可实现对负载电流的连续采样,并结合电压测量计算瞬时功率。
硬件连接与配置
采用分流电阻串联在电源路径中,ADC通过差分输入读取压降。选择16位Σ-Δ型ADC(如ADS1115),具备I²C接口和可编程增益放大器,适合微小电压信号采集。
数据同步机制
uint16_t read_current_adc() {
    uint16_t raw = i2c_read16(ADS1115_ADDR);
    return (raw >> 4) & 0x0FFF; // 提取12位有效数据
}
该函数从ADS1115读取原始值并提取12位数据,确保与主控制环同步调用,避免采样抖动。
功耗计算流程
参数符号数值单位
分流电阻R_sense0.1Ω
ADC参考电压Vref4.096V
增益倍数G8V/V
电流 I = (ADC_value × Vref / 65536) × G / R_sense,再与电压相乘得功率。

第五章:工业级低功耗系统的未来演进方向

边缘智能与自适应功耗管理融合
现代工业传感器节点正逐步集成轻量级AI推理能力。例如,STM32U5系列MCU结合TensorFlow Lite Micro,可在150μA/MHz下运行异常检测模型。系统根据负载动态切换工作模式:

// 动态电压频率调节 (DVFS) 示例
void adjust_performance(float load) {
  if (load < 0.3) {
    __PWR_SET_SVOS(PWR_SVO_SCALE3); // 降频至64MHz
    clock_config(32000000);
  } else if (load > 0.8) {
    __PWR_SET_SVOS(PWR_SVO_SCALE1); // 升频至160MHz
    clock_config(160000000);
  }
}
能量采集技术的规模化落地
Zigbee联盟最新标准支持从环境光、温差和振动中获取能量。某智能工厂部署了200个无电池压力传感器,利用压电材料将设备振动转化为电能,平均输出功率达8.7μW/cm³,完全替代传统纽扣电池。
  • 光伏采集:室内光照下效率可达20–40μW/cm²
  • 射频采集:接收LoRa网关泄漏信号,获得1–5μW功率
  • 热电采集:利用电机表面20°C温差产生30μW持续电力
超低功耗无线协议栈优化
BLE 5.3引入周期性广播同步跳频机制,使接收端占空比降至0.1%。实测数据显示,在每秒上报一次传感器数据时,nRF52840的平均电流可控制在480nA以内。
协议典型功耗 (接收)有效距离适用场景
BLE 5.3500nA50m设备状态监控
LoRaWAN1.2μA(休眠)3km远程抄表
Zigbee Green Power0μA(无源)30m开关控制
嵌入式系统设计实战:从微控制器电气特性到低功耗优化 在嵌入式系统开发中,微控制器的电气特性是确保系统稳定可靠运行的基础。这些特性定义了芯片工作的电压、电流、温度等物理边界,直接关系到电路的时序、功耗和抗干扰能力。深入理解电气特性,能够帮助工程师在硬件设计阶段规避风险,提升系统性能。从直流电气特性中的输入输出电平匹配,到交流特性中的信号完整性控制,再到低功耗模式下的外设管理,每一项参数都影响着最终产品的可靠性与能效。特别是在物联网和工业控制等场景中,合理的电源设计、热管理和EMC布局,是实现产品长期稳定运行的关键。本文以NXP Kinetis K65为例,结合 阅读详情

相关推荐

深入解析S12SPIV4 SPI模块:从寄存器配置到低功耗应用实战

SPI(串行外设接口)是一种广泛用于嵌入式系统的同步串行通信协议,以其硬件简单、全双工和高速传输的特点成为微控制器与外设通信的核心技术。其工作原理基于主从架构和移位寄存器循环,通过时钟极性与相位的四种组合模式(Mode 0-3)来定义数据采样边沿,确保了数据的可靠同步。在工程实践中,SPI的双缓冲机制是实现高效连续传输的关键,而正确的寄存器配置(如CPOL、CPHA、波特率)直接决定了通信的成败。对于低功耗嵌入式设计,理解SPI在WAIT、STOP等模式下的行为,并利用中断实现系统唤醒,是延长电池寿命的重要

weixin_30457465的博客 408

Kinetis MCU实战指南:从超低功耗到混合信号系统设计

在嵌入式系统开发领域,微控制器(MCU)作为核心处理单元,其选型直接影响产品的性能、功耗与成本。ARM Cortex-M系列内核凭借其出色的能效比和丰富的生态系统,已成为工业控制、物联网终端和便携设备的首选。Cortex-M4内核进一步集成了DSP指令与浮点单元,为实时信号处理提供了硬件基础。这种性能与效率的平衡,在需要长时间续航和复杂控制的场景中价值凸显,例如智能传感、电机驱动和电池供电的监测设备。实现这些应用的关键在于充分利用MCU的超低功耗架构与高集成度模拟前端。以飞思卡尔Kinetis系列为代表的混

weixin_33762130的博客 489

LPC2290中断系统、外设与低功耗设计实战指南

在嵌入式系统开发中,中断系统是保障实时性的核心技术,它如同系统的“神经系统”,负责快速响应外部异步事件。其工作原理基于硬件优先级仲裁与向量化跳转,能够将中断响应时间从软件查询优化至硬件自动处理级别,从而极大提升系统实时性能。这项技术的核心价值在于为工业控制、汽车电子等对确定性响应要求苛刻的领域提供了可靠基础。具体到应用场景,如电机控制、数据采集和网络通信,都需要高效的中断管理和丰富的外设协同工作。以NXP的ARM7TDMI-S微控制器LPC2290为例,其集成的向量中断控制器(VIC)和双CAN控制器、AD

weixin_30907935的博客 465

【STM32开发笔记】移植AI框架TensorFlow到STM32单片机【下篇】

本文将会继续介绍——如何为STM32H7S78-DK开发板准备CMake项目、如何将TFLM集成到基于CMake的STM32项目中、如何在STM32H7S78-DK开发板上运行TFLM基准测试,具体包括如何支持计时和printf输出、如何集成TFLM到基于CMake的STM32项目,以及解决过程中遇到的一些问题。

码工许师傅 5433

MC9S08LH64低功耗与内存管理实战:从模式解析到嵌入式系统优化

在嵌入式系统开发中,低功耗设计与内存管理是提升产品续航与性能的核心技术。其原理在于通过精细控制微控制器的运行状态与资源分配,在满足功能需求的前提下最小化能耗。MCU的低功耗模式(如Stop、Wait、Run)本质是时钟与电源域的动态调度,而内存管理单元(MMU)则通过分页机制扩展寻址空间,优化代码与数据布局。这些技术的工程价值在于能够显著延长电池供电设备的寿命,并提升程序执行效率。在物联网节点、便携式医疗设备、工业传感器等场景中,合理的功耗与内存策略直接决定了产品的可靠性与竞争力。本文以飞思卡尔MC9S08

376

基于ESP32与多传感器构建便携式空气质量检测仪:从硬件选型到低功耗实践

在物联网与嵌入式系统开发中,传感器数据采集与低功耗设计是核心基础技术。其原理在于通过微控制器(如ESP32)协调多种传感器(如PM2.5、TVOC、CO2传感器),实时采集环境参数,并利用深度睡眠等电源管理策略,在保证功能的前提下极大延长设备续航。这项技术的价值在于将抽象的物理环境数据化、可视化,为环境监测、健康管理和智能家居控制提供了关键的数据节点。其应用场景广泛,从室内空气质量评估到个人健康环境监测均可覆盖。本文以构建一个便携式空气质量检测仪为例,深入探讨了如何利用FireBeetle ESP32主控板

weixin_30254435的博客 330

基于Zephyr在微型MCU上使用Tensor Flow Lite Micro做图像分类

首先需要保证你已经拥有了一个图像分类的模型。 其次我们需要Zephyr RTOS。 这些可以参考如下文章: 基于Stm32F746g_disg平台下移植zephry使用TinyML预测模型_17岁boy的博客-优快云博客

17岁boy的博客 2357

嵌入式系统数据可靠性实战:从ECC算法原理到C语言库实现

在嵌入式系统开发中,数据完整性是保障系统可靠性的核心挑战。面对存储介质缺陷、环境干扰等因素导致的比特位翻转(静默错误),纠错码(ECC)技术通过在数据中引入冗余校验位,实现了错误检测与纠正,成为提升数据可靠性的关键技术。其核心价值在于,能在资源受限的嵌入式环境中,有效对抗数据损坏,确保关键参数、配置及代码的准确无误。汉明码(Hamming Code)作为ECC的经典实现,以其低计算复杂度和适中的冗余开销,在SRAM、内部Flash及通信保护等场景中广泛应用。本文以一份经典的嵌入式C语言ECC算法库(ecc.

weixin_28292761的博客 291

TensorFlow Lite Micro简介与使用

一文高效搞懂TensorFlow Lite Micro的简介与使用!

全栈O-Jay的博客 7872

iPhone用户必看:不装App也能搞定GitHub 2FA验证的3种方法(附恢复码管理技巧)

本文为iPhone用户提供了无需安装第三方App即可完成GitHub双重身份验证(2FA)的三种原生方案:利用相机扫码与iCloud钥匙串自动填充、使用iCloud钥匙串内置的TOTP验证码生成器,以及借助Safari浏览器扩展。文章详细解析了每种方法的操作步骤、适用场景,并重点强调了恢复码的安全管理与多层备份策略,帮助开发者在提升账户安全的同时,享受苹果生态的无缝便捷体验。

weixin_29324401的博客 660

AMCL代码详解(六)amcl中的重采样

每次都从w1左边的竖线开始转,显而易见,转到w1的概率为0-w1之间的随机数,转到w2的概率为w1到w1+w2之间的随机数,转到w3的概率为w1+w2到w1+w2+w3之间的随机数,后面的依次类推。当某个粒子的权值较大的时候,产生的随机数落在相应区间的概率就会增大,从而实现了对权值大粒子的多次复制,权值小的粒子的剔除。可以看出,在整个重采样的过程中,粒子进行了两次种情况的刷新,一种是随机生成的新的粒子,一种是对原来的粒子的复制。得到的值越大,说明粒子的权重越小,当前粒子的可信度比较小,需要重采样粒子。

YiYeZhiNian的博客 1580

初学者的TensorFlow 2.0 开发环境安装 -《MCU嵌入式AI开发笔记》(第七集)

初学者的TensorFlow 2.0 开发环境安装 -《MCU嵌入式AI开发笔记》(第七集)。抖音、B站、视频号等站点搜索柔贝特三哥,《MCU嵌入式AI开发笔记》视频同步更新,视频详细讲解。

跨界交流 747

Java本地AI推理初体验:Jlama+LangChain4j构建离线问答系统

Jlama 是专为 Java 生态设计的现代化大型语言模型(LLM)推理引擎,旨在让开发者无需依赖外部服务即可直接在 Java 应用中运行本地化模型推理。本文将结合Jlama + langchain4j 实现一个本地可运行的简单问答Demo。

2501_92589102的博客 408

C++嵌入式AI模型部署实战(从TensorFlow到MCU的完整链路)

掌握C++在嵌入式AI推理中的模型部署全流程,解决从TensorFlow训练到MCU端高效运行的落地难题。覆盖模型量化、ONNX转换、TFLite Micro集成等关键技术,适用于物联网、边缘设备等低功耗场景,实现高性能推理。实战指南值得收藏。

LogicNest的博客 1929

STM32测测速---编码电机读取速度的计算

速度计算:轮胎每转一圈的脉冲数取决于编码器的分辨率,可由下面公式进行计算:PPR是电机的线数最后可以计算轮胎每转一圈的脉冲数为:轮胎每转一圈的脉冲数 = 9.6 × 11 × 4 = 422.4最后的速度公式简化为:速度 = (0.01 秒内产生的脉冲数 ∗ 0.055 ∗ π )/(0.01 ∗422.4​。

weixin_69414084的博客 3812

第055篇:陆地观测卫星数据服务平台高级检索方法

检索数据检索到肩膀疼,这谁能信?谁能?

liujinli0712的博客 7823

揭秘工业级边缘设备省电秘诀:C语言如何实现微瓦级功耗控制

掌握C语言在工业互联网边缘节点的低功耗编程技巧,有效解决设备续航难题。适用于传感器网关、远程监控等场景,通过精准控制外设休眠、优化中断响应与动态调频,实现微瓦级功耗管理。高效稳定,值得收藏。

LogicPlex的博客 846

Agent + 监控平台:自动诊断告警根因

根因分析、智能监控、AI Agent、告警风暴、异常检测、可观测性、故障诊断在现代分布式系统中,快速定位和解决问题是维持系统稳定性的关键。传统的监控系统虽然能够生成大量告警,但往往缺乏对告警根因的自动诊断能力,导致运维团队在告警风暴中难以快速定位问题。本文深入探讨了将AI Agent技术与监控平台结合,实现告警根因自动诊断的技术架构、理论基础和实现方法。我们将从第一性原理出发,分析根因诊断问题的本质,介绍基于Agent的智能监控系统设计,并通过实际案例展示其应用价值。文章同时涵盖了从理论到实践的全链路,包括

AIGC应用创新大全的博客 305

MC13234/MC13237 Flash与ADC设计实战:从数据手册到低功耗无线节点开发

在嵌入式系统开发中,Flash存储器和模数转换器(ADC)是决定设备数据存储与信号采集能力的两大核心模块。Flash存储器通过浮栅晶体管存储电荷实现非易失性存储,其擦写次数、数据保持时间是评估可靠性的关键。ADC则基于逐次逼近(SAR)等原理,将连续模拟信号量化为数字值,其分辨率、采样率和输入阻抗直接影响测量精度。这些模块的技术价值在于为微控制器提供了持久记忆和感知物理世界的能力,广泛应用于物联网传感器、便携式设备、工业控制等场景。本文聚焦于恩智浦MC13234/MC13237芯片,深入剖析其内置Flash

diaohuyi6830的博客 448

C++调用海康相机SDK采集图像(C++\QT Creator\openCV\线程\接口)

C++调用海康相机SDK采集图像(C++\QT Creator\openCV\线程\接口) 之前写了一篇关于C++调用海康相机SDK采集图像的文章,有很多人私下发送消息咨询了一些问题,由于工作繁忙,只答复了一部分问题,今天抽出时间从头梳理了一下大家提出的问题,把我能够回答的问题都解答一次。上一次的程序只是简单的实现了图像的采集,没有使用到线程,今天把程序重新做出调整,把线程和多态加进去。文章最后有项目的下载地址。 我使用的是QT Creator这个IDE,版本信息如下: 我把相机采集的图像转换为openC

大樱桃的博客 1万+

ParaView: GUI 轴网格

ParaView: GUI 轴网格

希望我的博客,能帮上你解决学习中工作中所遇到的问题 1924

软考架构师-嵌入式系统

以特定应用为中心,以计算机技术为基础,软硬件可裁剪、可配置,集成在一起的专用计算机系统。特定应用计算机技术软硬件一体可裁剪可配置专用系统也就是说,它不是通用计算机,而是“专机专用”。必须在规定时间内完成功能并做出响应的系统。注意:实时不等于“快”。必须按时完成超时就算失败汽车安全气囊必须在碰撞后几毫秒内弹出如果晚了几秒,即使最终弹出了,也没有意义如果系统功能不正确或者失效,会导致人员伤亡、财产损失等严重后果的系统。飞机控制系统汽车刹车系统医疗监护设备核电站控制系统轨道交通信号系统。

qq_42080371的博客 248

WINCC7.3破解文件

WINCC7.3硬件够破解文件,有需要的下载!WINCC7.3硬件够破解文件,有需要的下载!

MSP430 DCO时钟配置与电源管理:嵌入式低功耗设计核心解析

在嵌入式系统设计中,时钟源是MCU稳定运行的基础,其精度和稳定性直接影响系统性能与功耗。数字控制振荡器(DCO)作为一种可编程时钟源,通过寄存器配置实现频率调节,其核心原理在于利用RC振荡电路,通过调整电流或电容来改变振荡频率。DCO的技术价值在于它无需外部晶振即可提供灵活可调的时钟,显著降低系统成本和功耗,尤其适用于电池供电的便携设备。然而,DCO的频率易受工艺偏差、电压波动和温度变化(PVT)影响,因此在实际应用中常需结合锁频环(FLL)技术进行动态校准,以提升时钟精度。在MSP430系列MCU中,DC

weixin_33946605的博客 492

数学建模模型总结

这是本人在两年内准备参加数学建模竞赛搜集到的模型资料,已经经过了本人的筛选和整理,希望能够对准备参加数学建模竞赛的学弟学妹们提供一些帮助!

ET2012新版免狗免安装绿色软件

ET2012新版免狗免安祖昂绿色软件。,新界面,新视觉,

LPC2290嵌入式开发实战:中断、外设与低功耗设计详解

在嵌入式系统开发中,微控制器(MCU)是核心,其架构设计直接影响实时性、功耗与扩展性。中断系统是实现实时响应的关键机制,通过向量化中断控制器(VIC)可大幅降低延迟,提升多任务处理效率。低功耗设计则是延长电池寿命与满足节能需求的核心技术,涉及空闲模式、掉电模式等电源管理策略。这些技术广泛应用于工业控制、汽车电子及物联网设备,确保系统稳定高效运行。本文以NXP LPC2290为例,深入解析其中断系统(VIC)与低功耗模式,结合实战配置与常见问题排查,帮助开发者掌握ARM7系列MCU的底层编程与优化技巧。

weixin_30904593的博客 329

TM4C129DNCPDT微控制器:ARM Cortex-M4F内核与丰富外设的工业级嵌入式平台解析

在嵌入式系统开发中,微控制器作为核心处理单元,其架构与外设能力直接决定了系统的实时性、可靠性与连接性。ARM Cortex-M系列内核凭借其高性能、低功耗与丰富生态,成为工业控制、物联网等领域的首选。其中,Cortex-M4F内核集成了硬件浮点单元与DSP指令,显著提升了复杂算法与数字信号处理的执行效率。这种硬件加速能力为实时控制系统带来了关键的技术价值,使其能够高效处理电机控制、传感器数据融合等任务。基于此,具备高性能内核与丰富通信接口的片上系统成为实现工业网关、网络化设备等复杂应用场景的理想平台。本文以

357

ARM9 SoC系统架构实战:从AM1808/AM1810看时钟、DMA与低功耗设计

在嵌入式系统开发中,系统级芯片(SoC)的架构设计决定了整体性能与稳定性。其核心原理在于通过精密的时钟树(PLL)与电源管理(PSC)模块协同工作,为各功能单元提供稳定且可动态调节的能源供给。这种设计的直接技术价值是实现了动态电压与频率缩放(DVFS),从而在满足实时性要求的同时,显著优化系统功耗。在实际应用场景中,例如工业控制或音频处理设备,高效的直接内存访问(DMA)控制器(如EDMA3)能够将CPU从繁重的数据搬运任务中解放出来,确保高吞吐量数据流的实时处理。理解AM1808/AM1810这类ARM9

优快云头条 523
上一篇: 【C++内存优化终极指南】:揭秘20年专家都在用的10大高效技巧
下一篇: C++依赖管理难题全解析:3种高效工具选型与实战落地策略
VarFun
博客等级 码龄1年 151粉丝 1977原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符  | 博主筛选后可见
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值