STM32F103配置使用内部晶振

1、修改system_stm32f10x.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
	} 
}

4、附上工程模板 

链接:https://pan.baidu.com/s/18Lx2hJry57dKzJUM8DblSA 
提取码:aimi

评论 6
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值