STM32H743IIT6定时器配置实战:从公式到代码实现

STM32H743IIT6基本定时器学习笔记 说起STM32的定时器,一两句话肯定是讲不清楚的,种类繁多、功能强大,不同系列数量也不一样,但只是完成简单的定时任务的话,我们只需要理解一个公式就行了:我来解释一下这个公式的意思,T就是需要定时的时间;ARR学名自动重装寄存器,16位,俩字节,也就是说表示范围在0-65535之间,作用是控制计数器的最大计数值,写入后分为立即生效和下个周期生效两种模式; 阅读详情

1. 从“芯”理解:STM32H743IIT6定时器的核心公式

大家好,我是老李,一个在嵌入式领域摸爬滚打了十多年的“老司机”。今天咱们不聊那些虚头巴脑的理论,直接上手,用最“小白”的方式,把STM32H743IIT6这颗性能怪兽的定时器给玩转。很多新手朋友一看到定时器就头疼,什么预分频、自动重载、计数模式,感觉一堆名词在脑子里打架。别急,咱们今天就从最核心、最管用的一个公式开始,我保证,只要你理解了它,配置定时器就像做小学数学题一样简单。

这个公式就是:T = (ARR + 1) * (PSC + 1) / F。别被它吓到,咱们拆开揉碎了说。T 就是你想要的定时时间,比如1秒、100毫秒。ARR 和 PSC 是咱们待会儿要在代码里设置的两个关键参数。F 是定时器的“心跳”频率,也就是时钟源。这个公式是整个定时器定时的灵魂,它告诉你,定时时间是由这三个家伙共同决定的。

咱们先说说 F,也就是时钟频率。STM32H743IIT6的定时器挂在不同的总线上,比如APB1、APB2。你在CubeMX里配置时钟树的时候,会给这些总线分配合适的频率。这里有个关键点:STM32的定时器时钟往往比总线时钟快。比如,APB1的总线时钟你设成了100MHz,但定时器模块内部可能会有一个倍频器(通常是x2),这样定时器实际收到的时钟 F 可能就是200MHz。这一点千万要查数据手册确认,不然算出来的时间会差一倍。我刚开始就踩过这个坑,调了半天发现灯闪得飞快,最后才发现时钟源搞错了。

然后是 ARR,全称是自动重装载寄存器。你可以把它想象成一个水桶的刻度。定时器就像一个不断接水滴的计数器,每来一个时钟脉冲就加一滴水(计一个数)。ARR 就决定了这个水桶的最大容量。当水(计数值)加到和 ARR 设定的刻度一样时,水桶就满了,这时候会产生一个“溢出”事件(也就是中断),同时水桶会被自动清空,重新开始接水。所以,ARR 直接决定了计数器的计数上限。

最后是 PSC,预分频器。这个家伙的作用是“偷懒”。如果时钟脉冲 F 太快了,比如200MHz,一秒钟能数2亿次,那我们的 ARR 值得设得多大才能定个1秒啊?65535根本不够用。这时候 PSC 就出场了,它的作用是让计数器“跳着数”。PSC = 0 表示来一个脉冲数一下(1分频);PSC = 1 表示来两个脉冲数一下(2分频);以此类推。所以,(PSC + 1) 就是分频系数。它相当于把高速的原始时钟“降速”,变成一个计数器更容易处理的慢速时钟。

把这三个家伙乘在一起 (ARR+1)*(PSC+1),得到的就是计数器从0计到溢出所需要的总时钟周期数。再用这个数除以原始时钟频率 F,自然就得到了定时时间 T。我习惯把这个过程叫做“搭积木”:PSC 负责把高频时钟的积木变小(分频),ARR 决定用多少块这样的积木垒起来(计数),最终达到我们想要的时间高度。

