深入解析STM32时钟系统:AHB、APB1与APB2总线架构与应用实践

STM32F429 的时钟系统,从AHB到APB1和APB2再到外设 系统时钟(180MHz)├─ AHB 总线(168MHz,HCLK)│ ├─ APB2 总线(90MHz,PCLK2)→ 高速外设(TIM1、GPIO、ADC)│ └─ APB1 总线(45MHz,PCLK1)→ 低速外设(TIM2、UART、I2C)└─ 其他时钟(如 USB、SDIO 专用时钟) 阅读详情

1. STM32时钟系统架构概览

大家好,我是STM32的老玩家了,从最早的STM32F1系列用到现在的H7系列,踩过不少时钟配置的坑。今天我想和大家聊聊STM32的时钟系统,特别是AHB、APB1和APB2这三条总线。很多人刚开始接触STM32时,最头疼的就是时钟配置,为什么这个外设要挂在APB2,那个又要挂在APB1?不搞清楚这些,写程序时就容易遇到各种奇怪的问题。

STM32的时钟系统就像一座城市的路网,不同的道路有不同的限速和通行规则。AHB相当于城市的高速公路,连接着最重要的核心区域;APB2像是城市主干道,速度较快但比高速公路慢一些;而APB1就像是普通街道,速度最慢但连接着各种日常生活设施。理解这个路网结构,你就能更好地规划数据的"交通路线",让系统运行得更高效。

在实际项目中,我经常看到有人因为时钟配置不当导致外设无法工作。比如有一次我调试一个项目,USART2怎么都收不到数据,最后发现是APB1的时钟没有使能。这种问题看似简单,但排查起来特别耗时。所以今天我就带大家彻底搞懂STM32的时钟系统,让你以后少走弯路。

2. AHB总线:系统的高速主干道

2.1 AHB总线的设计原理

AHB(Advanced High-performance Bus)是STM32中性能最高的总线,相当于整个系统的高速主干道。它直接连接着Cortex-M内核、DMA控制器、内存控制器等关键部件,负责在这些高性能模块之间快速传输数据。

AHB总线的工作频率通常是系统最高频率,在STM32F103系列中可以达到72MHz。这么高的速度是为了确保CPU能够快速访问内存和外设,不会因为总线速度跟不上而成为性能瓶颈。我记得有一次做音频处理项目,需要大量数据传输,就是通过优化AHB总线的使用,让DMA直接搬运数据,大大减轻了CPU的负担。

AHB总线采用流水线操作,支持突发传输和分块传输,这些特性让它特别适合处理大量数据。在实际使用中,我们不需要直接配置AHB总线,但理解它的工作原理很重要,因为其他总线都是通过AHB桥接器连接到AHB总线上。

2.2 AHB总线的实际应用

虽然我们不直接操作AHB总线,但它的配置会影响整个系统的性能。比如在STM32CubeMX中配置时钟树时,AHB分频器的设置就很重要。如果设置不当,可能会导致系统性能下降或者功耗过高。

我常用的配置方法是先确定系统时钟频率,然后根据外设需求设置AHB分频器。比如需要72MHz系统时钟时,AHB分频器通常设置为1,这样AHB总线也运行在72MHz。如果需要降低功耗,可以适当增加AHB分频比,但要注意这会影响所有连接到AHB总线的外设性能。

// 在SystemClock_Config函数中通常可以看到AHB分频配置
RCC_ClkInitStruct.ClockType = RCC_CLOCKTYPE_HCLK;
RCC_ClkInitStruct.HCLKDivider = RCC_SYSCLK_DIV1; // AHB不分频

这个配置意味着AHB总线频率与系统时钟相同。在实际项目中,我建议根据具体需求调整分频比,平衡性能和功耗。

3. APB2总线:高速外设的连接枢纽

3.1 APB2总线的特性与连接外设

APB2(Advanced Peripheral Bus 2)是STM32中速度较快的外设总线,在STM32F103系列中最高可以运行在72MHz。它连接着一些对速度要求较高的外设,比如GPIO、ADC、高级定时器等。

为什么这些外设要挂在APB2上呢?以GPIO为例,当我们需要快速切换IO口状态时,如果总线速度太慢,就会限制切换频率。我做过一个LED矩阵显示项目,需要高速刷新,就是利用了APB2的高速特性,实现了很好的显示效果。

