实现stm32f103的时钟程式
时间: 2023-09-21 10:02:33 浏览: 35
以下是一个简单的STM32F103时钟程序示例,使用标准外部晶振作为时钟源,设置系统时钟为72MHz:
```
#include "stm32f10x.h"
int main(void)
{
// Enable HSE clock
RCC->CR |= RCC_CR_HSEON;
while(!(RCC->CR & RCC_CR_HSERDY)); // Wait for HSE clock to stabilize
// Set PLL source to HSE, PLL multiplier to 9 (9 * 8MHz = 72MHz)
RCC->CFGR |= RCC_CFGR_PLLSRC_HSE | RCC_CFGR_PLLMULL9;
// Enable PLL
RCC->CR |= RCC_CR_PLLON;
while(!(RCC->CR & RCC_CR_PLLRDY)); // Wait for PLL to stabilize
// Set system clock source to PLL
RCC->CFGR &= ~RCC_CFGR_SW;
RCC->CFGR |= RCC_CFGR_SW_PLL;
while(!(RCC->CFGR & RCC_CFGR_SWS_PLL)); // Wait for system clock to switch to PLL
// Configure Flash wait states for the new system clock frequency
FLASH->ACR = FLASH_ACR_PRFTBE | FLASH_ACR_LATENCY_2;
// Set APB1 and APB2 clock dividers to 2 (36MHz)
RCC->CFGR |= RCC_CFGR_PPRE1_DIV2 | RCC_CFGR_PPRE2_DIV2;
// Configure GPIO and other peripherals as needed
while(1)
{
// Main program loop
}
}
```
请注意,此示例仅用于说明如何设置STM32F103的时钟。实际应用程序可能需要根据具体需求进行更复杂的时钟配置,例如使用其他时钟源、不同的PLL倍频器、不同的APB时钟分频器等。