举个例子,假设我们用的TIM6挂在APB1上,APB1时钟是100MHz,定时器有2倍频,所以 F = 200MHz。我们想定时1秒,即 T = 1s。代入公式:1 = (ARR+1)*(PSC+1) / 200,000,000。所以 (ARR+1)*(PSC+1) = 200,000,000。现在问题变成了:在0-65535之间找两个数(因为ARR和PSC都是16位寄存器),让它们的乘积等于2亿。这太简单了,比如我们可以让 ARR = 20000-1(即19999),PSC = 10000-1(即9999)。这样 (20000)*(10000) = 200,000,000,完美。当然,你也可以设 ARR=39999, PSC=4999,或者 ARR=49999, PSC=3999,组合非常多,只要乘积对就行。在实际项目中,我通常会先根据所需的时间精度和最大定时范围,确定一个合适的分频系数 PSC,再去计算 ARR,这样更灵活。

2. 手把手配置:CubeMX图形化实战

理论懂了,咱们就开干。STM32CubeMX是ST官方出的神器,图形化点一点,代码就生成了,大大降低了入门门槛。咱们就用它来把上面那个1秒定时的例子实现出来。打开CubeMX,新建一个工程,选择STM32H743IIT6这颗芯片。

第一步,配置时钟树。这是很多新手会发懵的地方,但也是决定系统性能的基础。在“Clock Configuration”选项卡里,你会看到一个复杂的网状图。我们的目标是给APB1总线提供时钟。H743系列性能很强,你可以直接把HSE(外部高速晶振,比如8MHz)通过PLL倍频到较高的系统时钟。这里为了演示,我们采用一个常见的配置:将系统时钟(SYSCLK)设置为400MHz,然后让APB1的预分频器设为4分频,这样APB1的时钟 APB1 CLK 就是100MHz。请务必注意:根据数据手册,当APB1预分频系数不为1时,连接到该APB1总线上的定时器时钟(TIMxCLK)会是 APB1 CLK 的两倍。所以,在我们的配置下,TIM6 的时钟源 F 就是 100MHz * 2 = 200MHz。这一点CubeMX非常智能,你配置好APB1总线频率后,在定时器配置页面,它会直接显示 Timer Clock 为200MHz,不用我们自己算。

第二步,找到并配置定时器。在左侧的“Pinout & Configuration”界面,找到“Timers”分类,展开后你会看到很多定时器,TIM1到TIM17等等。我们找一个基本定时器,比如 TIM6。基本定时器功能最简单,只有最核心的定时功能,没有复杂的输入捕获、输出比较,最适合学习。点击 TIM6,在右侧会出现配置面板。

在“Parameter Settings”选项卡里,关键的就两个参数:Prescaler (PSC - 16 bits value) 和 Counter Period (AutoReload Register - 16 bits value)。这不就是我们公式里的 PSC 和 ARR 嘛!把咱们计算好的值填进去:在 Prescaler 里输入 9999(即10000-1),在 Counter Period 里输入 19999(即20000-1)。下面的“Counter Mode”就选“Up”(向上计数),这是最常用的模式。

这里有一个超级重要的选项:auto-reload preload。它决定了ARR值何时生效。如果选择“Disable”,你修改ARR值后会立即更新,这可能会打断当前计数周期,造成定时不准。如果选择“Enable”,则新的ARR值会等到本次计数周期结束(溢出)后才加载生效,保证了定时周期的完整性。对于大多数周期性定时应用,我强烈建议启用这个功能(设置为Enable),这样定时会更稳定。

第三步,开启中断。定时器光计数不行,我们得知道它什么时候“数满了”。这就需要中断。切换到“NVIC Settings”选项卡,找到 TIM6 global interrupt,把后面的“Enabled”复选框勾上。这样,当定时器溢出时,就会触发中断,CPU会跳转到中断服务函数里执行我们想做的事情,比如翻转一个LED灯。配置好后,你可以点击右上角的“GENERATE CODE”生成工程代码了。CubeMX会帮你初始化好时钟、GPIO(如果你配置了LED灯的话)、以及定时器TIM6的所有参数,我们只需要写业务逻辑就行了。

3. 代码移植与编写:HAL库函数详解

CubeMX生成了代码骨架,但让定时器跑起来,并响应中断,还需要我们添加几行关键的代码。HAL库的封装层次比较高,很多时候我们只需要调用几个函数就能完成工作。咱们一步步来。