APB2总线上挂载的常见外设包括:

  • GPIOA-GPIOG:所有IO端口
  • ADC1和ADC2:模数转换器
  • TIM1、TIM8等高级定时器
  • USART1:第一个串口
  • SPI1:第一个SPI接口

这些外设共同的特点是需要较高的数据传输速率。比如ADC在高速采样时,需要快速将采样数据传送到内存;高级定时器在产生PWM波形时,也需要高速访问寄存器。

3.2 APB2时钟使能实战

使能APB2时钟是STM32编程中的常见操作。记得我刚学STM32时,经常忘记使能外设时钟,然后奇怪为什么外设不工作。后来养成了习惯,使用外设前先检查时钟使能。

// 使能GPIOB和GPIOE的时钟
RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOB | RCC_APB2Periph_GPIOE, ENABLE);

// 配置GPIO参数
GPIO_InitTypeDef GPIO_InitStruct;
GPIO_InitStruct.GPIO_Pin = GPIO_Pin_5;
GPIO_InitStruct.GPIO_Mode = GPIO_Mode_Out_PP;
GPIO_InitStruct.GPIO_Speed = GPIO_Speed_50MHz;
GPIO_Init(GPIOB, &GPIO_InitStruct);

这段代码中,RCC_APB2PeriphClockCmd函数用于使能APB2总线上的外设时钟。第二个参数可以是多个外设的组合,用按位或操作符连接。使能时钟后,我们还需要配置GPIO的工作模式和工作速度。

GPIO_Speed_50MHz这个参数特别重要,它决定了IO口的最大翻转速度。在实际项目中,我一般根据需求选择合适的速度等级,不是越快越好,因为更高的速度意味着更大的功耗和噪声。

4. APB1总线:低速外设的经济选择

4.1 APB1总线的设计考虑

APB1总线是STM32中的低速外设总线,在STM32F103系列中最高运行频率为36MHz。它连接着那些对速度要求不高的外设,比如基本定时器、I2C、SPI、USART等。

为什么要有APB1这样的低速总线呢?主要是为了降低功耗。在嵌入式系统中,功耗是个重要考量因素。不是所有外设都需要72MHz的高速时钟,对于那些速度要求不高的外设,使用低速总线可以显著降低系统功耗。

我记得在一个电池供电的项目中,就充分利用了APB1的这个特性。大部分时间让APB2总线降频运行,只有需要时才全速运行,大大延长了电池续航时间。

APB1总线上挂载的典型外设包括:

  • TIM2-TIM7:基本定时器
  • USART2-USART5:附加串口
  • I2C1和I2C2:I2C接口
  • SPI2和SPI3:附加SPI接口
  • USB设备接口

这些外设的共同特点是通常不需要很高的数据传输速率。比如I2C标准模式只有100kbps,即使高速模式也就400kbps,远远达不到36MHz的总线速度。

4.2 APB1时钟配置技巧

配置APB1时钟时需要注意最大频率限制。在STM32F103系列中,APB1最大频率是36MHz,如果超频使用可能会导致外设工作不稳定。

// 使能USART2时钟(挂在APB1上)
RCC_APB1PeriphClockCmd(RCC_APB1Periph_USART2, ENABLE);

// 配置USART参数
USART_InitTypeDef USART_InitStruct;
USART_InitStruct.USART_BaudRate = 115200;
USART_InitStruct.USART_WordLength = USART_WordLength_8b;
USART_InitStruct.USART_StopBits = USART_StopBits_1;
USART_InitStruct.USART_Parity = USART_Parity_No;
USART_InitStruct.USART_Mode = USART_Mode_Rx | USART_Mode_Tx;
USART_Init(USART2, &USART_InitStruct);

在这个例子中,USART2挂在APB1总线上,所以使用RCC_APB1PeriphClockCmd来使能时钟。设置波特率时要注意,APB1的时钟频率会影响可用波特率的范围。

在实际项目中,我经常遇到APB1时钟配置的问题。比如有一次调试I2C通信,发现数据经常出错,最后发现是APB1时钟频率设置过高。将频率降到合适值后问题就解决了。

5. 三大总线的协同工作与性能优化

5.1 总线架构的整体协同

AHB、APB1和APB2三条总线不是孤立工作的,它们通过总线桥接器相互连接,形成一个完整的系统。APB1和APB2都通过AHB-APB桥接器连接到AHB总线上,这种架构既保证了高性能外设的访问速度,又兼顾了低速外设的功耗优化。

