STM32F1一种相对简单的使用HSI配置系统时钟为64MHz的方法

发布者:好的哎最新更新时间:2020-02-24 来源: eefocus关键字:STM32F1  HSI配置  系统时钟 手机看文章 扫描二维码
随时随地手机看文章

最近因为项目成本需要,必须使用片内晶振作为系统的时钟源,所以对正点原子的项目模板时钟配置做了一些修改。使时钟倍频至64MHz供系统使用。


有需要的同学可以参考一下,代码如下:


#if defined (STM32F10X_LD_VL) || (defined STM32F10X_MD_VL) || (defined STM32F10X_HD_VL)

/* #define SYSCLK_FREQ_HSE    HSE_VALUE */

 #define SYSCLK_FREQ_24MHz  24000000

#else

/* #define SYSCLK_FREQ_HSE    HSE_VALUE */

/* #define SYSCLK_FREQ_24MHz  24000000 */ 

/* #define SYSCLK_FREQ_36MHz  36000000 */

/* #define SYSCLK_FREQ_48MHz  48000000 */

/* #define SYSCLK_FREQ_56MHz  56000000 */

/* #define SYSCLK_FREQ_72MHz  72000000 */

#endif

这里先将宏定义注释掉;


#ifdef SYSCLK_FREQ_HSE

  uint32_t SystemCoreClock         = SYSCLK_FREQ_HSE;        /*!< System Clock Frequency (Core Clock) */

#elif defined SYSCLK_FREQ_24MHz

  uint32_t SystemCoreClock         = SYSCLK_FREQ_24MHz;        /*!< System Clock Frequency (Core Clock) */

#elif defined SYSCLK_FREQ_36MHz

  uint32_t SystemCoreClock         = SYSCLK_FREQ_36MHz;        /*!< System Clock Frequency (Core Clock) */

#elif defined SYSCLK_FREQ_48MHz

  uint32_t SystemCoreClock         = SYSCLK_FREQ_48MHz;        /*!< System Clock Frequency (Core Clock) */

#elif defined SYSCLK_FREQ_56MHz

  uint32_t SystemCoreClock         = SYSCLK_FREQ_56MHz;        /*!< System Clock Frequency (Core Clock) */

#elif defined SYSCLK_FREQ_72MHz

  uint32_t SystemCoreClock         = SYSCLK_FREQ_72MHz;        /*!< System Clock Frequency (Core Clock) */

#else /*!< HSI Selected as System Clock source */

  //uint32_t SystemCoreClock         = HSI_VALUE;        /*!< System Clock Frequency (Core Clock) */

  uint32_t SystemCoreClock         = 64000000;

#endif

接着将SystemCoreClock替换为64MHz;


/*使用内部RC振荡器,设置系统时钟为64MHz*/

static void Intn_RC_Init(void)

{

    RCC_DeInit();

    RCC_HSICmd(ENABLE); 

    while(RCC_GetFlagStatus(RCC_FLAG_HSIRDY)== RESET);

    RCC_HCLKConfig(RCC_SYSCLK_Div1);                         //设置AHB时钟(HCLK) = 系统时钟

    RCC_PCLK2Config(RCC_HCLK_Div1);                          //设置AHB2时钟 = HCLK

    RCC_PCLK1Config(RCC_HCLK_Div1);                          //设置AHB1时钟 = HCLK

    FLASH_SetLatency(FLASH_Latency_2);                       //设置FLASH存储器延时时钟周期数

    FLASH_PrefetchBufferCmd(FLASH_PrefetchBuffer_Enable);

    RCC_PLLConfig(RCC_PLLSource_HSI_Div2, RCC_PLLMul_16);    //设置PLL时钟源及倍频系数,频率为8/2*16=64MHz

    RCC_PLLCmd(ENABLE);

    while(RCC_GetFlagStatus(RCC_FLAG_PLLRDY) == RESET);

    RCC_SYSCLKConfig(RCC_SYSCLKSource_PLLCLK);

    while(RCC_GetSYSCLKSource() != 0x08);

}


这样就完成了系统时钟的配置!

关键字:STM32F1  HSI配置  系统时钟 引用地址:STM32F1一种相对简单的使用HSI配置系统时钟为64MHz的方法

上一篇:stm32 固件库系统时钟配置
下一篇:stm32_HSI

推荐阅读最新更新时间:2024-11-02 12:32