首先,在生成的工程里,找到 main.c。在 /* USER CODE BEGIN 2 */ 和 /* USER CODE END 2 */ 之间,我们需要启动定时器并开启其中断。HAL库提供了两个常用的启动函数:

  • HAL_TIM_Base_Start(&htim6): 启动定时器,但不开启中断。
  • HAL_TIM_Base_Start_IT(&htim6): 启动定时器,同时开启更新中断。

我们用的是中断模式,所以当然选第二个。就在USER CODE 2区域里,加上这行代码:

HAL_TIM_Base_Start_IT(&htim6);

这样,定时器就开始从0向上计数,当计数值达到我们设定的ARR(19999)时,就会产生一个“更新事件”,并触发中断。

那么,中断产生后,程序去哪了呢?这涉及到HAL库的中断处理机制。HAL库为每个外设写好了通用的中断服务函数,名字是固定的。对于TIM6,它的中断服务函数叫 TIM6_DAC_IRQHandler(),这个函数已经在 stm32h7xx_it.c 文件里由CubeMX生成了。在这个函数内部,它调用了 HAL_TIM_IRQHandler(&htim6)。这个HAL库的通用中断处理函数会判断是哪种定时器中断(更新、捕获、比较等),然后去调用对应的回调函数。

回调函数才是我们写代码的主战场。我们需要自己实现一个回调函数,来处理定时器更新中断。这个函数有固定的名字:HAL_TIM_PeriodElapsedCallback。它会在定时器溢出中断发生时,被 HAL_TIM_IRQHandler 调用。我们在 main.c 文件末尾,或者自己新建的源文件里,重写这个函数:

/* USER CODE BEGIN 4 */
void HAL_TIM_PeriodElapsedCallback(TIM_HandleTypeDef *htim)
{
  /* 判断是哪个定时器产生的中断 */
  if (htim->Instance == TIM6)
  {
    /* 在这里写你的处理代码,比如翻转LED */
    HAL_GPIO_TogglePin(LED_GPIO_Port, LED_Pin); // 假设你的LED引脚叫LED_Pin
  }
}
/* USER CODE END 4 */

注意,这个回调函数是弱定义的,我们在别处重新实现它,编译器就会用我们的这个强定义版本。函数里的 htim->Instance 是用来判断中断来源的,因为所有定时器的中断最终都可能走到这个回调,所以加个判断是个好习惯,尤其是当你用了多个定时器的时候。

这里我分享一个踩坑经验:有时候你会发现中断进不来,或者只进一次。除了检查NVIC是否开启、启动函数是否调对之外,还要注意中断优先级。在CubeMX的NVIC配置里,可以设置抢占优先级和子优先级。如果其他地方有更高优先级的中断一直占着CPU,你的定时器中断就可能被延迟甚至无法响应。对于简单的应用,默认优先级一般没问题,但复杂系统里一定要规划好。

4. 进阶调试与精度考量

代码写好了,下载到板子上,LED灯开始每秒闪烁一次,是不是很有成就感?但作为开发者,我们还得知道它为什么闪,以及怎么让它闪得更准。这就涉及到调试和精度考量。

首先,如何验证定时是否准确?最土但最有效的方法就是用示波器或者逻辑分析仪测量LED引脚的电平变化周期。如果没有这些设备,可以尝试“软件示波器”:在中断回调函数里翻转一个空闲的GPIO引脚,然后用开发板自带的调试引脚(比如SWO)配合IDE(如STM32CubeIDE)的“逻辑分析仪”功能来观察波形。我实测过,按照上述公式和配置,在200MHz的定时器时钟下,定时精度是非常高的,误差主要来自外部晶振的精度以及芯片内部的时钟抖动,对于大多数应用来说完全足够。

其次,关于ARR和PSC的取值优化。前面我们说乘积等于 F * T 就行,但实际选择有讲究。原则是:在满足定时范围的前提下,尽量让ARR取较大值,PSC取较小值。为什么?因为ARR是决定计数器周期的,ARR越大,计数的分辨率就越高。举个例子,同样是1秒定时,方案一:PSC=19999, ARR=9999;方案二:PSC=9999, ARR=19999。虽然乘积一样,但方案二的ARR更大。这意味着,如果你需要微调定时时间(比如改成1.001秒),方案二只需要将ARR从19999调到20000附近,调整的步长是 (PSC+1)/F = 10000/200MHz = 0.05ms。而方案一的调整步长是 20000/200MHz = 0.1ms。显然方案二对时间的微调更精细。当然,ARR也不能超过65535。