在实际系统中,数据流通常是这样进行的:CPU通过AHB总线访问内存或DMA控制器,如果需要访问APB外设,会通过桥接器转换到相应的APB总线。这个转换过程对程序员是透明的,但我们理解这个过程有助于优化程序性能。

我优化过一个数据采集系统,通过合理分配外设到不同的总线,并配置DMA直接在AHB总线上传输数据,使系统性能提升了30%。关键是要理解每条总线的特性,让合适的外设挂在合适的bus上。

5.2 时钟配置的最佳实践

根据我的经验,时钟配置要遵循几个原则:首先满足性能需求,然后尽量降低功耗,最后考虑配置的简洁性。在STM32CubeMX中配置时钟树时,我通常先确定系统时钟源和频率,然后设置AHB分频器,最后配置APB1和APB2的分频器。

APB2的分频比通常设置为1,让它以最高速度运行,因为上面挂载的都是需要高速访问的外设。APB1的分频比可以根据实际需要设置,如果上面的外设都不需要很高速度,可以适当增加分频比来降低功耗。

// 典型的时钟配置示例
RCC_ClkInitStruct.ClockType = RCC_CLOCKTYPE_HCLK|RCC_CLOCKTYPE_SYSCLK
                            |RCC_CLOCKTYPE_PCLK1|RCC_CLOCKTYPE_PCLK2;
RCC_ClkInitStruct.SYSCLKSource = RCC_SYSCLKSOURCE_PLLCLK;
RCC_ClkInitStruct.AHBCLKDivider = RCC_SYSCLK_DIV1;    // AHB = 72MHz
RCC_ClkInitStruct.APB1CLKDivider = RCC_HCLK_DIV2;     // APB1 = 36MHz  
RCC_ClkInitStruct.APB2CLKDivider = RCC_HCLK_DIV1;     // APB2 = 72MHz

这个配置中,APB1设置为AHB的一半频率,即36MHz,这是STM32F103系列中APB1允许的最高频率。APB2与AHB同频,运行在72MHz。

6. 常见问题排查与实战技巧

6.1 时钟相关问题的调试方法

在实际项目中,时钟配置问题很常见。我总结了一些排查时钟问题的经验:首先检查外设时钟是否使能,这是最常见的问题;然后检查时钟频率是否正确,特别是APB1不能超过36MHz;最后检查时钟源是否稳定,特别是使用外部晶振时。

使用STM32CubeMX生成的代码时,要注意检查SystemClock_Config函数中的配置是否符合预期。我习惯在系统启动后读取相关寄存器值,确认时钟配置是否正确。

// 检查系统时钟频率
uint32_t sysclk = SystemCoreClock;
printf("System clock: %lu Hz\r\n", sysclk);

// 检查APB1和APB2频率
uint32_t pclk1 = HAL_RCC_GetPCLK1Freq();
uint32_t pclk2 = HAL_RCC_GetPCLK2Freq();
printf("APB1 clock: %lu Hz, APB2 clock: %lu Hz\r\n", pclk1, pclk2);

这段代码可以帮助确认实际运行的时钟频率。如果发现频率不符合预期,就要检查时钟树配置了。

6.2 外设时钟使能的注意事项

使能外设时钟时要注意时序问题。我建议在外设初始化前使能时钟,而不是在系统初始化时一次性使能所有时钟。这样可以更好地控制功耗,只在需要时才使能相应时钟。

对于低功耗应用,还要注意及时禁用不再使用的外设时钟。我做过一个物联网设备,通过精细控制外设时钟的使能和禁用,使待机功耗降低了40%。

// 使用外设前使能时钟
RCC_APB2PeriphClockCmd(RCC_APB2Periph_ADC1, ENABLE);

// 配置和使用ADC
ADC_InitTypeDef ADC_InitStruct;
// ... ADC配置代码

// 使用完成后禁用时钟以节省功耗
RCC_APB2PeriphClockCmd(RCC_APB2Periph_ADC1, DISABLE);

这种用法在电池供电的设备中特别有用。但要注意,禁用时钟后外设寄存器的值可能会丢失,再次使能时需要重新初始化。

7. 实际项目中的应用案例

7.1 多外设系统中的时钟配置

