基于IAR与STM32标准库的工程模板搭建与配置详解
1. 项目概述为什么选择IAR与STM32标准库如果你正准备踏入STM32开发的大门或者刚从51、AVR这类8位单片机转过来面对市面上五花八门的开发工具和固件库是不是有点眼花缭乱我当年也是这么过来的。今天我就以一个过来人的身份跟你聊聊怎么用IAR Embedded Workbench这个老牌且强大的IDE配合STM32的“经典款”固件——标准外设库V3.5.0从零开始搭建一个干净、规范的工程模板。这不仅是点亮一个LED灯那么简单而是为你后续所有项目打下一个坚实、可复用的基础。为什么是IAR相比Keil MDKIAR的编译器优化效率在业内口碑一直不错尤其在一些对代码体积和运行速度有严苛要求的场合。它的工程管理逻辑清晰调试功能强大虽然上手门槛略高一点但一旦熟悉你会觉得非常顺手。为什么是标准库虽然ST现在主推HAL/LL库但标准库Standard Peripheral Library SPL对于理解STM32的寄存器操作、掌握底层硬件原理有着不可替代的作用。它就像手动挡汽车让你清楚地知道每一个“换挡”动作对应着硬件的什么变化这对于打牢嵌入式基础至关重要。V3.5.0版本是针对STM32F1系列也就是我们常说的“大容量”产品线如F103ZE等最成熟、最稳定的一个版本资料也最全。这个教程的目标就是带你一步步创建一个没有任何编译警告、目录结构清晰、包含了必要驱动文件的“裸机”工程模板。完成后你得到的不仅是一个工程更是一套可以沿用至后续项目的“脚手架”。2. 环境准备与核心资源获取在动手写代码之前把“柴米油盐”准备好是关键。这里需要的不是复杂的配置而是几个核心文件的精准定位和放置。2.1 IAR Embedded Workbench的安装与激活首先你需要从IAR官方网站或可靠的渠道获取IAR for ARM的安装包。版本上我推荐使用7.x或8.x的主流版本它们对STM32的支持都很完善界面和功能也比老版本更友好。安装过程基本上是“下一步”到底注意安装路径不要有中文和空格这是一个好习惯能避免很多潜在的奇葩问题。安装完成后会面临激活问题。对于个人学习或评估IAR提供有代码大小限制的免费版本Kickstart版对于STM32F103这类芯片32K代码限制可能足够你前期的学习。如果需要完整功能请务必通过合法渠道获取许可证。激活过程通常是通过IAR License Manager工具加载有效的许可证文件.lic文件来完成。这里有个小坑某些安全软件可能会误拦截License Manager的网络行为或文件操作如果激活失败可以尝试暂时关闭安全软件再试。2.2 STM32标准外设库V3.5.0下载与解构这是我们的核心“食材”。你需要去ST的官方网站找到STM32F10x标准外设库STM32F10x Standard Peripheral Library的下载页面选择版本V3.5.0。下载下来通常是一个压缩包比如stm32f10x_stdperiph_lib.zip。解压后你会看到一个结构清晰的文件夹。对我们新建工程而言只需要关注其中几个关键部分Libraries\STM32F10x_StdPeriph_Driver\ 这里面包含了inc头文件和src源文件两个文件夹。这就是所有外设如GPIO、USART、TIM、ADC等的驱动代码所在是我们工程的主体。Project\Template\ ST官方提供的工程模板。但我们不直接用它而是借鉴其文件组织方式。里面通常有MDK-ARM给Keil用的和EWARM给IAR用的等子文件夹。我们可以参考EWARM里的文件但更建议自己从头组织理解更透彻。Utilities\ 包含一些公用代码但初期我们可以先不引入。最重要的几个独立文件位于库的根目录或Libraries\CMSIS\下core_cm3.h/c Cortex-M3内核的访问层由ARM公司提供我们一般只包含头文件。system_stm32f10x.h/c 系统初始化文件特别是包含了非常重要的SystemInit()函数它会在上电后初始化时钟默认使用内部8MHz RC振荡器HSI。stm32f10x.h 这个文件是“总头文件”它包含了所有寄存器的地址映射和位定义以及最重要的——根据你选的芯片型号包含对应的stm32f10x_conf.h配置文件。startup_stm32f10x_hd.s等启动文件 这是汇编文件包含了芯片上电后的堆栈初始化、中断向量表以及跳转到main函数的所有前置操作。注意这个文件有多个版本对应不同容量的STM32F1芯片ld小容量、md中容量、hd大容量。对于F103ZE这类芯片必须使用hd大容量版本。注意 很多新手会直接拷贝整个库文件夹到工程里导致工程臃肿且包含大量无关文件。我们的原则是按需索取精准放置。只把我们工程真正用到的文件拷贝过来。3. 工程骨架搭建与目录结构设计好的开始是成功的一半一个清晰的目录结构能让你的工程维护起来事半功倍。我习惯在磁盘上创建一个独立的项目文件夹比如STM32F103ZE_Template然后在里面建立如下子文件夹STM32F103ZE_Template/ ├── Doc/ # 存放项目文档、芯片手册、原理图等 ├── Firmware/ # 固件主目录 │ ├── CMSIS/ # 存放核心与系统文件 │ │ ├── core_cm3.c │ │ ├── core_cm3.h │ │ ├── system_stm32f10x.c │ │ ├── system_stm32f10x.h │ │ ├── stm32f10x.h │ │ └── startup_stm32f10x_hd.s # 启动文件 │ ├── StdPeriph_Driver/ # 标准外设驱动 │ │ ├── inc/ # 外设驱动头文件 (.h) │ │ └── src/ # 外设驱动源文件 (.c) │ ├── User/ # 用户应用代码 │ │ ├── main.c │ │ ├── stm32f10x_it.c # 中断服务函数文件 │ │ ├── stm32f10x_it.h │ │ └── stm32f10x_conf.h # 库配置文件 │ └── Listings/ # IAR编译生成的列表文件可自动生成 │ └── Objects/ # IAR编译输出的目标文件可自动生成 └── README.md # 项目说明现在从我们下载的标准库包里把对应的文件“请”到上述目录中将Libraries\CMSIS\CM3\CoreSupport\下的core_cm3.c/h拷贝到Firmware/CMSIS/。将Libraries\CMSIS\CM3\DeviceSupport\ST\STM32F10x\下的system_stm32f10x.c/h、stm32f10x.h以及startup\iar\下的startup_stm32f10x_hd.s拷贝到Firmware/CMSIS/。将Libraries\STM32F10x_StdPeriph_Driver\下的inc和src两个文件夹整个拷贝到Firmware/StdPeriph_Driver/下。在Firmware/User/下新建我们的main.c、stm32f10x_it.c/h。可以从库的Project\Template里找到示例复制过来修改但更建议自己新建以加深理解。最关键的一步配置stm32f10x_conf.h。你可以从库的示例里拷贝一个然后根据需要进行裁剪。这个文件通过#define或#undef来决定工程中使能哪些外设驱动。例如如果你只用到了GPIO和USART1那么可以只保留#define USE_STDPERIPH_DRIVER、#define STM32F10X_HD、#include “stm32f10x_gpio.h”和#include “stm32f10x_usart.h”其他的外设头文件包含可以注释掉。这样可以显著加快编译速度。4. IAR工程创建与深度配置详解打开IAR Embedded Workbench选择Project - Create New Project...选择Empty project然后将其保存到我们刚才创建的Firmware目录下命名为Template。这时IAR会在Firmware目录下生成一个Template.ewp的工程文件。接下来我们需要在IAR的Workspace中创建与磁盘目录对应的“虚拟”分组Group并把文件添加进去。右键点击工程名选择Add - Add Group...创建CMSIS、StdPeriph_Driver、User等分组。然后分别右键点击这些分组选择Add - Add Files...将对应磁盘目录下的文件添加进来。注意添加StdPeriph_Driver/src下的.c文件时不要全选添加而是根据你在stm32f10x_conf.h中使能的外设选择性添加。比如你只用了GPIO和USART就只添加stm32f10x_gpio.c和stm32f10x_usart.c。这同样是优化编译的好习惯。工程配置是重中之重点击菜单栏的Project - Options...弹出配置对话框。4.1 General Options 通用选项配置切换到General Options选项卡。Target子选项卡Device: 点击右侧按钮选择ST-STM32F103ZE请根据你的实际芯片选择。这是最关键的一步它决定了编译器使用的芯片特定头文件和链接脚本。Core: 应自动变为Cortex-M3。Output子选项卡Output file: 选择Executable生成可执行文件。Format: 选择Debug information for C-SPY这是为了支持调试。Library Configuration子选项卡Library: 选择Normal。Full会链接所有库函数包括一些你可能用不到的导致代码体积增大None则不使用标准C库除非你非常清楚自己在做什么否则选Normal即可。4.2 C/C Compiler 编译器配置切换到C/C Compiler选项卡。Preprocessor子选项卡Additional include directories: 这里要添加我们所有头文件所在的路径这样编译器才能找到它们。通常需要添加$PROJ_DIR$\CMSIS $PROJ_DIR$\StdPeriph_Driver\inc $PROJ_DIR$\User$PROJ_DIR$是一个IAR内置变量代表工程文件.ewp所在的目录。使用它可以使工程路径变得相对便于迁移。Defined symbols: 这里定义全局宏。必须添加USE_STDPERIPH_DRIVER告诉标准库我们要使用驱动STM32F10X_HD对应我们使用的大容量芯片启动文件。如果是中容量则定义为STM32F10X_MDOptimizations子选项卡对于调试阶段建议选择Low或None关闭优化。这样调试时变量值、代码行号才能和源代码完全对应不会出现“跳来跳去”的情况。在最终发布版本时可以改为Balanced或High for size来优化代码体积和速度。4.3 Linker 链接器配置切换到Linker选项卡。Config子选项卡这里负责链接脚本.icf文件的配置。IAR已经为许多芯片预置了链接脚本。我们勾选Override default然后点击下面的按钮在弹出的文件选择框中导航到IAR的安装目录例如IAR Systems\Embedded Workbench 8.3\arm\config\linker\ST找到stm32f103ze.icf文件并选择它。这个文件定义了芯片的内存布局Flash, RAM的起始地址和大小以及堆栈的分配。Extra Options子选项卡通常保持默认即可。如果你使用了printf重定向到串口可能需要在这里添加--redirect _write等选项但那是后话了。4.4 Debugger 调试器配置切换到Debugger选项卡。Setup子选项卡Driver: 选择你使用的调试器最常见的是ST-LINK。如果你使用的是J-Link或CMSIS-DAP则选择对应选项。Download子选项卡通常勾选Verify download和Use flash loader(s)。Use flash loader(s)会使用ST官方提供的Flash编程算法确保烧录正确。ST-LINK子选项卡如果Driver选了ST-LINKInterface: 选择SWD。相比JTAGSWD只需要两根线SWDIO, SWCLK加电源地线占用引脚少是现在更主流的方式。Speed: 可以尝试选择Auto或一个较高的速度如4 MHz以提高下载和调试速度。如果连接不稳定再降低速度。配置完成后点击OK保存。至此工程的“骨架”和“神经系统”就搭建完毕了。5. 编写核心用户代码与工程验证现在我们来填充“血肉”——编写用户代码。首先打开Firmware/User/main.c文件。5.1 主函数框架与时钟初始化一个最基础的main.c框架如下#include “stm32f10x.h” // 必须包含的总头文件 #include “stm32f10x_conf.h” // 我们的配置文件 // 简单的延时函数基于循环计数不精确仅用于示例 void Delay(__IO uint32_t nCount) { for(; nCount ! 0; nCount--); } int main(void) { // 系统初始化主要初始化时钟默认HSI 8MHz SystemInit(); // 在这里开始编写你的外设初始化代码 // 例如初始化GPIO、USART等 // 主循环 while (1) { // 你的应用逻辑在这里 // 例如翻转LED、处理串口数据等 } }SystemInit()函数在system_stm32f10x.c中定义它会在上电复位后、跳转到main函数之前被调用由启动文件调用。默认情况下它只是将系统时钟源设置为内部8MHz的HSI。如果你需要更高的系统时钟比如72MHz需要在main函数开始时调用你自己编写的RCC_Configuration()函数来重新配置锁相环PLL。这是标准库工程的一个常见扩展点。5.2 GPIO驱动LED示例让我们添加一个具体的功能用PC13引脚很多最小系统板上的用户LED连接于此控制LED闪烁。这需要配置GPIO。首先确保stm32f10x_conf.h中已经包含了#include “stm32f10x_gpio.h”并且stm32f10x_gpio.c文件已添加到工程的StdPeriph_Driver分组中。然后在main函数中SystemInit()之后添加GPIO初始化代码GPIO_InitTypeDef GPIO_InitStructure; // 定义一个GPIO初始化结构体 // 第一步开启GPIOC端口的时钟 // 在STM32中任何外设使用前必须先开启其时钟这是与51单片机最大的区别之一 RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOC, ENABLE); // 第二步配置GPIO初始化结构体成员 GPIO_InitStructure.GPIO_Pin GPIO_Pin_13; // 选择引脚13 GPIO_InitStructure.GPIO_Mode GPIO_Mode_Out_PP; // 推挽输出模式 GPIO_InitStructure.GPIO_Speed GPIO_Speed_50MHz; // 输出速度50MHz // 第三步调用初始化函数完成配置 GPIO_Init(GPIOC, GPIO_InitStructure);最后在while(1)循环中实现闪烁逻辑while (1) { GPIO_SetBits(GPIOC, GPIO_Pin_13); // 置高电平LED灭假设低电平点亮 Delay(0xFFFFF); // 延时 GPIO_ResetBits(GPIOC, GPIO_Pin_13); // 置低电平LED亮 Delay(0xFFFFF); // 延时 }5.3 编译、下载与调试代码编写完成后点击IAR工具栏上的Make或按F7进行编译。如果之前所有步骤都正确你应该能在底部的Build窗口看到Total number of errors: 0的提示。如果有错误或警告请根据提示信息回头检查文件是否添加完整、路径是否正确定义、宏是否正确定义。编译无误后将你的开发板通过ST-LINK等调试器与电脑连接并确保供电正常。点击Download and Debug或按CtrlD按钮。IAR会先将程序下载到芯片的Flash中然后自动进入调试界面。进入调试界面后你可以按F5全速运行观察LED是否开始闪烁。按F10单步执行一步步跟踪程序流程。在左侧Register窗口观察核心寄存器的值在Live Watch窗口添加变量进行实时监控。点击ResetCtrlShiftF5让程序复位重新运行。点击Stop DebuggingCtrlShiftD退出调试模式。如果LED成功闪烁恭喜你一个最基础的、基于IAR和STM32标准库的工程模板已经搭建并验证成功6. 进阶配置与常见问题深度排查基础工程跑通后我们往往会根据项目需求进行更复杂的配置过程中也难免会遇到各种问题。这里分享几个进阶要点和常见坑点。6.1 系统时钟配置为72MHz默认的HSI 8MHz时钟往往无法满足性能需求。将系统时钟配置到72MHz是F1系列的经典操作。这需要配置PLL。我们可以在main函数开头SystemInit()之后添加一个时钟配置函数void RCC_Configuration(void) { ErrorStatus HSEStartUpStatus; // 用于判断HSE启动状态 // 1. 复位RCC时钟配置到默认状态可选但推荐 RCC_DeInit(); // 2. 开启外部高速晶振HSE RCC_HSEConfig(RCC_HSE_ON); // 3. 等待HSE起振稳定 HSEStartUpStatus RCC_WaitForHSEStartUp(); if (HSEStartUpStatus SUCCESS) { // 4. 设置AHB时钟HCLK SYSCLK RCC_HCLKConfig(RCC_SYSCLK_Div1); // 5. 设置APB2高速时钟PCLK2 HCLK RCC_PCLK2Config(RCC_HCLK_Div1); // 6. 设置APB1低速时钟PCLK1 HCLK/2 (最大36MHz) RCC_PCLK1Config(RCC_HCLK_Div2); // 7. 配置PLLHSE作为源9倍频。HSE通常为8MHz9*872MHz RCC_PLLConfig(RCC_PLLSource_HSE_Div1, RCC_PLLMul_9); // 8. 使能PLL RCC_PLLCmd(ENABLE); // 9. 等待PLL就绪 while (RCC_GetFlagStatus(RCC_FLAG_PLLRDY) RESET); // 10. 切换系统时钟源到PLL RCC_SYSCLKConfig(RCC_SYSCLKSource_PLLCLK); // 11. 等待系统时钟源切换成功 while (RCC_GetSYSCLKSource() ! 0x08); } else { // 如果HSE启动失败可以在这里处理错误比如切换到HSI // 通常点亮一个错误指示灯或卡死循环 while (1); } }然后在main中调用RCC_Configuration();。注意此时SystemInit()仍然需要调用因为它还初始化了其他内容如FPU等。6.2 中断服务函数与向量表管理所有中断服务函数ISR都应该写在stm32f10x_it.c文件中并在对应的头文件stm32f10x_it.h中声明。启动文件startup_stm32f10x_hd.s中已经定义好了所有中断向量的名称弱定义。例如SysTick中断服务函数的名字是SysTick_Handler。当你在stm32f10x_it.c里用相同的名字实现一个函数时链接器就会用你的强符号覆盖启动文件中的弱符号从而让你的函数生效。// 在 stm32f10x_it.c 中 void SysTick_Handler(void) { // 你的SysTick中断处理代码 // 例如一个简单的毫秒级时基计数器 if (uwTick ! 0xFFFFFFFF) { uwTick; } }6.3 常见编译与链接错误排查表在搭建环境过程中你可能会遇到各种报错。下面是一个快速排查指南错误现象可能原因解决方案Error[Pe020]: identifier “xxxx” is undefined头文件包含路径错误或宏未定义。1. 检查Options - C/C Compiler - Preprocessor中的包含路径$PROJ_DIR$...是否正确。2. 检查Defined symbols是否正确定义了USE_STDPERIPH_DRIVER和芯片型号宏如STM32F10X_HD。Error[Li005]: no definition for “SystemInit”启动文件调用了SystemInit但链接器找不到其定义。确保system_stm32f10x.c文件已正确添加到工程的CMSIS分组中。Warning[Pe223]: function “xxxx” declared implicitly使用了某个函数如GPIO_Init但没有包含对应的头文件。在源文件开头#include “stm32f10x_gpio.h”。同时检查stm32f10x_conf.h是否已取消对该头文件的注释。程序下载失败提示“No ST-LINK detected”调试器驱动未安装或连接异常。1. 检查USB线是否插好开发板是否供电。2. 在设备管理器中查看ST-LINK驱动是否正常安装应显示为STMicroelectronics STLink dongle。3. 尝试更换USB口或数据线。调试时程序无法运行或跑飞1. 系统时钟配置错误如PLL未锁定。2. 堆栈大小设置不足。3. 中断服务函数名写错导致进入默认错误中断。1. 检查时钟配置代码特别是等待标志位的循环。2. 在链接脚本.icf文件或Options - Linker - Config中检查堆栈大小设置对于复杂应用适当增大。3. 核对stm32f10x_it.c中的函数名是否与启动文件中定义的向量名完全一致。代码体积过大超出Flash限制1. 在StdPeriph_Driver分组中添加了未使用的.c文件。2. 编译器优化等级太低。3. 在stm32f10x_conf.h中使能了过多未使用的外设。1. 移除工程中未使用的驱动源文件。2. 在Options - C/C Compiler - Optimizations中将优化等级改为Balanced或High for size。3. 在stm32f10x_conf.h中仅保留必需的外设头文件包含。6.4 工程模板的维护与迭代这个新建的工程就是你的“种子”工程。以后每开始一个新项目最好的做法不是在这个工程上直接改而是复制整个项目文件夹然后重命名在新副本中进行开发。这样可以保证你的原始模板永远是干净可用的。随着项目复杂度的增加你可能会需要添加第三方组件如FatFS文件系统、FreeRTOS实时操作系统、LVGL图形库等。为它们创建独立的文件夹如Middlewares/FatFS,RTOS/FreeRTOS并妥善管理其头文件路径和源文件。模块化编程将不同功能如按键、显示屏、传感器驱动写成独立的.c/.h文件对放在User或新建的Drivers、BSP目录下。版本管理使用Git等工具对工程进行版本控制Objects/和Listings/这类编译生成文件夹应加入.gitignore。搭建环境的过程本质上是在建立你对工具链和芯片架构的认知地图。每一步配置背后都有其道理理解它们远比单纯地复制粘贴命令更能让你在后续开发中游刃有余。当你第一次看到自己搭建的工程成功编译、下载并运行时那种对全局的掌控感是直接使用现成IDE模板无法比拟的。这个模板将成为你征战STM32世界的可靠起点。

