stm32如何打开时钟GPIOB
时间: 2024-09-22 08:08:16 浏览: 37
在STM32微控制器上,GPIOB是一个通用输入输出(GPIO)端口,你需要开启它的时钟才能对其进行操作。以下是基本步骤:
1. **启动时钟树**: 首先,你需要启用系统时钟树,通常从HSE (高频外部振荡器) 或 HSI (内部高速振荡器) 开始。对于STM32F1系列,可以使用`RCC_OscInitTypeDef`结构初始化时钟源,并通过`RCC_OscInitStruct`配置好振荡器,然后调用`RCC_ClockConfig()`函数选择时钟源并设置系统时钟频率。
```c
RCC_OscInitTypeDef RCC_OscInitStruct;
RCC_ClkInitTypeDef RCC_ClkInitStruct;
// 初始化时钟源
RCC_OscInitStruct.OscillatorType = RCC_OSCILLATORTYPE_HSE; // 使用HSE
RCC_OscInitStruct.HSEState = RCC_HSE_ON; // 启动HSE
RCC_OscInitStruct.PLL.PLLState = RCC_PLL_ON; // 启用PLL
// ... 设置其他PLL参数,如分频系数
// 应用时钟配置
RCC_OscInitStruct.ClockType = RCC_CLOCKTYPE_SYSCLK | RCC_CLOCKTYPE_HCLK | RCC_CLOCKTYPE_PCLK1 | RCC_CLOCKTYPE_PCLK2;
RCC_ClkInitStruct.ClockType = RCC_CLOCKTYPE_AHB1ENR; // AHB1时钟,包括GPIOB时钟
RCC_ClkInitStruct.AHBCLKDivider = RCC_SYSCLK_DIV1; // 系统时钟分频
if (HAL_RCC_OscConfig(&RCC_OscInitStruct) != HAL_OK) {
// 处理错误
}
if (HAL_RCC_ClockConfig(&RCC_ClkInitStruct, FLASH_LATENCY_5) != HAL_OK) {
// 处理错误
}
```
2. **使能GPIOB时钟**: 接下来,你需要启用GPIOB所在的AHB1总线时钟。你可以使用`RCC_AHB1PeriphClockCmd()`函数来实现这个目标。
```c
// 使能GPIOB时钟
HAL_RCC_AHB1PeriphClockCmd(RCC_AHB1Periph_GPIOB, ENABLE); // 允许GPIOB时钟
```
完成上述步骤后,GPIOB就开启了,并准备好进行输入输出操作了。
阅读全文