stm32f103c8t6初始化系统时钟为72Msysteminit()
时间: 2023-08-02 10:08:53 浏览: 90
好的,关于你的问题,我可以给出以下的代码示例,来初始化 STM32F103C8T6 的系统时钟为 72MHz:
```
#include "stm32f10x.h"
#include "system_stm32f10x.h"
int main(void)
{
SystemInit();
RCC->CR |= RCC_CR_HSEON; // Enable HSE (external high speed oscillator)
while(!(RCC->CR & RCC_CR_HSERDY)); // Wait until HSE is ready
FLASH->ACR |= FLASH_ACR_LATENCY_2; // Two wait states for 72MHz
RCC->CFGR |= RCC_CFGR_PLLSRC_HSE; // Use HSE as PLL input
RCC->CFGR |= RCC_CFGR_PLLMULL9; // PLL multiplier of 9
RCC->CFGR |= RCC_CFGR_PPRE1_DIV2; // APB1 prescaler of 2
RCC->CFGR |= RCC_CFGR_PPRE2_DIV1; // APB2 prescaler of 1
RCC->CR |= RCC_CR_PLLON; // Enable PLL
while(!(RCC->CR & RCC_CR_PLLRDY)); // Wait until PLL is ready
RCC->CFGR |= RCC_CFGR_SW_PLL; // Use PLL as system clock source
while(!(RCC->CFGR & RCC_CFGR_SWS_PLL)); // Wait until PLL is used as system clock source
// Your code here
return 0;
}
```
以上代码中,`SystemInit()` 函数是 CMSIS 库提供的初始化系统函数,用于设置向量表地址和时钟系统。这里我们使用外部高速晶体振荡器(HSE)作为 PLL 输入,设置 PLL 倍频为 9,从而得到 72MHz 的系统时钟频率。最后,设置 PLL 为系统时钟源,并等待 PLL 工作稳定后再执行后续的代码。
希望以上代码能够对你有所帮助,如果还有其他问题,欢迎再次提问。
阅读全文