详细介绍一下这串STM32的代码
时间: 2023-11-12 18:06:44 浏览: 33
这段代码主要是用来初始化STM32的时钟和GPIO外设的。具体的流程如下:
1. 引用头文件 "Sys_RCC.h" 和 "stm32f10x.h"。
2. RCC_DeInit()函数将外设RCC寄存器重设为缺省值。
3. RCC_HSICmd(ENABLE)函数使能HSI(高速内部时钟)。
4. while循环等待HSI就绪,即等待RCC_FLAG_HSIRDY标志位被设置。
5. RCC_HCLKConfig(RCC_SYSCLK_Div1)函数设置AHB时钟(HCLK)的分频系数为1,即AHB时钟等于系统时钟。
6. RCC_PCLK2Config(RCC_HCLK_Div1)函数设置高速AHB时钟(PCLK2)的分频系数为1,即APB2时钟等于HCLK。
7. RCC_PCLK1Config(RCC_HCLK_Div2)函数设置低速AHB时钟(PCLK1)的分频系数为2,即APB1时钟等于HCLK/2。
8. FLASH_SetLatency(FLASH_Latency_2)函数设置FLASH存储器延时时钟周期数,这里设置为2个延时周期。
9. FLASH_PrefetchBufferCmd(FLASH_PrefetchBuffer_Enable)函数开启FLASH预取指缓存。
10. RCC_PLLConfig(RCC_PLLSource_HSI_Div2,RCC_PLLMul_16)函数设置PLL时钟源为HSI/2,倍频系数为16,即频率为8/2*16=64Mhz。
11. RCC_PLLCmd(ENABLE)函数使能PLL。
12. while循环等待PLL准备好,即检查指定的RCC标志位(PLL准备好标志)设置与否。
13. RCC_SYSCLKConfig(RCC_SYSCLKSource_PLLCLK)函数设置系统时钟(SYSCLK)为PLLCLK。
14. while循环等待SYSCLK源为PLLCLK。
15. RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOD | RCC_APB2Periph_AFIO,ENABLE)函数打开重映射时钟,并打开重映射后的IO口。
16. GPIO_PinRemapConfig(GPIO_Remap_PD01,ENABLE)函数开启IO口重映射。
17. GPIO_InitStructure结构体设置GPIO口的参数,包括GPIO口名称、工作模式和输出速度。
18. GPIO_Init(GPIOD,&GPIO_InitStructure)函数初始化GPIO口。
19. GPIO_ResetBits(GPIOD,GPIO_Pin_0 | GPIO_Pin_1)函数将GPIO口的0号和1号引脚拉低,降低功耗。
总的来说,这段代码的主要作用是进行STM32的时钟初始化和GPIO外设的初始化,使得STM32能够正常工作,并且设置了一些优化,比如开启了FLASH预取指缓存和IO口重映射等。