在一个复杂的项目中,通常需要同时使用多个外设,这时时钟配置就显得尤为重要。我最近做的一个工业控制器项目,需要同时使用USART、SPI、I2C、ADC和多个定时器。

首先分析每个外设的速度要求:USART用于调试输出,115200波特率就够了;SPI用于连接显示屏,需要较高速度;I2C用于传感器,标准速度即可;ADC需要高速采样;定时器用于产生PWM控制电机。

根据这些需求,我将SPI和ADC挂在APB2上,运行在72MHz;USART和I2C挂在APB1上,运行在36MHz。这样既满足了性能需求,又尽量降低了功耗。

7.2 动态时钟调整策略

在一些应用中,需要根据运行状态动态调整时钟频率。比如设备在正常工作状态下需要全速运行,在待机状态下可以降低时钟频率以节省功耗。

我实现过一个动态时钟调整的方案:当检测到用户长时间无操作时,逐步降低系统时钟频率和总线频率;当检测到用户操作时,立即恢复到全速状态。

// 降低系统功耗的时钟配置
void Enter_LowPower_Mode(void)
{
    // 降低系统时钟频率
    RCC_ClkInitTypeDef RCC_ClkInitStruct;
    RCC_ClkInitStruct.ClockType = RCC_CLOCKTYPE_HCLK|RCC_CLOCKTYPE_SYSCLK
                                |RCC_CLOCKTYPE_PCLK1|RCC_CLOCKTYPE_PCLK2;
    RCC_ClkInitStruct.SYSCLKSource = RCC_SYSCLKSOURCE_HSI;
    RCC_ClkInitStruct.AHBCLKDivider = RCC_SYSCLK_DIV4;    // AHB = 16MHz
    RCC_ClkInitStruct.APB1CLKDivider = RCC_HCLK_DIV2;     // APB1 = 8MHz
    RCC_ClkInitStruct.APB2CLKDivider = RCC_HCLK_DIV2;     // APB2 = 8MHz
    HAL_RCC_ClockConfig(&RCC_ClkInitStruct, FLASH_LATENCY_1);
    
    // 禁用不必要的外设时钟
    RCC_APB2PeriphClockCmd(RCC_APB2Periph_ADC1, DISABLE);
    // ... 禁用其他外设时钟
}

这种动态调整的策略在电池供电的设备中特别有效,可以显著延长电池使用时间。

理解STM32的时钟系统需要时间和实践,建议多动手实验,观察不同配置下的系统行为。遇到问题时,学会使用调试工具查看寄存器状态,这是最好的学习方式。

STM32的总线AMBA、AHB、APB 一、总线的简单介绍:     处理器无疑是计算机中最重要的部件,但并不是唯一的部件。一台计算机也需要随机访问存储器(RAM)来存放机器码指令以便让处理器执行。计算机还必须有一些方法使这些指令进入RAM(输入设备)以及一些方法使程序执行结果得以看见(输出设备)。RAM是易失性的,当断电时,它的内容就会丢失。所以计算机中另一个有用的部件是永久存储设备,当计算机断电的时候,它们可以保存代码和数据。 阅读详情

相关推荐

STM32F767时钟树分析

文章目录1、STM32F7 的时钟系统图2、STM32F7 时钟源3、STM32F7 系统时钟4、STM32F7 常用时钟 众所周知,时钟系统是CPU的脉搏,就像人的心跳一样。所以时钟系统对于单片机来讲是一个非常重要的东西。STM32F7的时钟系统比较复杂,有多个时钟源,为什么STM32要有多个时钟源呢?因为首先STM32本身非常复杂,外设非常的多,但是并不是所有外设都需要系统时钟这么高的频率,比...

shouwangyunkai666的博客 4058

STM32单片机中AHB、APB1和APB2的区分

AHB、APB总线的区别以及两者和计算机总线的区别

qq_62689333的博客 9525

STM32F429时钟系统配置实战:从AHB到APB1/APB2的完整分频指南

本文详细解析了STM32F429时钟系统的配置方法,从AHB到APB1/APB2的完整分频指南。通过实战代码示例和架构解析,帮助开发者掌握时钟源选择、PLL配置以及总线分频技巧,确保系统稳定性和性能优化。特别适合嵌入式开发者和STM32F429使用者参考。

weixin_30825581的博客 516

stm32中的AHB、APB1、APB2分别属于计算机三大总线数据总线、地址总线和控制总线中的哪一种?