第三,动态修改定时周期。有时候我们需要在程序运行中改变定时时间,比如根据环境调整采样频率。这时候不能直接修改ARR或PSC,因为正在计数的寄存器可能处于不稳定状态。HAL库提供了安全的函数:

/* 修改预分频器 */
__HAL_TIM_SET_PRESCALER(&htim6, new_psc_value);
/* 修改自动重装载值 */
__HAL_TIM_SET_AUTORELOAD(&htim6, new_arr_value);

但要注意,修改ARR时,如果之前设置了 auto-reload preload 为Enable,新值会在下次更新事件后才生效。如果需要立即生效(可能会打断当前周期),可以先停止定时器,修改参数,再重新启动。不过我更推荐使用预装载功能,保证周期的完整性。

最后,聊聊其他定时器模式。我们用的基本定时器只有“向上计数”模式。STM32H743的通用定时器和高级定时器还支持“向下计数”、“中央对齐”模式。向下计数就是从ARR开始减到0产生中断;中央对齐则是先向上计数到ARR,再向下计数到0,形成一个对称的波形,在电机控制、PWM生成中特别有用。当你掌握了基本定时器后,再去学习这些模式,会发现原理都是相通的,只是计数方向和行为略有不同。

定时器是STM32最强大也最常用的外设之一,从简单的延时、定时采样,到复杂的PWM驱动、输入捕获测频率,都离不开它。理解了这个核心公式和配置流程,你就拿到了打开定时器大门的钥匙。剩下的,就是在实际项目中多尝试、多调试。遇到问题别怕,多查查数据手册的定时器章节,或者看看正点原子、野火这些优秀教程的深入讲解,你一定会从“会用”变成“精通”。

STM32H743IIT6定时器入门:从公式到代码的保姆级教程 本文提供STM32H743IIT6定时器的保姆级教程,从基础公式解析到CubeMX配置和代码实现,详细讲解定时器核心参数ARR和PSC的计算方法。通过实战案例演示如何配置1秒定时中断,并分享高级技巧如动态调整定时周期和高精度延时实现,帮助开发者快速掌握STM32定时器应用。 阅读详情

相关推荐

STM32H743IIT6定时器避坑指南:常见配置错误及解决方法

本文详细解析了STM32H743IIT6定时器配置中的常见错误及解决方案,包括基础配置误区、中断与DMA问题、高级定时器陷阱以及低功耗模式下的异常处理。通过实战案例和调试技巧,帮助开发者高效避坑,提升嵌入式系统开发效率。

weixin_29164497的博客 123

STM32CubeMX学习笔记——STM32H743通用定时器

STM32CubeMX学习——STM32H743通用定时器功能简述STM32CubeMX配置Pinout配置Clock Configuration配置ConfigurationGPIOTIM3TIM2NVIC代码部分main.cstm32h7xx_it.h 功能简述 主模式TIM2的中断作为从模式TIM3的时钟输入 (级联定时器) 红灯亮6灭5 频率1hz 绿灯亮3灭3 频率0.5hz STM32...

weixin_41738734的博客 1万+

STM32H743IIT6定时器避坑指南:常见配置错误与解决方案

本文详细解析了STM32H743IIT6定时器配置中的常见错误与解决方案,涵盖时钟配置、中断处理、DMA配合等关键环节。针对ARR与PSC取值误区、时钟源选择等典型问题提供实用调试技巧,帮助开发者高效避坑并优化定时器性能。特别适合嵌入式开发者在H743项目中进行定时器配置参考。

weixin_30399821的博客 430

配置STM32H743定时器功能