相关新闻

MySQL 8.0安装与配置Percona审计插件:实现数据库操作追溯与安全合规

MySQL 8.0安装与配置Percona审计插件:实现数据库操作追溯与安全合规

1. 项目概述:为什么MySQL需要审计插件?在数据库运维和开发工作中,数据安全与操作追溯的重要性不言而喻。想象一下,生产环境里一张核心表的数据被意外修改或删除,如果没有清晰的记录,排查问题就如同大海捞针…

2026/8/26 11:11:28 阅读更多 →
Ubuntu Server 20.04安装VNC与XFCE4桌面:从零配置到安全优化

Ubuntu Server 20.04安装VNC与XFCE4桌面:从零配置到安全优化

1. 项目缘起:为什么要在Ubuntu Server上装桌面? 很多刚接触Linux服务器运维的朋友,可能会觉得“服务器”就应该是个黑乎乎的终端,用SSH敲命令才是正道。我以前也这么想,直到遇到一些实际场景:需要图形化配置…

2026/8/26 11:11:28 阅读更多 →
Linux登录机制深度解析:从login命令到PAM认证与会话管理

Linux登录机制深度解析:从login命令到PAM认证与会话管理

1. 项目概述:为什么我们需要深入了解login命令?在Linux世界里,我们每天都在和终端打交道,无论是通过SSH远程连接服务器,还是在本地打开一个虚拟控制台,登录系统是开始一切工作的第一步。很多朋友可能会觉得…

