STM32F4配置内部时钟(HSI)

本文详细介绍了如何在STM32F4单片机中配置HSI作为系统时钟源,以解决因缺少外部晶振导致的时间错误问题,包括关键步骤和调用位置。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

STM32F4配置内部时钟

半年多没更新了,今天配置F4的时候内部时钟问题整了2个小时,记录下这个坑。
有些板子由于没有贴外部晶振,所以代码运行起来的时候时钟就会出问题,本来配置的中断是1ms实际跑起来确只有10ms,严重出错了。这种问题解决办法就是配置使用内部时钟HSI
本例程只针对STM32F4,其他单片机并未测试过。
/**

  * @brief  Configures HSI as the System clock source

  **/  

void HSI_SetSysClock()
{
  RCC->CR |= ((uint32_t)RCC_CR_HSION);
 
  while(!(RCC->CR & RCC_CR_HSIRDY));

	RCC->APB1ENR |= RCC_APB1ENR_PWREN;
	PWR->CR |= PWR_CR_VOS;

	RCC->CFGR |= RCC_CFGR_HPRE_DIV1;
	 
	RCC->CFGR |= RCC_CFGR_PPRE2_DIV2;

	RCC->CFGR |= RCC_CFGR_PPRE1_DIV4;

	RCC->PLLCFGR = 16 | (PLL_N << 6) | (((PLL_P >> 1) -1) << 16) |
		(RCC_PLLCFGR_PLLSRC_HSI) | (PLL_Q << 24);

	RCC->CR |= RCC_CR_PLLON;

	while((RCC->CR & RCC_CR_PLLRDY) == 0)
	{
	}

	FLASH->ACR = FLASH_ACR_PRFTEN |FLASH_ACR_ICEN |FLASH_ACR_DCEN |FLASH_ACR_LATENCY_5WS;

	RCC->CFGR &= (uint32_t)((uint32_t)~(RCC_CFGR_SW));
	RCC->CFGR |= RCC_CFGR_SW_PLL;

	while ((RCC->CFGR & (uint32_t)RCC_CFGR_SWS ) != RCC_CFGR_SWS_PLL);
	{
	}
}

此函数在哪里调用呢
在这个函数static void SetSysClock(void)的
在这里插入图片描述
然后重新运行代码即可

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值