最近在看计算机体系结构和stm32,对于AHB、APB1、APB2总线找不到在计算机体系结构中的属于,于是深入探究了AHB、APB1、APB2和计算机三大总线数据总线、地址总线和控制总线的关系。总体来说,在STM32微控制器中,AHB、APB1和APB2属于处理器总线中的一种,而不是计算机三大总线中的数据总线、地址总线和控制总线。

qq_62761504的博客 7808

STM32时钟配置函数详解

STM32时钟配置函数详解 一:STM32F1时钟树图 上图从左往右看,就是整个 STM32 的时钟走向。这里,我们挑选出 4 个重要的地方进行 介绍(图 5.2.2.1 中标出的 1~4)。 1、 PLL PLL 用于设置 STM32 的 PLLCLK,STM32 支持 2~16 倍频设置。我们常用的是 8M 外部晶振+9 倍频设置,刚好得到 72Mhz 的 PLLCLK。从上图可以看出,PLLMUL 的时钟源,可以来自内部(HSI) 8M RC 振荡/2 或者外部(HSE)高速晶振(4~16Mhz)。

w1050321758的博客 6451

STM32:STM32时钟系统:STM32的AHB总线时钟配置

在STM32的时钟系统中,AHB总线时钟的配置包括选择时钟源、设置预分频以及使能或禁用外设时钟。这些操作可以通过直接操作RCC时钟控制寄存器来完成,提供了一个灵活且高效的方式来管理微控制器的时钟资源,以满足不同应用的需求。请注意,上述代码示例基于STM32的旧版本库(如STM32 Standard Peripherals Library),在使用STM32 HAL库或CMSIS库时,函数和寄存器的访问方式可能会有所不同。在实际应用中,应参考STM32的数据手册和所使用的库文档来正确配置时钟系统。

kkchenjj的博客 1625

STM32 -- APB1 & APB2

STM32 -- APB1 & APB2。外设,时钟,初始化,APB1,APB2

weixin_50212044的博客 1930

Mac电脑用Latex论文排版3天速成5天实战de笔记

我后悔了,这五天竞赛搞得我视力都下降了...一个冲动的决定后成为数模竞赛论文写手,3天速成+5天时间=点亮攻克latex写论文技能💡关于Overleaf我是Mac,曾经按照大部分推荐的方式用TEXshop+vs code,但是把模板导入就开始报错。跟着少之又少的适配mac的教程(此时我已知道大概是走错路了)改了配置也无效。海鲜市场找佬改了半天,佬问我:一定要用VC吗?我说,那倒也不是。于是佬推荐我overleaf,三下五除二帮我挑配了环境,美汁汁收了我30块钱。

luwanjoyce的博客 2252

STM32时钟理解

文章转载自:http://blog.sina.com.cn/s/blog_6ebd49350100q6xw.html 一、硬件上的连接问题 如果使用内部RC振荡器而不使用外部晶振,请按照如下方法处理: 1)对于100脚或144脚的产品,OSC_IN应接地,OSC_OUT应悬空。 2)对于少于100脚的产品,有2种接法:    i)OSC_IN和OSC_OUT分

xiang90721的专栏 1613

Ubuntu离线情况下安装gcc编译器

Ubuntu离线情况下安装gcc编译器1.系统版本2.安装说明3.异常处理 1.系统版本 (1)Ubuntu系统版本:20.04.1LTS; (2)gcc编译器版本:gcc-9.3.0(下载链接为https://download.youkuaiyun.com/download/qq_18350351/13762214); 当前可找到的gcc最新版本为gcc-10,但是笔者在安装gcc-10版本时发现一些依赖项无法安装,因此选取了gcc-9版本。如果是在联网情况下安装,直接使用apt相关的安装指令即可。 2.安装说明 安

GreenHand的博客 3935

【TiktokAPI】Tiktok直播API与实时互动功能开发完全指南

Tiktok直播API允许开发者创建、管理直播,并实现各种互动功能。/*** 获取Tiktok直播API访问令牌* @param {string} client_id - 应用ID* @param {string} client_secret - 应用密钥* @param {string} code - 授权码* @param {string} redirect_uri - 重定向URI* @returns {Promise<object>} 访问令牌响应*/try {}),

Mageia的专栏 3206

stm32外设简介

stm32外设简介

王老汉的博客 2058