2026/8/26 11:10:26 阅读更多 →

最新新闻

微信防撤回失效快速修复:3步搞定weixin.dll适配补丁完整指南

微信防撤回失效快速修复:3步搞定weixin.dll适配补丁完整指南

微信防撤回失效快速修复:3步搞定weixin.dll适配补丁完整指南 【免费下载链接】RevokeMsgPatcher :trollface: A hex editor for WeChat/QQ/TIM - PC版微信/QQ/TIM防撤回补丁(我已经看到了,撤回也没用了) 项目地址: https://gitc…

2026/8/26 14:20:25 阅读更多 →
AI写短篇脑洞文怎么上手?一套七步结构,从灵感直接到成稿

AI写短篇脑洞文怎么上手?一套七步结构,从灵感直接到成稿

AI写短篇脑洞文怎么上手?核心是先把平台和结构定死:用七步故事法搭骨架,锁死平台调性和爆点密度,再让AI分段生成、人工精修。短篇写得好不好,开头三秒和反转最要命。蛙趣拼文这类带记忆系统的AI写小说工作台&#xff0…

2026/8/26 14:20:25 阅读更多 →
toxic-repos数据转换原理揭秘:convert_database_to_other_formats.py源码全解读(SQLite→JSON/CSV)

toxic-repos数据转换原理揭秘:convert_database_to_other_formats.py源码全解读(SQLite→JSON/CSV)

