stm32变更外部晶振时如何配置时钟、以及HSI的使用

发布者:CreativeDreamer最新更新时间:2016-09-26 来源: eefocus关键字:stm32  外部晶振  配置时钟  HSI 手机看文章 扫描二维码
随时随地手机看文章
由于stm32的库默认是外部晶振8M的情况下实现的,所以配置串口波特率的时候也是按8M,包括主频。
如果采用外部晶振12M,配置时钟为72MHZ 。

1)PLL倍频这样改:
8M:
RCC->CFGR |= (uint32_t)(RCC_CFGR_PLLSRC_HSE | RCC_CFGR_PLLMULL9);//8*9=72
12M:
RCC->CFGR |= (uint32_t)(RCC_CFGR_PLLSRC_HSE | RCC_CFGR_PLLMULL6);//12*6=72
库函数:void RCC_PLLConfig(uint32_t RCC_PLLSource, uint32_t RCC_PLLMul)
例:RCC_PLLConfig(RCC_PLLSource_HSE_Div1, RCC_PLLMul_6);

2)stm32f10x.h中修改:
8M:
#define HSE_Value ((uint32_t)8000000) /*!< Value of the External oscillator in Hz */ 
12M:
#define HSE_Value ((uint32_t)12000000) /*!< Value of the External oscillator in Hz */
 
 
接下来说一下内部时钟,内部时钟是由RC振荡产生的,精度不高。用内部时钟产生的功耗更小,还可以节约印制板的空间,程序配置如下:
void RCC_Configuration(void)
{
        /* RCC system reset(for debug purpose) */
        RCC_DeInit();
 
        RCC_HSICmd(ENABLE);        //打开内部高速时钟
        //等待HSI准备好
        while(RCC_GetFlagStatus(RCC_FLAG_HSIRDY) == RESET);
 
        FLASH_PrefetchBufferCmd(FLASH_PrefetchBuffer_Enable);        //开启FLASH预取指功能
        //FLASH时序控制
        //推荐值:SYSCLK = 0~24MHz   Latency=0
        //       SYSCLK = 24~48MHz  Latency=1
        //       SYSCLK = 48~72MHz  Latency=2
        FLASH_SetLatency(FLASH_Latency_2);
        RCC_HCLKConfig(RCC_SYSCLK_Div1);        //设置HCLK(AHB时钟)=SYSCLK
        RCC_PCLK2Config(RCC_HCLK_Div1);                //PCLK2(APB2) = HCLK
        RCC_PCLK1Config(RCC_HCLK_Div1);                //PCLK1(APB1) = HCLK
 
        //PLL设置 SYSCLK/2 * 12 = 4*12 = 48MHz
        RCC_PLLConfig(RCC_PLLSource_HSI_Div2, RCC_PLLMul_12);
        //启动PLL
        RCC_PLLCmd(ENABLE);//如果PLL被用于系统时钟,不能被DISABLE
        //等待PLL稳定
        while(RCC_GetFlagStatus(RCC_FLAG_PLLRDY) == RESET){;}
 
        //设置系统时钟SYSCLK = PLL输出
        RCC_SYSCLKConfig(RCC_SYSCLKSource_PLLCLK);
 
        //等待PLL成功用作于系统时钟的时钟源,并等待稳定
        // 0x00:HSI作为系统时钟
        // 0x04:HSE作为系统时钟
        // 0x08:PLL作为系统时钟
        while(RCC_GetSYSCLKSource() != 0x08);
}

关键字:stm32  外部晶振  配置时钟  HSI 引用地址:stm32变更外部晶振时如何配置时钟、以及HSI的使用

上一篇:STM32外部中断操作
下一篇:关于keil MDK 的配置文件Configuration Wizard

推荐阅读最新更新时间:2024-03-16 15:12