CATIA CAA开发环境搭建避坑指南:从授权服务到VS配置全流程

本文提供了一份详尽的CATIA CAA开发环境搭建避坑指南,涵盖从授权服务(DSLS)安装、Visual Studio版本匹配与集成配置,到编译调试全流程。重点解析了授权服务无法连接、模块加载失败等典型问题的解决方案,强调版本严格对应与纯英文环境是成功搭建的关键。

redis7keeper的博客 574

【STM32】STM32F4时钟系统

00. 目录 文章目录00. 目录01. STM32F4时钟系统概述02. STM32F4时钟系统图03. STM32F4时钟初始化配置04. 时钟配置总结05. 预留06. 附录07. 声明 01. STM32F4时钟系统概述 时钟系统是 CPU 的脉搏,就像人的心跳一样。所以时钟系统的重要性就不言而喻了。 STM32F4 的时钟系统比较复杂,不像简单的 51 单片机一个系统时钟就可以解决一切。于是有人要问,采用一个系统时钟不是很简单吗?为什么 STM32 要有多个时钟源呢? 因为首先 STM32 本身非

C/C++软件工程师、嵌入式软件工程师、物联网研发工程师、C/C++讲师、物联网讲师、嵌入式讲师、鸿蒙讲师---欢迎大家一起交流(私信添加博主微信) 6547

【Bug已解决】codex: debug 模式无输出 — CodeX CLI 调试模式不工作解决方案

CodeX CLI 开启 debug 模式后无输出/日志不打印的解决方案,含 debug 开关、日志级别、stderr 重定向与 IDE 日志面板。

一键难忘的博客 4165

GameFramework框架详解之 Network网络框架

NetworkManager只负责维护NetworkChannel,实际的有种我们简历网络连接的也是NetworkChannel作为一个网路频道,这样管理起来比较方便,比如:一个游戏可能有多个网络连接,那么我们建立多个网络频道即可,或者当我们一个网络频道断线后,我们可以直接再新建一个,防止数据混乱。/// /// 网络管理器。/// /// 网络频道。/// 用户自定义网络错误事件。/// 检查是否存在网络频道。/// 获取网络频道。/// 获取所有网络频道。

TxNet 3368

STM32-时钟系统实战:AHB/APB配置详解

摘要:本文详细解析STM32 RCC时钟系统中AHB/APB时钟的设置方法,涵盖时钟树原理(HSI/HSE/PLL三级架构)、寄存器配置流程(RCC_CR/CFGR等关键寄存器操作),并以STM32F4配置168MHz系统时钟为例,演示HSE+PLL模式下AHB/APB分频设置(HCLK=168MHz、PCLK1=42MHz、PCLK2=84MHz)。通过TIM2定时器驱动LED的实战案例,说明外设时钟使能与分频配置的关键要点,并给出动态切换HSI/HSE时钟源的高级应用方案,最后总结未使能外设时钟、分频系

2401_85638163的博客 2722

华为校招实习机试&华为社招机试20240619-2.排列组合的回文字符串[200分]( Java | Python3 | C++ | C语言 | JsNode | Go)实现100%通过率

如果一个字符串和它反转后的字符串相同,我们称这个字符串为回文字符串,如"aba"是一个回文字符串,"abb"不是一个回文字符串(长度为1的字符串也是回文字符串)。现给定一个字符串,其长度范围为:[1,1000),返回其通过重新排列组合后所有可能的回文字符串的个数(需要去除重复的组合)。返回其通过重新排列组合后所有可能的回文字符串的个数,去除重复的组合后的回文字符串是"abba","baab",因此返回2。解释:排列组合后的回文字符串是"abba" , "baab",因此结果为2。

算法算法算法!!! 831

STM32—— AHB、APB详解

