STM32F1xx 外部晶振为12MHZ,修改SystemInit()函数使系统时钟(SYSCLK),APB2(PCLK2),HCLK为72MHZ
文章录
一、STM32F1xx启动顺序
1. 在STM32F1xx启动文件中,先执行SystemInit()函数,在运行main()函数。
2. 在SystemInit()函数中,SetSysClock()用于设置系统时钟。
3. 在SetSysClock()中默认调用SetSysClockTo72()函数,将系统时钟设置为72MHZ。
4. main之前的执行顺序:SystemInit() --> SetSysClock() --> SetSysClockTo72() --> main()
二、STM32F1xx启动文件
; Reset handler
Reset_Handler PROC
EXPORT Reset_Handler [WEAK]
IMPORT __main
IMPORT SystemInit
LDR R0, =SystemInit
BLX R0
LDR R0, =__main
BX R0
ENDP
三、SystemInit ()源码
/**
* @brief Setup the microcontroller system
* Initialize the Embedded Flash Interface, the PLL and update the
* SystemCoreClock variable.
* @note This function should be used only after reset.
* @param None
* @retval None
*/
void SystemInit (void)
{
/* Reset the RCC clock configuration to the default reset state(for debug purpose) */
/* Set HSION bit */
RCC->CR |= (uint32_t)0x00000001;
/* Reset SW, HPRE, PPRE1, PPRE2, ADCPRE and MCO bits */
#ifndef STM32F10X_CL
RCC->CFGR &= (uint32_t)0xF8FF0000;
#else
RCC->CFGR &= (uint32_t)0xF0FF0000;
#endif /* STM32F10X_CL */
/* Reset HSEON, CSSON and PLLON bits */
RCC->CR &= (uint32_t)0xFEF6FFFF;
/* Reset HSEBYP bit */
RCC->CR &= (uint32_t)0xFFFBFFFF;
/* Reset PLLSRC, PLLXTPRE, PLLMUL and USBPRE/OTGFSPRE bits */
RCC->CFGR &= (u

本文详细介绍了如何在STM32F1xx微控制器上,通过修改SystemInit()和SetSysClockTo72()函数,将外部12MHz晶振配置为72MHz的系统时钟。首先,启动顺序涉及SystemInit()、SetSysClock()和SetSysClockTo72()函数。然后,逐步解析了SystemInit()和SetSysClockTo72()的源代码,展示了如何调整寄存器设置以实现目标时钟频率。最后,给出了针对12MHz外部晶振调整SetSysClockTo72()的具体步骤。
最低0.47元/天 解锁文章

被折叠的 条评论
为什么被折叠?