STM32H743IIT6存在两个修订版,支持的最大时钟频率不同。(可能就是早期支持400MHz,与后期支持480MHz的区别吧)图示定时器输出频率为:240MHz / (23+1) / (99+1) = 100KHz。通过步骤1,可知,TIM3挂载在APB1,APB1最大支持120MHz。CubeMX生成的工程中,默认不会打开定时器,需要添加代码,主动打开。间隔1个多小时后,截图时秒数保持一致,基本可以说明定时器计时准确。由CubeMX配置可知,APB1_TIM时钟源频率为240MHz。

horse_2007s的博客 2457

STM32H743VIT6实现1M采样率ADC的定时器触发与DMA传输实战

本文详细讲解了如何使用STM32H743VIT6微控制器实现高达1MHz采样率的ADC数据采集。核心方案结合了定时器触发与DMA传输技术,通过精准配置定时器产生1MHz触发信号,并利用DMA进行高速、不占用CPU的数据搬运,确保高采样率下的数据完整性与系统实时性。文中提供了关键代码配置、时钟树分析及常见问题调试方法,为嵌入式高速信号采集项目提供实战指导。

pear55的博客 1070

STM32H743IIT6独立看门狗IWDG学习笔记

独立看门狗是stm32中的一个防止程序跑飞的功能,我的理解就是一个定时器,不同系列都有这个功能,以内部低速时钟LSI作为时钟源,所以不太精确,但影响也不大。主要操作就是喂狗,说人话就是刷新定时器,如果到定时时间没有刷新,独立看门狗就会产生一个复位信号,让单片机重启,学习重点在定时时间的计算,公式我贴到下面。这俩公式其实一个意思,比方说LSI是32KHz,带入32000算的时间单位就是秒,带入32算的时间单位就是毫秒。

qq_31729877的博客 666

QGC地面站二次开发实战:为地图任务项动态绘制与交互式编辑盘旋半径

本文详细介绍了QGroundControl地面站二次开发中,如何为地图任务项实现盘旋半径的动态可视化与交互式编辑。通过剖析C++数据模型与QML前端的数据绑定机制,指导开发者完成从后端属性暴露到前端地图绘制、拖拽交互及参数同步的完整闭环,显著提升任务规划的用户体验与操作效率。

ik67890123的博客 455

手把手教你搞定STM32H743的SDRAM:从CubeMX配置到读写测试的完整避坑指南

本文详细介绍了STM32H743 SDRAM的完整配置流程,从CubeMX基础设置到稳定性测试全解析。重点讲解了FMC接口配置、时序参数计算及初始化代码实现,帮助开发者避开常见问题,确保SDRAM稳定运行。适用于嵌入式开发中需要扩展内存的场景。

weixin_26873711的博客 362

15.STM32H743 TIM

STM32H743的定时器是功能最丰富、应用最广泛的外设之一,涵盖三大类,可实现定时中断、PWM输出、输入捕获、输出比较、正交解码(编码器)等核心功能,是嵌入式开发中实现精准时序控制、电机驱动、信号测量的核心工具。

知识共享、互助共进 2077

STM32H743(同样适用于H745)LWIP配置-裸机+FreeRtos V2--笔记

STM32H743(同样适用于H745)LWIP配置-裸机+FreeRtos V2--笔记

R_752995的博客 5221

【信息科学与工程学】【控制科学】第十二篇 微型计算机控制技术01