一、概括 首先,说点不靠谱的,APB和AHB总线,我个人感觉这个类似于个人PC系统里的北桥和南桥总线。 南桥总线上挂接的都是鼠标、键盘这些慢速的设备,北桥上挂接显卡等高速设备。南桥频率低,北桥频率高。另外,南桥最后也要接到北桥上。 这些感觉都类似于APB和AHB。 AHB,是Advanced High performance Bus的缩写,译作高级高性能总线,这是一种“系统总线”。 AHB主要用于高性能模块(如CPU、DMA和DSP等)之间的连接。AHB 系统由主模块、从模块和基础结构(Infrastruc

Mike__Lin的博客 4802

jsqlparser 版本不兼容:net.sf.jsqlparser.statement.select.SelectItem 以及 select.SelectBody 解决方法

看Bug直接定位到最后面的错误提示,一开始以为是UnabletostartembeddedTomcat的基本错误,后续发现排查方向错误!问题比较复杂,不过这类问题可看:出现WebServerException:UnabletostartembeddedTomcat解决方法(全)

码农研究僧的博客 2673

SIMATIC S7-1200, S7-1500 PID 控制[手册]

SIMATIC S7-1200, S7-1500 PID 控制[手册]

【STM32】时钟系统RCC

目录 一、时钟树 1、时钟源 2、高速外部时钟信号(HSE) 3、低速外部时钟信号(LSE) 4、系统时钟(SYSCLK) 5、时钟输出(MCO) 6、AHB 参考文献 一、时钟树 本文以STM32F103为例,将本人所知的关于STM32的时钟系统的知识点展示出来。 先贴上STM32F1系列的时钟树 1、时钟源 由时钟树可以,对于STM32来说,时钟源一共有四个,分别为LSI、LSE、HSE、HSI。另外一种说法为五个,加上PLL。个人认为,根据上面这个时钟树也可以看...

Xiaomo 4926

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

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

【STM32】STM32的时钟系统

对STM32时钟系统的构成以及STM官方提供的时钟系统初始化函数进行了详细分析。

weixin_63726869的博客 5605

android 蓝牙通讯demo

android 下蓝牙通讯demo,实现了发现蓝牙,使能蓝牙,通过蓝牙发送消息。

数学建模模型总结

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

AHB与APB分析

一、概括首先,说点不靠谱的,APB和AHB总线,我个人感觉这个类似于个人PC系统里的北桥和南桥总线。 南桥总线上挂接的都是鼠标、键盘这些慢速的设备,北桥上挂接显卡等高速设备。南桥频率低,北桥频率高。另外,南桥最后也要接到北桥上。 这些感觉都类似于APB和AHB。 AHB,是Advanced High performance Bus的缩写,译作高级高性能总线,这是一种“系统总线”。 AHB主要用于...

XMJYever的博客 1万+

STM32——理解时钟系统

前言 时钟系统是MCU必不可少的一部分,本文将针对以下问题进行讨论: 什么是时钟? 如何理解STM32时钟结构? 为什么MCU会有多个时钟源? STM32如何配置时钟 ? 目录 一、时钟简介 二、STM32时钟树 2.1、STM32F10X时钟源 2.2、系统时钟 三、关于时钟的一些思考 3.1、 时钟频率 3.2、多个时钟源 四、时钟配置分析 1、开始HSE时钟 2、等待HSE就绪(因为时钟起振等原因一定要有一部分时间缓冲稳定) 3、HSE状态正常就继续,异常就立即处理

qq_43460068的博客 1万+

STM32时钟树分析

STM32总线 STM32F1时钟系统 STM32F4时钟系统 1 STM32总线 首先,说点不靠谱的,APB和AHB总线,我个人感觉这个类似于个人PC系统里的北桥和南桥总线。 南桥总线上挂接的都是鼠标、键盘这些慢速的设备,北桥上挂接显卡等高速设备。南桥频率低,北桥频率高。另外,南桥最后也要接到北桥上。 这些感觉都类似于APB和AHB。 AHB,是Advanced High pe...

戈扬的博客 5351

AHB与APB

声明:本篇为转载,侵删 一、概括首先,说点不靠谱的,APB和AHB总线,我个人感觉这个类似于个人PC系统里的北桥和南桥总线。 南桥总线上挂接的都是鼠标、键盘这些慢速的设备,北桥上挂接显卡等高速设备。南桥频率低,北桥频率高。另外,南桥最后也要接到北桥上。 这些感觉都类似于APB和AHB。 AHB,是Advanced High performance Bus的缩写,译作高级高性能总线,这是一种“系...

In ShangHai | 分析技术的点点滴滴。 2万+
上一篇: Web Bluetooth 的隐秘角落:从 GATT 协议到无服务器通信的架构革命
下一篇: 从零到一:永磁同步电机FOC调试中的硬件陷阱与避坑指南
随身带U盘
博客等级 码龄4年 30粉丝 1526原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符  | 博主筛选后可见
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值