修改system_stm32Fxx.c文件,启动内部晶振代码

发布者:TechGuru123最新更新时间:2020-06-29 来源: eefocus关键字:system_stm32Fxx  c文件  内部晶振 手机看文章 扫描二维码
随时随地手机看文章

从启动文件上分析,该函数在reset复位之后,进入main主函数之前,芯片调用该函数进行系统时钟的初始化和设置,对这段代码进行修改,就能实现启动内部晶体了。


void SystemInit (void)

{

/* Set HSION bit */

RCC->CR |= (uint32_t)0x00000001;


#if defined (STM32F031) || defined (STM32F072) || defined (STM32F042)

/* Reset SW[1:0], HPRE[3:0], PPRE[2:0], ADCPRE and MCOSEL[2:0] bits /

RCC->CFGR &= (uint32_t)0xF8FFB80C;

#else

/ Reset SW[1:0], HPRE[3:0], PPRE[2:0], ADCPRE, MCOSEL[2:0], MCOPRE[2:0] and PLLNODIV bits /

RCC->CFGR &= (uint32_t)0x08FFB80C;

#endif / STM32F031*/


/* Reset HSEON, CSSON and PLLON bits */

RCC->CR &= (uint32_t)0xFEF6FFFF;


/* Reset HSEBYP bit */

RCC->CR &= (uint32_t)0xFFFBFFFF;


/* Reset PLLSRC, PLLXTPRE and PLLMUL[3:0] bits */

RCC->CFGR &= (uint32_t)0xFFC0FFFF;


/* Reset PREDIV1[3:0] bits */

RCC->CFGR2 &= (uint32_t)0xFFFFFFF0;


/* Reset USARTSW[1:0], I2CSW, CECSW and ADCSW bits */

RCC->CFGR3 &= (uint32_t)0xFFFFFEAC;


/* Reset HSI14 bit */

RCC->CR2 &= (uint32_t)0xFFFFFFFE;


/* Disable all interrupts */

RCC->CIR = 0x00000000;


/* Configure the System clock frequency, AHB/APBx prescalers and Flash settings */

SetSysClock();

}

关键字:system_stm32Fxx  c文件  内部晶振 引用地址:修改system_stm32Fxx.c文件,启动内部晶振代码

上一篇:STM32 网络通信Web Server中 SSI与CGI的应用解析
下一篇:STM32之SWD连接配置说明

推荐阅读最新更新时间:2024-11-12 21:23

STM8S103F单片机编程——在C文件中嵌入汇编代码
最近在使用STM8S103F单片机,需要在C程序中嵌入汇编代码。经过搜索,找到下面的解决方法。 方法1: 方法2: 上面的内容摘自COSMIC的安装目录下, COSMICCXSTM8_32KDocsCXSTM8_UsersGuide.pdf
[单片机]
为什么晶振不集成到芯片内部去?
原因1、早些年,芯片的生产制作工艺也许还不能够将晶振做进芯片内部,但是现在可以了。这个问题主要还是实用性和成本决定的。 原因2、芯片和晶振的材料是不同的,芯片 (集成电路) 的材料是硅,而晶体则是石英 (二氧化硅),没法做在一起,但是可以封装在一起,目前已经可以实现了,但是成本就比较高了。 原因3、晶振一旦封装进芯片内部, 频率也固定死了,想再更换频率的话,基本也是不可能的了,而放在外面, 就可以自由的更换晶振来给芯片提供不同的频率。有人说,芯片内部有 PLL,管它晶振频率是多少,用 PLL 倍频/分频不就可以了,那么这有回到成本的问题上来了,100M 的晶振集成到芯片里, 但我用不了那么高的频率,我只想用 10M 的频率, 那我
[单片机]
为什么<font color='red'>晶振</font>不集成到芯片<font color='red'>内部</font>去?
STM32F030 使用内部晶振,PF0与PF1作普通IO使用
static void SetSysClock(void) { __IO uint32_t StartUpCounter = 0, HSEStatus = 0; //需要修改的关键地方,一定一定。。。。 //RCC- CR |= ((uint32_t)RCC_CR_HSEON); RCC- CR &= ~((uint32_t)RCC_CR_HSEON); do { HSEStatus = RCC- CR & RCC_CR_HSERDY; StartUpCounter++; } while((HSEStatus == 0) && (StartUpCounter != HSE_STARTUP_TIME
[单片机]
STM32 usb_init.c和usb_int.c文件分析
usb_init.c这个文件是主要是初始化。函数很简单: /******************************************************************************* * Function Name : USB_Init * Description : USB系统初始化 * Input : None. * Output : None. * Return : None. *******************************************************************************/ void USB_In
[单片机]
STC89C516RD头文件
REG52.h就可以了,自己再增加几个寄存器的定义就可以了,其实就是扩展RAM和看门狗。我一直是这么用516的,我的REG52.H: /* *----------------------------------------------------------------------------- * Copyright (c) KEIL ELEKTRONIK GmbH and Franklin Software, Inc., 1987-1992 *----------------------------------------------------------------------------- */ /* 8052
[单片机]
小广播
设计资源 培训 开发板 精华推荐

最新单片机文章
何立民专栏 单片机及嵌入式宝典

北京航空航天大学教授,20余年来致力于单片机与嵌入式系统推广工作。

换一换 更多 相关热搜器件

 
EEWorld订阅号

 
EEWorld服务号

 
汽车开发圈

电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 电信业务审批[2006]字第258号函 京公网安备 11010802033920号 Copyright © 2005-2024 EEWORLD.com.cn, Inc. All rights reserved