STM32F1xx 外部晶振为12MHZ,修改SystemInit()函数使系统时钟(SYSCLK),APB2(PCLK2),HCLK为72MHZ

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

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
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值