STM32F103配置使用内部晶振

1、修改system_tm32f10x.c文件中的void SystemInit(void)函数。修改如下:

void SystemInit (void)
{
    /* 开启HSI 即内部晶振时钟 */
	RCC->CR |= (uint32_t)0x00000001; 

	/*选择HSI为PLL的时钟源HSI必须2分频给PLL*/
	RCC->CFGR |= (uint32_t)RCC_CFGR_PLLSRC_HSI_Div2; 

	/*PLLCLK=8/2*12=48MHz   设置倍频得到时钟源PLL的频率*/
    //理论上最高可以设置64MHz主频,可是设高了单片机会挂,可以自行验证
	RCC->CFGR |= (uint32_t)RCC_CFGR_PLLMULL12;

	/* PLL不分频输出  */
	RCC->CFGR |= (uint32_t)RCC_CFGR_HPRE_DIV1;

	/* 使能 PLL时钟 */
	RCC->CR |= RCC_CR_PLLON;

	/* 等待PLL时钟就绪*/
	while((RCC->CR & RCC_CR_PLLRDY) == 0)
	{
	}

	/* 选择PLL为系统时钟的时钟源 */
	RCC->CFGR &= (uint32_t)((uint32_t)~(RCC_CFGR_SW));
	RCC->CFGR |= (uint32_t)RCC_CFGR_SW_PLL;    

	/* 等到PLL成为系统时钟的时钟源*/
	while ((RCC->CFGR & (uint32_t)RCC_CFGR_SWS) != (uint32_t)0x08)
	{
	}	
}

2、工程配置:

 

3、查看配置后的时钟频率(此步骤可忽略):

int main(void)
{
	RCC_ClocksTypeDef  RCC_Clocks; //初始化时钟频率结构体
  
	BSP_Init();//硬件资源初始化,如串口,IO等
	
	RCC_GetClocksFreq(&RCC_Clocks); //获取各个时钟频率

        while(1)
	{
		printf("SYSCLK_Frequency %d \r\n",RCC_Clocks.SYSCLK_Frequency);//串口输出主频
		delay_ms(1000);//延迟1s
	} 
}

 

发布了14 篇原创文章 · 获赞 7 · 访问量 1万+
展开阅读全文

没有更多推荐了,返回首页

©️2019 CSDN 皮肤主题: 编程工作室 设计师: CSDN官方博客

分享到微信朋友圈

×

扫一扫,手机浏览