STM32的PWM输出及频率和脉宽(占空比)的计算
一、stm32的pwm输出引脚是使用的IO口的复用功能。 二、T2~T5这4个通用定时器均可输出4路PWM CH1~CH4。 三、我们以tim3的CH1路pwm输出为例来进行图文讲解(其它类似),并在最后给出tim3的ch1和ch2两路pwm输出的c代码(已在STM32F103RBT6上测试成功,大家放心使用!)。 四、给出了PWM频率和占空比的计算公式。 步骤如下: 1、使能TIM3时钟 RCC- APB1ENR |= 1 1; 2、配置对应引脚(PA6)的复用输出功能 GPIOA- CRL &= 0XF0FFFFFF;//PA6清0 GPIOA- CRL |= 0X0B000000;//复用功能输出(推挽
[单片机]
STM32学习笔记之fatfs文件系统接口函数使用
FatFS文件系统包含了文件 ff.h :文件系统实现头文件,定义有文件系统所需的数据结构 diskio.h :底层驱动头文件,就一些状态宏的定义和底层驱动函数的申明 integer.h:仅实现数据类型重定义,增加系统的可移植性 ffconf.h :文件系统配置 ff.c :文件系统实现。 diskio.c 底层驱动 FatFs 提供下面的函数API: f_mount - 注册/注销一个工作区域(Work Area) f_open - 打开/创建一个文件f_close - 关闭一个文件 f_read - 读文件f_write - 写文件 f_lseek - 移动文件读/写指针 f_truncate - 截断文件 f
[单片机]
STM32学习笔记-L298N驱动模块-电机
新手上路,十几天的学习感觉弯路走了不少,所以打算把学习的知识记录下来,和大家分享,不要嫌弃我,我从非常新手的角度来写。 1、STM32F103RCT6 我也是第一次学习单片机,选择了正点原子家的迷你版,学习到后面才发现什么板子都差不多,只要学会看手册就好了。推荐论坛:CSDN、正点原子官网、51黑论坛等。可以跟着正点原子提供的手把手视频教程把基本的实验做出来再去学习更深入的原理,就能得到事半功倍的效果。不要因为自己不会而畏怯,一旦遇到不懂的知识就马上查资料,还是不懂就去问,好了,感想有点多了。 2、L298N电机驱动模块 以后不要只认为淘宝是买东西的,上面可以找到的资料也很多。解释一下: 马达A输出(OUT1和OUT
[单片机]
<font color='red'>STM32</font>学习笔记-L298N驱动模块-电机
STM32如何从串口接收数据,取出数据中的密码段再保存到flash中
STM32如何从串口接收数据,取出数据中的密码段再保存到flash中 u8 Usart2_buf ; unsigned int usart2_lent; void main(void) { char buf_password = 000000 ;//6位密码 memset((char *) &buf_password, 0, sizeof(buf_password)); strncpy(buf_password, Usart2_buf + 9, 6);//从外键获取的信息保存到Usart2_buf中,其中从第10-15位保存的是密码 if(save_password()==1) { soundBe
[单片机]
STM32在MDK下的一种通用建立库函数工程的方法(标准库)
物料准备 MDK4或者(MDK5+Legacy支持包) ST官方下载的库文件(STM32F10x_StdPeriph_Lib_V3.5.0) 下载地址 http://pan.baidu.com/s/1cyxwXS 库函数主要文件夹简介 需要的用的库文件都在STM32F10x_StdPeriph_Lib_V3.5.0Libraries文件夹下,它又包含了以下两个文件夹 CMSIS(一些核心和库文件代码,CMSIS主要代码) CM3DeviceSupportSTSTM32F10x文件夹 system_stm32f10x.c(STM32F10x CMSIS Cortex-M3设备访问层的系统源文件) system_stm32f10
[单片机]
<font color='red'>STM32</font>在MDK下的一种通用建立库函数工程的方法(标准库)
TCRT5000+STM32红外循迹小车程序
用正点原子的精英版作为主控,红外循迹用TCRT5000芯片。 单片机源程序如下: /* Includes ------------------------------------------------------------------*/ #include stm32f10x.h #include stm32f10x_tim.h #include stm32f10x_flash.h #include stm32f10x_exti.h #include stm32f10x_rcc.h #include systick.h #include stdio.h #include misc.h #define in
[单片机]
STM32-自学笔记(6.用GPIO点亮LED)
实验说明:将两个LED灯点亮,隔一段时间后,将它们熄灭。 硬件电路: 如图 GPIOA.2引脚连接LED灯,在连接一个1kΩ的限流电阻,最后接地。 GPIOA.3引脚连接LED灯,在连接一个1kΩ的限流电阻,最后接地。(很简单) 主要来看软件设计(程序设计): 需要注意的几点: 置RCC寄存器组,使PLL输出72MHz时钟频率。 配置GPIOA.2和GPIOA.3为推挽输出,最大翻转频率为50MHz。 通过在GPIOA.2和GPIOA.3上输出高电平点亮LED,反之输出低电平则熄灭LED。 程序: 主函数main.c #include stm32f10x_lib.h
[单片机]
STM32-自学笔记(6.用GPIO点亮LED)
意法半导体TouchGFX Stock简化并加快在STM32 MCU上用户界面设计
2022 年 12 月 23 日, 中国—意法半导体TouchGFX软件包最新版本进一步简化在STM32 微控制器上开发美观的用户界面 (UI) 。4.21 版增加了TouchGFX Stock功能,在网址 4.21 版还增加了对 SVG 图像(可缩放矢量图形图像格式)的支持,这为开发酷炫的 UI 提供了更多自由空间。用户获取SVG图像需要用 TouchGFX Designer工具中新增的一个小部件,为确保高性能,SVG图像需用到意法半导体 STM32 MCU中的专用图形处理硬件,例如,NeoChrom GPU 处理器。 此外,4.21版的TouchGFX Designer工具在导航、一般用途等方面进行50 多项改进,
[单片机]
意法半导体TouchGFX Stock简化并加快在<font color='red'>STM32</font> MCU上用户界面设计
小广播
添点儿料...
无论热点新闻、行业分析、技术干货……
设计资源 培训 开发板 精华推荐

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

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

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