STM32F103模块初始化代码详解

需积分: 48 53 下载量 68 浏览量 更新于2024-09-09 4 收藏 17KB TXT 举报
"STM32F103的初始化代码示例" STM32F103是一款基于ARM Cortex-M3内核的微控制器,由意法半导体(STMicroelectronics)生产。它拥有丰富的外设集,包括定时器、串行通信接口、ADC、DAC、SPI、I2C等。在开发基于STM32F103的项目时,正确地初始化这些模块是至关重要的。以下是一段简化的STM32F103初始化代码,用于设置系统时钟和GPIO。 代码首先包含了必要的库文件"stm32f10x_lib.h",该文件包含了STM32F10x系列的外设驱动函数声明。 系统时钟配置函数`RCC_Configuration(void)`中,首先调用了`RCC_DeInit()`来复位RCC寄存器,确保所有配置回到默认状态。接着,通过`RCC_HSEConfig(RCC_HSE_ON)`开启外部高速晶振(High Speed External,HSE)。外部晶振通常是8MHz,提供系统时钟的基础。 为了确保HSE已经启动,`RCC_WaitForHSEStartUp()`会等待HSE时钟稳定。如果启动成功,程序将进入后续的时钟配置。这里,选择HCLK(AHB总线时钟)为系统时钟的1倍速,即8MHz。然后,PCLK2(APB2总线时钟)被设置为与HCLK相同的速度,PCLK1(APB1总线时钟)被设置为HCLK的半速,即4MHz。 接下来,对FLASH设置延迟周期,这里是2个周期,以适应较高的系统时钟速度。启用预取指缓冲以提高代码执行效率。然后,配置PLL(锁相环)源为HSE,分频因子为1,乘数为9,这样PLL的输出频率为72MHz。启用PLL并等待其准备就绪后,设置系统时钟源为PLL。 最后,配置GPIOB时钟使能,这是为了使用GPIOB上的引脚。这只是GPIO初始化的一部分,完整的GPIO配置还包括设置模式(输入/输出)、速度、推挽/开漏、上拉/下拉等属性。 在实际项目中,除了系统时钟和GPIO,还需要初始化其他外设,如串口、定时器、ADC等。每个外设的初始化都需要调用相应的库函数,并根据应用需求配置相应的寄存器。例如,初始化串口可能包括设置波特率、数据位、停止位、奇偶校验等;初始化定时器可能涉及配置计数模式、中断、预分频器等。 这段代码提供了一个基本的框架,开发者可以在此基础上根据项目需求扩展,初始化更多外设或调整时钟配置。注意,实际项目中应确保所有外设初始化代码都符合芯片手册中的规定,避免引发硬件冲突或性能问题。