当前位置:首页 > 科技动态 > 正文

hsi时钟如何 分频使用

hsi时钟如何 分频使用

HSI(High Speed Internal)时钟是STM32系列微控制器中的一种内部高速时钟源。分频(Frequency Division)是时钟信号处理中常用的技...

HSI(High Speed Internal)时钟是STM32系列微控制器中的一种内部高速时钟源。分频(Frequency Division)是时钟信号处理中常用的技术,用于降低时钟频率以满足特定应用的需求。以下是如何在STM32中使用HSI时钟进行分频的步骤:

1. 配置HSI时钟源:

需要启用HSI时钟源。这通常通过配置RCC(Reset and Clock Control)寄存器来实现。

使用`RCC->CR`寄存器的`HSIEN`位来启用HSI时钟源。

```c

RCC->CR = RCC_CR_HSION; // 启用HSI

while (!(RCC->CR & RCC_CR_HSIRDY)); // 等待HSI稳定

```

2. 设置分频值:

STM32的HSI时钟可以配置为不同的分频值。分频值由`RCC->CFGR`寄存器中的`HSIDIV`字段控制。

分频值的选择取决于所需的时钟频率。例如,如果需要HSI输出1MHz,可以将HSIDIV设置为128(因为HSI默认为8MHz,8MHz / 128 = 1MHz)。

```c

RCC->CFGR = RCC_CFGR_HSIDIV; // 设置HSI分频值

```

3. 配置系统时钟:

使用`RCC->CFGR`寄存器中的`SW`位来选择系统时钟源。可以将SW位设置为0以选择HSI作为系统时钟源。

```c

RCC->CFGR = RCC_CFGR_SW_HSI; // 设置系统时钟为HSI

while ((RCC->CFGR & RCC_CFGR_SWS) != RCC_CFGR_SWS_HSI); // 等待系统时钟切换到HSI

```

4. 配置分频后的时钟用于其他用途:

如果需要将分频后的HSI时钟用于其他用途,如定时器或ADC,可以使用`RCC->APBxENR`寄存器来启用相关时钟。

例如,如果要启用定时器1的时钟,可以使用以下代码:

```c

RCC->APB2ENR = RCC_APB2ENR_TIM1EN; // 启用定时器1时钟

```

然后,根据需要配置定时器的分频值和预分频值。

```c

TIM1->PSC = 7999; // 设置预分频值

TIM1->ARR = 9999; // 设置自动重装载值

```

启动定时器。

```c

TIM1->CR1 = TIM_CR1_CEN; // 启动定时器1

```

通过以上步骤,你可以在STM32中配置HSI时钟进行分频,并将其用于各种应用。注意,具体的寄存器位和操作可能因STM32系列的不同型号而有所不同,请参考相应的参考手册。

最新文章