toxic-repos数据转换原理揭秘:convert_database_to_other_formats.py源码全解读(SQLite→JSON/CSV) 【免费下载链接】toxic-repos We are against discrediting open source software 项目地址: https://gitcode.com/gh_mirrors/to/toxic-r…

2026/8/26 14:20:25 阅读更多 →
使用Trae进行编程智能编程助手工作,豆包、deepseek-v3和deepseek-r1哪个模型更适合使用?

使用Trae进行编程智能编程助手工作,豆包、deepseek-v3和deepseek-r1哪个模型更适合使用?

Trae 是一个智能编程助手,专注于帮助开发者高效完成软件开发相关工作。可以把它理解为加了AI大模型加持的VSCode编辑器。国内版内置免费的豆包、deepseek-v3和deepseek-r1大模型,可以帮助用户自动进行编码工作。 但是在设置使用哪个模型的时候&#xff…

2026/8/26 14:20:25 阅读更多 →
医疗数据的死亡风险预测任务

医疗数据的死亡风险预测任务

医学人工智能在死亡风险预测等高价值场景中的应用日趋成熟,推动着数据驱动医疗的演进。利用电子病历数据预测患者结局,不仅为医院资源分配提供支持,也为精准干预提供了技术保障。 本文聚焦于“2018 Spring CSE6250 HW1”医疗预测竞赛,从任务设计、数据特性、建模策略到实际…

