/* Set HSION bit */ RCC->CR |= (uint32_t)0x00000001; /* Reset CFGR register */ RCC->CFGR = 0x00000000; /* Reset HSEON, CSSON and PLLON bits */ RCC->CR &= (uint32_t)0xFEF6FFFF; /* Reset PLLCFGR register */ RCC->PLLCFGR = 0x24003010; /* Reset HSEBYP bit */ RCC->CR &= (uint32_t)0xFFFBFFFF; /* Disable all interrupts */ RCC->CIR = 0x00000000;该程序中都是在设置什么的值?
时间: 2024-03-18 19:45:40 浏览: 16
该程序主要是在进行STM32系列微控制器的时钟初始化,具体设置的值和操作如下:
1. RCC->CR |= (uint32_t)0x00000001;:设置HSI(内部RC振荡器)作为系统时钟源,并使能HSI。
2. RCC->CFGR = 0x00000000;:将时钟配置寄存器CFGR清零,以便后续进行配置。
3. RCC->CR &= (uint32_t)0xFEF6FFFF;:关闭HSE(外部晶体振荡器)和PLL(锁相环)。
4. RCC->PLLCFGR = 0x24003010;:配置PLL锁相环的倍频系数和分频系数,以及PLL时钟源为HSE。
5. RCC->CR &= (uint32_t)0xFFFBFFFF;:关闭HSE的旁路模式(HSEBYP)。
6. RCC->CIR = 0x00000000;:关闭所有时钟中断。
通过这些设置,可以将STM32的时钟系统初始化为一个基于HSI的系统,以便后续进行其他外设的初始化和应用程序的开发。需要注意的是,具体的时钟配置参数和设置方法会因不同型号的STM32微控制器而有所不同,需要根据具体情况进行调整。
相关问题
cortex_M3处理器初始化使能代码
以下是 Cortex-M3 处理器初始化使能代码的示例:
```c
#include "stm32f10x.h"
void SystemInit(void)
{
/* Reset the RCC clock configuration to the default reset state */
/* Set HSION bit */
RCC->CR |= (uint32_t)0x00000001;
/* Reset SW, HPRE, PPRE1, PPRE2, ADCPRE and MCO bits */
RCC->CFGR &= (uint32_t)0xF8FF0000;
/* Reset HSEON, CSSON and PLLON bits */
RCC->CR &= (uint32_t)0xFEF6FFFF;
/* Reset HSEBYP bit */
RCC->CR &= (uint32_t)0xFFFBFFFF;
/* Reset PLLSRC, PLLXTPRE, PLLMUL and USBPRE/OTGFSPRE bits */
RCC->CFGR &= (uint32_t)0xFF80FFFF;
/* Disable all interrupts and clear pending flags */
RCC->CIR = 0x009F0000;
/* Configure the System clock frequency, HCLK, PCLK2 and PCLK1 prescalers */
/* PLL configuration */
/* PLLCLK = HSE * PLLMUL */
/* SYSCLK = PLLCLK / HCLK_DIV */
RCC->CFGR |= (uint32_t)0x001D0400;
RCC->CFGR2 &= (uint32_t)0xFFFFFFF8;
RCC->CFGR2 |= (uint32_t)0x00000002;
/* Enable HSE */
RCC->CR |= RCC_CR_HSEON;
/* Wait till HSE is ready */
while ((RCC->CR & RCC_CR_HSERDY) == 0);
/* Enable PLL */
RCC->CR |= RCC_CR_PLLON;
/* Wait till PLL is ready */
while ((RCC->CR & RCC_CR_PLLRDY) == 0);
/* Select PLL as system clock source */
RCC->CFGR &= (uint32_t)((uint32_t)~(RCC_CFGR_SW));
RCC->CFGR |= (uint32_t)RCC_CFGR_SW_PLL;
/* Wait till PLL is used as system clock source */
while ((RCC->CFGR & (uint32_t)RCC_CFGR_SWS) != (uint32_t)0x08);
}
```
这段代码是针对STM32F10x系列微控制器的,其中包含了时钟配置、PLL配置、中断配置等初始化操作。可以根据需要进行修改和适配。
stm32 F1配置系统时钟
你好!对于STM32F1系列微控制器,配置系统时钟可以按照以下步骤进行:
1. 首先,需要打开RCC(Reset and Clock Control)模块的时钟使能。
```c
RCC->CR |= RCC_CR_HSEON; // 打开外部高速时钟(如果使用外部晶体)
RCC->CR |= RCC_CR_HSION; // 打开内部高速时钟
```
2. 等待时钟稳定。根据需要选择使用外部晶体还是内部高速时钟,等待时钟稳定的时间不同。例如,如果使用外部晶体,则等待HSE稳定:
```c
while (!(RCC->CR & RCC_CR_HSERDY)); // 等待HSE稳定
```
3. 配置时钟分频器。根据需要配置系统时钟频率和总线时钟频率。
```c
// 选择系统时钟源和分频系数
RCC->CFGR |= RCC_CFGR_SW_0; // 使用SYSCLK = HSI
RCC->CFGR |= RCC_CFGR_HPRE_DIV1; // AHB时钟不分频
RCC->CFGR |= RCC_CFGR_PPRE1_DIV2; // APB1时钟分频为2(可根据需要调整)
RCC->CFGR |= RCC_CFGR_PPRE2_DIV1; // APB2时钟不分频
// 更新时钟设置
RCC->CR |= RCC_CR_PLLON; // 打开PLL(可选,如果需要使用PLL时钟源)
while (!(RCC->CR & RCC_CR_PLLRDY)); // 等待PLL稳定
// 选择PLL作为系统时钟源
RCC->CFGR &= ~RCC_CFGR_SW;
RCC->CFGR |= RCC_CFGR_SW_PLL;
```
4. 等待系统时钟稳定。
```c
while ((RCC->CFGR & RCC_CFGR_SWS) != RCC_CFGR_SWS_PLL); // 等待PLL作为系统时钟源
```
这些是配置STM32F1系列微控制器系统时钟的基本步骤。你可以根据具体的需求进行修改和扩展。希望能对你有所帮助!如果还有其他问题,请随时提问。