习惯了使用STM32CubeMX配置STM32系列单片机(使用的是HAL库),最近使用APM32系列的单片机,官方提供的例程是使用的标准库(Std库),据说STM32的HAL库和标准库都能与APM32无缝连接。想使用一下标准库来开发,配置时钟时发现HAL库和标准库有一些不同。
在两种库的启动文件中我们发现都有SystemInit函数,
标准库:
HAL库:
当我们跳转到该函数时发现他们是有所不同的
标准库:
HAL库:
我们发现标准库中SystemInit函数涉及到了时钟配置:
/*!
* @brief Sets System clock frequency to 72MHz and configure HCLK, PCLK2 and PCLK1 prescalers
*
* @param None
*
* @retval None
*
*/
static void SystemClock72M(void)
{
__IO uint32_t i;
RCM->CTRL_B.HSEEN = BIT_SET;
for (i = 0; i < HSE_STARTUP_TIMEOUT; i++)
{
if (RCM->CTRL_B.HSERDYFLG)
{
break;
}
}
if (RCM->CTRL_B.HSERDYFLG)
{
/* Enable Prefetch Buffer */
FMC->CTRL1_B.PBEN = BIT_SET;
/* Flash 2 wait state */
FMC->CTRL1_B.WS =