2026/8/26 14:19:24 阅读更多 →
万用表在硬件测试中的使用

万用表在硬件测试中的使用

功能选择旋钮:核心操作区,标有不同测量功能(V-直流电压、V~交流电压、A-直流电流、A~交流电流、Ω电阻等)及量程,需根据测量需求精准选择。表笔与表笔插孔:红表笔接“”极插孔(常见标注“VΩmA”…

2026/8/26 14:19:24 阅读更多 →

日新闻

Python random 模块常用函数详解:从入门到实战

Python random 模块常用函数详解:从入门到实战

目录 1. 引言2. 准备工作3. 基础随机函数4. 序列相关函数5. 随机种子与复现6. 实战案例7. 注意事项8. 常见问题与排查9. 总结 1. 引言 摘要: 本文系统介绍 Python 标准库 random 模块中最常用的随机数生成函数。内容涵盖基础随机函数(random()、unifor…

2026/8/26 0:00:40 阅读更多 →
《Microsoft Sql server 2008 Internals》读书笔记--第三章Databases and Database Files(2)

《Microsoft Sql server 2008 Internals》读书笔记--第三章Databases and Database Files(2)

《Microsoft Sql server 2008 Internals》索引目录: 《Microsoft Sql server 2008 Internals》读书笔记--目录索引 在上篇文章中,主要介绍了创建数据库的基本语法和FileGroup的初步知识。需要注意的是: 关于FileGroup 如果你的系统是用Raid设备直接存…

2026/8/26 1:18:18 阅读更多 →
政务AI智能体怎么建?三种模式、三步路径与四个误区

政务AI智能体怎么建?三种模式、三步路径与四个误区

政务AI智能体已经从概念试点阶段,转入了政务服务的常态化落地应用;在实际使用过程中,它能自主理解办事需求、辅助完成填报申报、开展材料预审,并联动多个系统协同作业,真正嵌入到政务办理的全流程当中。但在落地推进过…

2026/8/26 1:18:18 阅读更多 →

周新闻

[光学原理与应用-521]:对光的错误理解与纠偏

[光学原理与应用-521]:对光的错误理解与纠偏

首先光是一种能量的载体和形态,宏观上观察到的光是由无数个微观的光量子组成的,每个光子在产生的瞬间,其在真空的空间中以确定不变的速度沿着一个初始的方向一直向前,在微观层面,每个光量子的运动轨迹是以波函数所展现…

2026/8/25 3:38:12 阅读更多 →
SIP通话转接原理与REFER方法实战解析

SIP通话转接原理与REFER方法实战解析

1. 通话转接不是“挂断再拨号”,而是SIP会话的动态重定向你有没有遇到过这样的场景:客服坐席A正在和客户通电话,突然需要把这通对话无缝转给专家坐席B,客户完全感知不到中间的断连——既没听到忙音,也没被要求重新拨号…

2026/8/25 3:38:18 阅读更多 →
Kolla-ansible单节点OpenStack部署实战:从环境准备到排坑指南

Kolla-ansible单节点OpenStack部署实战:从环境准备到排坑指南

1. 为什么选择Kolla-ansible来部署单节点OpenStack?如果你正在寻找一种能把OpenStack从“概念”快速变成“可用的实验环境”的方法,那么Kolla-ansible几乎是当前最主流、最省心的选择。我见过太多人卡在手动编译依赖、配置服务、处理版本冲突的泥潭里&am…

2026/8/25 3:38:23 阅读更多 →

月新闻

免费解锁百度网盘SVIP加速:macOS用户必备的下载提速终极指南

免费解锁百度网盘SVIP加速:macOS用户必备的下载提速终极指南

免费解锁百度网盘SVIP加速:macOS用户必备的下载提速终极指南 【免费下载链接】BaiduNetdiskPlugin-macOS For macOS.百度网盘 破解SVIP、下载速度限制~ 项目地址: https://gitcode.com/gh_mirrors/ba/BaiduNetdiskPlugin-macOS 还在为百度网盘macOS版的龟速下…

2026/8/26 3:50:20 阅读更多 →
终极ncmdump指南:3分钟实现网易云NCM音乐解密与格式转换

终极ncmdump指南:3分钟实现网易云NCM音乐解密与格式转换

终极ncmdump指南:3分钟实现网易云NCM音乐解密与格式转换 【免费下载链接】ncmdump 项目地址: https://gitcode.com/gh_mirrors/ncmd/ncmdump 还在为网易云音乐下载的NCM格式文件无法在其他播放器播放而烦恼吗?ncmdump解密工具帮你轻松解决这个困…

2026/8/25 10:31:12 阅读更多 →
HarmonyOS 应用开发《掌上英语》第81篇: 智能体卡片:为英语学习 App 打造桌面级学习助手

HarmonyOS 应用开发《掌上英语》第81篇: 智能体卡片:为英语学习 App 打造桌面级学习助手

AgentCard 智能体卡片:为英语学习 App 打造桌面级学习助手适用平台:HarmonyOS 7.0 (API 26 Beta)一、引言 HarmonyOS 7.0(API 26 Beta)新增了 AgentCard 智能体卡片能力,这是继 HMAF(鸿蒙智能体框架&#x…

2026/8/26 1:24:05 阅读更多 →