【STM32F103攻城笔记】外部晶振HSE倍频设置系统时钟
2017-06-06 14:39
225 查看
上一篇的内部晶振的系统时钟设置已经对系统时钟进行了配置,而外部晶振的倍频只需要改变上一篇的初始化函数就可以,其他均一样!
第一步:建立一个HSE倍频的初始化函数void SystemClock_Config(void) ;
所以我们由上一篇文章变为:
int main (void)
{
RCC_ClocksTypeDef RCC_Clocks; //初始化
SystemClock_Config(); //调用刚才改过的函数
NVIC_PriorityGroupConfig(NVIC_PriorityGroup_2);
Usart_Init(115200); //串口为了看数据而已
RCC_GetClocksFreq(&RCC_Clocks); //获取各个时钟频率
while(1)
{
printf("SYSCLK_Frequency %d \r\n",RCC_Clocks.SYSCLK_Frequency);
//printf("SYSCLK_Frequency %d \r\n",RCC_Clocks.SYSCLK_Frequency);
}
}
下面我们队这个函数进行详细的书写:代码如下:以及贴出了几个库函数的说明!
void SystemClock_Config(void)
{
RCC_DeInit(); //初始化
RCC_HSEConfig(RCC_HSE_ON); //打开外部时钟HSE 8MHz
if(RCC_WaitForHSEStartUp() == SUCCESS) //等待HSE启动成功
{
RCC_PLLConfig(RCC_PLLSource_HSE_Div1, RCC_PLLMul_9); //选择PLL的时钟源并9倍 72Mhz
RCC_PLLCmd(ENABLE); //使能PLL时钟
while(RCC_GetFlagStatus(RCC_FLAG_PLLRDY) == RESET) //等待PLL时钟就绪
{
}
RCC_SYSCLKConfig(RCC_SYSCLKSource_PLLCLK); //系统时钟选择PLL作为时钟源
// * - 0x00: HSI used as system clock
// * - 0x04: HSE used as system clock
// * - 0x08: PLL used as system clock
// * - 0x0C: HSI48 used as system clock, applicable only for STM32F072 devices
while(RCC_GetSYSCLKSource()!=0x08) //判断返回的时钟源是否为PLL时钟源
{
}
RCC_HCLKConfig(RCC_SYSCLK_Div1); //PLL不分频给系统时钟 72MHz
}
}
库函数:
最后串口打印结果:
第一步:建立一个HSE倍频的初始化函数void SystemClock_Config(void) ;
所以我们由上一篇文章变为:
int main (void)
{
RCC_ClocksTypeDef RCC_Clocks; //初始化
SystemClock_Config(); //调用刚才改过的函数
NVIC_PriorityGroupConfig(NVIC_PriorityGroup_2);
Usart_Init(115200); //串口为了看数据而已
RCC_GetClocksFreq(&RCC_Clocks); //获取各个时钟频率
while(1)
{
printf("SYSCLK_Frequency %d \r\n",RCC_Clocks.SYSCLK_Frequency);
//printf("SYSCLK_Frequency %d \r\n",RCC_Clocks.SYSCLK_Frequency);
}
}
下面我们队这个函数进行详细的书写:代码如下:以及贴出了几个库函数的说明!
void SystemClock_Config(void)
{
RCC_DeInit(); //初始化
RCC_HSEConfig(RCC_HSE_ON); //打开外部时钟HSE 8MHz
if(RCC_WaitForHSEStartUp() == SUCCESS) //等待HSE启动成功
{
RCC_PLLConfig(RCC_PLLSource_HSE_Div1, RCC_PLLMul_9); //选择PLL的时钟源并9倍 72Mhz
RCC_PLLCmd(ENABLE); //使能PLL时钟
while(RCC_GetFlagStatus(RCC_FLAG_PLLRDY) == RESET) //等待PLL时钟就绪
{
}
RCC_SYSCLKConfig(RCC_SYSCLKSource_PLLCLK); //系统时钟选择PLL作为时钟源
// * - 0x00: HSI used as system clock
// * - 0x04: HSE used as system clock
// * - 0x08: PLL used as system clock
// * - 0x0C: HSI48 used as system clock, applicable only for STM32F072 devices
while(RCC_GetSYSCLKSource()!=0x08) //判断返回的时钟源是否为PLL时钟源
{
}
RCC_HCLKConfig(RCC_SYSCLK_Div1); //PLL不分频给系统时钟 72MHz
}
}
库函数:
最后串口打印结果:
相关文章推荐
- 【STM32F103攻城笔记】内部晶振HSI倍频设置系统时钟
- 【裸机开发笔记】6410的系统时钟设置(中)---相关寄存器介绍
- 【裸机开发笔记】6410的系统时钟设置(下)---几个常用函数的C源码。
- STM32F107(互联网型)外部晶振用25MHZ 而STM32F103却用8MHZ的原因及其时钟来源分析
- STM32F107(互联网型)外部晶振用25MHZ 而STM32F103却用8MHZ的原因及其时钟来源分析
- 【裸机开发笔记】6410的系统时钟设置(下)---几个常用函数的C源码。
- STM32F107(互联网型)外部晶振用25MHZ 而STM32F103却用8MHZ的原因及其时钟来源分析
- STM32F107(互联网型)外部晶振用25MHZ 而STM32F103却用8MHZ的原因及其时钟来源分析
- 【裸机开发笔记】6410的系统时钟设置(上)---6410时钟控制逻辑框架分析
- upD79F8513A(NEC)或upD78F0511A(NEC)之初始化外部8M晶振做系统时钟
- 【裸机开发笔记】6410的系统时钟设置(中)---相关寄存器介绍
- STM32系统时钟设置,采用外部有源晶振相关配置问题
- 【裸机开发笔记】6410的系统时钟设置(上)---6410时钟控制逻辑框架分
- stm32 时钟配置——外部时钟倍频、内部时钟倍频 【worldsing笔记】
- 系统时钟学习笔记
- stm32 系统时钟设置
- ARM学习笔记--系统时钟和定时器
- DELPHI下读取与设置系统时钟
- DELPHI下读取与设置系统时钟
- 6410的系统时钟设置(上)---6410时钟控制逻辑框架分析