NEC V850 之 系统时钟及内部设备时钟
首先说明下,之前没有搞时钟就开始看I/O口还有外部中断是不对的。幸好发现的不晚,现在把这必须的一课给补上。如果连时钟都搞不明白,下面的外设是肯定没法弄的。另外放弃了原来做一个总体程序包的想法,主要是太浪费时间了,完成一个器件的驱动还要想把他无缝的添加到原来的程序结构里去,现在不是做这个工作的时候,需要快速的把测试完成,然后上系统去调试。 下面开始正题,V850的时钟还是比较饶人的,需要仔细的去读datasheet,另外我到现在还有无法理解的地方在datasheet上面。下图是系统时钟的框图:(红色的圈里就是不理解的地方,不知道在哪个地方设置) 下面我会把代码和示波器测量的截图发出来。先是代码: 代码出处 system.
[单片机]
NEC V850 之 <font color='red'>系统</font><font color='red'>时钟</font>及内部设备<font color='red'>时钟</font>
ATmega88 时钟系统及其分布
时钟系统及其分布 Figure12为ATmega88 的主要时钟系统及其分布。这些时钟并不需要同时工作。为了降低功耗,可以通过使用不同的睡眠模式来禁止无需工作的模块的时钟,详见 P32” 电源管理及休眠模式 ” 。下面为时钟系统的详细描述。 CPU 时钟- clkCPU CPU时钟与操作AVR内核的子系统相连,如通用寄存器文件、状态寄存器及保存堆栈指针的数据存储器。终止CPU 时钟将使内核停止工作和计算。 I/O 时钟- clkI/O I/O时钟用于主要的I/O 模块,如定时器/ 计数器、SPI 和USART。I/O 时钟还用于外部中断模块。要注意的是有些外部中断由异步逻辑检测,因此即使I/O 时钟停止了这些中断仍然可以得到监
[单片机]
ATmega88 <font color='red'>时钟</font><font color='red'>系统</font>及其分布
stm32f1 的停止休眠时钟问题
之前在学习低功耗时,遇到了关于休眠的一些问题。主要总结下停止休眠的。 并且,有一句: 所以,在唤醒后,使用了内部时钟,显示出的效果是led闪烁变慢。我在代码中添加了定时器定时休眠,结果就发现了:尽管其他的IO处于休眠的状态,但用JLink调试时,可以看到我的定时器值还在变化,而且变得速度比原先慢了很多。还有一个现象就是,在读取按键时,显示的结果也变得凌乱。在网上找的案例中,有用函数clock(自己写的)来重新初始化。但我作为初学者还得让我改时钟的配置,倒不如直接用SystemInit:`void EXTI2_IRQHandler(void) { EXTI_ClearITPendingBit(EXTI_Line2); LED1=1
[单片机]
S3C2440—4.时钟系统
一.S3C2440时钟体系介绍 1.总线与时钟 S3C2440有俩个总线:AHB高速总线、APB外围总线。 对应三个时钟源: ARM芯片CPU的FCLK AHB总线的HCLK APB总线的PCLK 三个时钟的工作频率: (可以看出对比STM32中72MHz的频率,ARM时钟的性能有了很大的提高) 2.时钟来源 如何得到三种时钟?系统的时钟来源是12MHz的晶振,通过PLL锁相环硬件设备可以得到高达400MHz的时钟频率,其时钟框图如下: 可以看出系统时钟来源的选择有俩种: 晶振 外部输入 (这里只讨论晶振) 3.选择时钟 通过设置OM 可以选择时钟源: 设置方法如下: 打开原理图查看
[单片机]
S3C2440—4.<font color='red'>时钟</font><font color='red'>系统</font>
STM32时钟系统 时钟设置
在STM32中,有五个时钟源,为HSI、HSE、LSI、LSE、PLL。 ①HSI是高速内部时钟,RC振荡器,频率为8MHz。 ②HSE是高速外部时钟,可接石英/陶瓷谐振器,或者接外部时钟源,频率范围为4MHz~16MHz。 ③LSI是低速内部时钟,RC振荡器,频率为40kHz。 ④LSE是低速外部时钟,接频率为32.768kHz的石英晶体。 ⑤PLL为锁相环倍频输出,其时钟输入源可选择为HSI/2、HSE或者HSE/2。倍频可选择为2~16倍,但是其输出频率最大不得超过72MHz。 在STM32上如果不使用外部晶振,OSC_IN和OSC_OUT的接法 如果使用内部RC振荡器而不使用外部晶振,请按照下面方法处理: 1)对于1
[单片机]
STM32<font color='red'>时钟</font><font color='red'>系统</font> <font color='red'>时钟</font>设置
MSP430之系统时钟
一、时钟源种类 LFXT1CLK低频时钟源——MSP430每一种器件都有 XT2CLK高频时钟源——存在于X13X、X14X、X15X、X16X、X43X、X44X等 DCOCLK数字控制RC振荡器 二、时钟源说明 ACLK辅助时钟:ACLK是LFXT1CLK(低频时钟源)信号经过1、2、4、8分频得到的。ACLK可由软件选为各个外围模块的时钟信号,一般用于低速外设。 MCLK系统主时钟:MCLK可由软件选择来自LFXT1CLK(低频时钟源)、XT2CLK(高频时钟源)、DCOCLK(数字控制RC振荡器)三者之一,然后经过1、2、4、8分频得到。MCLK主要用于CPU和系统。 SMCLK子系统时钟:可由
[单片机]
MSP430之<font color='red'>系统</font><font color='red'>时钟</font>
STM32 SysTick 系统时钟 超简易定时器SysTick
/** * @brief Configures the SysTick. 系统时钟配置函数 main.c * @param None * @retval None */ void SysTick_Configuration(void) { /* Setup SysTick Timer for 100 msec interrupts */ if (SysTick_Config((SystemCoreClock) / 10)) // 1/10s=100ms { /* Capture error */ while (1); } NVIC_SetPriority(SysTick_IRQn, 0x0); } /**
[单片机]
STM8 时钟安全系统寄存器
STM8时钟安全系统寄存器(CLK_CSSR) 地址偏移值:0x08 复位值:0x00 位7:4 保留。始终为0。 位3 CSSD:时钟安全系统监测 由硬件置位或软件写0清除。 0:CSS关或未检测到HSE失效 1:检测到HSE失效 位2 CSSDIE:时钟安全系统监测中断使能 由软件置位或清除 0:时钟安全系统监测中断禁用 1:时钟安全系统监测中断使能 位1 AUX:辅助振荡器连接至主时钟 由硬件置位或清除。 0:辅助振荡器关 1:辅助振荡器(HSI/8)开,并做为当前的主时钟源 位0 CSSEN:时钟安全系统使能 可读,但只能由软件写一次。 0:时钟安全系统关。 1:时钟安全系统开。
[单片机]
STM8 <font color='red'>时钟</font>安全<font color='red'>系统</font>寄存器
小广播
设计资源 培训 开发板 精华推荐

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

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

换一换 更多 相关热搜器件

 
EEWorld订阅号

 
EEWorld服务号

 
汽车开发圈

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