更精确的经典模型:I1在第5周期WB结束,I2最早可在第6周期进入EX,但I2在ID阶段就需要R1,因此I2的ID需在第6周期,而I1的WB在第5周期,所以I2的ID可以紧接在第6周期,但中间仍有一个stall(因为I1的EX结果要等到MEM之后才能转发给ID?有优先级继承后,Task_L被提升优先级,不会被Task_M抢占,阻塞时间缩短为Task_L剩余执行时间(9ms),仍可能超过10ms,但可通过调整任务周期或使用中断处理缓解。电感L=10μH,输出电容C=100μF,ESR=5mΩ。

weixin_49199313的博客 8644

stm32H743定时器设置

当然,分频系数、时钟频率、定时器周期 可以根据实际情况设置,不一定仅局限于某个数,比如0.5s也可以这么计算:0.5s = (3599+1)/72000000*(9999+1)赫兹(Hz)是频率的基本单位,每秒钟的周期次数。例:假设时钟信号为1KHz,可编程预分频器系数为9,主计数器系数为9。定时时间 = (可编程预分频器+1 ) X (主计数器+1) X 1/ 定时器时钟频率。‌ 兆赫(MHz)是频率的单位,符号为MHz,1兆赫等于10^6赫兹。若要定时0.001ms,则:0.001ms = 1us =

rfidunion的博客 1303

STM32H743-寄存器版本标准例程

实验0 新建工程实验 实验1 跑马灯实验 实验10 电容触摸按键实验 实验11 OLED实验 实验12 内存保护(MPU)实验 实验13 TFTLCD(MCU屏)实验 实验14 SDRAM实验 实验15 LTDC LCD(RGB屏)实验 实验16 USMART调试实验 实验17 RTC实验 实验18 硬件随机数实验 实验19 待机唤醒实验 实验2 按键输入实验 实验20 ADC实验 实验21 内部温度传感器实验 实验22 DAC实验 实验23 PWM DAC实验 实验24 DMA实验 实验25 IIC实验 实验26 IO扩展实验 实验27 光环境传感器实验 实验28 QSPI实验 实验29 485实验 实验3 串口通信实验 实验30 FDCAN实验 实验31 触摸屏实验 实验32 红外遥控器实验 实验33 DS18B20数字温度传感器实验 实验34 DHT11数字温湿度传感器实验 实验35 MPU9250九轴传感器实验 实验36 无线通信实验 实验37 FLASH模拟EEPROM实验 实验38 摄像头实验 实验39 内存管理实验 实验4 外部中断实验 实验40 SD卡实验 实验41 NAND FLASH实验 实验42 FATFS实验 实验43 汉字显示实验 实验44 图片显示实验 实验5 独立看门狗实验 实验6 窗口看门狗实验 实验7 定时器中断实验 实验8 PWM输出实验 实验9 输入捕获实验

STM32H743IIT6窗口看门狗WWDG学习笔记

窗口看门狗WWDG比独立看门狗IWDG精确度要高,原因主要是二者使用的时钟源不同,WWDG使用的是APB总线时钟,这款单片机型号的APB总线时钟频率最高可以配置到120M,所以说WWDG的定时时间也没有一个定数,跟你选择的时基系数和总线频率有关。

qq_31729877的博客 518

Zotero+WPS文献引用跳转功能缺失?3分钟教你用VBA宏搞定(附完整代码)

本文针对WPS用户使用Zotero时文献引用无法点击跳转的痛点,提供了一套完整的VBA宏解决方案。通过解析Zotero的域代码,自动在文内引用和文末参考文献之间创建超链接,实现一键跳转,极大提升了学术写作与文献查阅的效率。

weixin_28419039的博客 673

华为服务器RAID配置避坑指南:如何通过iBMC快速识别阵列卡型号并完成初始化

本文详细解析华为服务器RAID配置全流程,重点介绍通过iBMC快速识别阵列卡型号、硬盘健康诊断及RAID级别选择的场景化策略。提供从iBMC登录到缓存策略调优的实战技巧,帮助工程师避免常见配置陷阱,提升服务器存储系统性能和稳定性。

weixin_28475533的博客 492

stm32H743使用定时器定时触发ADC进行多通道数据采集,DMA搬运,cubemx配置

可以看到噪声大约为0.0001V左右波动,即100uV,计算一下,此时STM32H7的REF为3.3V,ADC的位数为16位,则最小分辨率为3.3÷2^16≈50uV。噪声100uV正常,若在前级添加仪表放大器,放大倍数做到50倍,则噪声可以达到接近1uV,可以进行肌电心电采集。这里选择460800bps进行输出,因为采样率较高,且要打印数据较多,460800bps支持45kb/s的传输速度。7.最后,添加回调函数,在main函数的下方/* USER CODE BEGIN 4 */处添加。

txy13772812995的博客 1512

Windows 11 安装 Miniconda + Mamba,配置国内源

本文详细介绍了在 Windows 11 系统下安装 Miniconda 并配置 Mamba 的完整流程,包括选择精简版 Miniconda 的理由、安装过程中的关键选项设置、配置清华大学镜像源以加速包下载,以及在 base 环境中设置 pip 国内源。同时说明了 Mamba 相较 Conda 的性能优势,并指导用户完成 Mamba 安装与 Shell 集成,最终通过命令验证环境管理功能,帮助用户构建高效、轻量的 Python 开发环境。

寒水馨 · 轻量级技术文档 · hanshuixin.org 3347

stm32hal库配置PWM模式(H743)

我这里需要定时器15,由图可知道频率的240M,(这里我也不知道定时器15是APB1还是APB2,还好两个一样的频率)第三步:1.配置分频系数,2.配置自动重装载值(分辨率),3.确认电机所需要的转动频率。这里编码电机频率的取值一般为10K-20K,因为这样电机才不会发生异响!因为这里的pwm的给电机用的,所以这里需要两路PWM控制。第一步:确认所需要定时器的频率,第二步:选择这里三个选项,第六步:在代码中添加代码。第五步:开启NVIC。

weixin_75150601的博客 1326

[PCIE5.0] 2.2.8.3 Error Signaling Messages

错误信号消息用于在 PCI Express 设备之间传递错误信息,帮助系统发现并报告错误。每当发生某种错误时,检测到该错误的设备会通过发送这些消息来通知系统。• 没有数据负载:这些错误信号消息不包含任何数据(即 TLP Type 是 Msg),它们仅用于错误报告。• 长度字段保留:在这些消息中,长度字段是保留的,不使用。• 功能号(Function Number)字段:这个字段标识哪个设备发生了错误。

系统固件工程师 293

TensorRT的安装:一步一步教会你如何安装TensorRT

TensorRT(Tensor Runtime)是由NVIDIA开发的一个用于深度学习推理(inference)优化的库,它可以在NVIDIA的GPU上加速神经网络模型的推理过程,从而提高模型的性能和效率。安装完成后,需要将CUDA的安装路径添加到系统环境变量中,以便系统能够找到CUDA的库文件。根据你安装的CUDA版本,将CUDNN的库文件复制到CUDA的安装目录中。要使用TensorRT,首先需要安装NVIDIA的CUDA和cuDNN库,并根据NVIDIA官方文档安装TensorRT。

Science prince的博客 2373

stm32hal库配置编码器模式(H743)

这里我已经把串口配置好了,当我把线接好,旋转电机后,就可以看到串口显示的cnt的值(编码器采集的数值),如下图。那么我们就需要配置另一个定时器来进行中断采集cnt,因为TIM5配置为编码器模式后,就无法再作为其他用处。第六步:在主函数调用这两句代码就行了(可以通过配置串口,把cnt的值打印出来)上面这种方式只是一个在主函数采集这个编码器的值,在现实不会采用这种方式。下面是使用定时器中断来采集cnt的值(编码器的值)第一步:选择定时器5,然后选择模式(编码器模式)如果使用定时器中断,那么就需要使用这个函数,

weixin_75150601的博客 2181

DMDiff(2025):一种基于SAR光学数据融合的双分支多模态条件引导扩散模型-k学长深度学习专栏

DMDiff提出了一种基于扩散模型的多模态遥感图像去云方法,通过双分支网络分别提取SAR的结构信息和光学图像的光谱特征,再利用跨模态注意力机制实现特征融合。创新性地采用IAP策略直接预测无云图像而非噪声,有效解决了传统方法在遥感图像处理中易出现的光谱失真问题。实验表明该方法在PSNR等指标上显著优于现有技术,但存在计算量大、生成速度慢等不足。未来可结合加速采样策略和几何约束进一步优化。

424
上一篇: IIS部署遇到overrideModeDefault=‘Deny‘错误?5分钟搞定web.config锁定问题
下一篇: 彻底告别强制更新!Windows11禁用自动更新的3种终极方案(含组策略/注册表/服务停止)
linux6sysadmin
博客等级 码龄4年 59粉丝 1615原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符  | 博主筛选后可见
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值