STM32系统时钟设置,采用外部有源晶振相关配置问题

发布者:BlissfulJoy最新更新时间:2018-08-17 来源: eefocus关键字:STM32  系统时钟  有源晶振  配置问题 手机看文章 扫描二维码
随时随地手机看文章

在调试STM32系统时钟设置时遇到一个问题:TIM2定时1Ms,TIM2中断服务函数time++,time=100时LED状态改变。程序运行后发现LED不是按照0.1S的时间闪烁,闪烁的很慢。

查找程序发现在系统时钟初始化时,RCC_HSEConfig(RCC_HSE_Bypass); 语句配置不对,此语句解释为HSE晶振被外部时钟旁路。指将芯片内部的用于外部晶体起振和功率驱动等的部分电路和XTAL_OUT引脚断开,这时使用的外部时钟是有源时钟或者其他STM32提供的CCO输出等时钟信号,直接单线从XTAL_IN输入,这样即使外部有晶体也震荡不起来了。

因为之前用的是有源晶振,接法如下图1:HSE配置如下:RCC_HSEConfig(RCC_HSE_Bypass); 

图1



无源晶振,接法如下图1:HSE配置如下:RCC_HSEConfig(RCC_HSE_ON); 

附:1 晶体与晶振的区别:


晶振是一个统称,晶振分为有源晶振和无源晶振。有源晶振又叫钟振,无源晶振又叫晶体。区别两者最简单的就是,是否需要对它单独供电,需要供电电压的,就是有源晶振,反之,无源晶振。还有一个外观上比较容易判断的就是,如果只有两个脚的,那一定是无源的晶振,但是如果是三个脚,四个脚的,可能是无源,也可能是有源,需要从上面提到的判断。

附:2 STM32系统时钟配置函数    

void Sys_Clk_Init(void)              //系统时间设置72M,使能DMA1,GPIOA,AFIO,ADC1

{

ErrorStatus HSEStartUpStatus;                            

RCC_DeInit();                                      

//  RCC_HSEConfig(RCC_HSE_Bypass);                  

RCC_HSEConfig(RCC_HSE_ON);

  HSEStartUpStatus = RCC_WaitForHSEStartUp();               

if(HSEStartUpStatus == SUCCESS) 

FLASH_PrefetchBufferCmd(FLASH_PrefetchBuffer_Enable); 

FLASH_SetLatency(FLASH_Latency_2);                    

RCC_HCLKConfig(RCC_SYSCLK_Div1);                      

RCC_PCLK2Config(RCC_HCLK_Div1);                    

RCC_PCLK1Config(RCC_HCLK_Div2);                     

RCC_PLLConfig(RCC_PLLSource_HSE_Div1, RCC_PLLMul_9); 

RCC_ADCCLKConfig(RCC_PCLK2_Div6);

RCC_PLLCmd(ENABLE);                                  

while(RCC_GetFlagStatus(RCC_FLAG_PLLRDY) == RESET)  

        {

        }

RCC_SYSCLKConfig(RCC_SYSCLKSource_PLLCLK);           

        while(RCC_GetSYSCLKSource() != 0x08)                 

        {

        }

RCC_AHBPeriphClockCmd(RCC_AHBPeriph_DMA1, ENABLE);

RCC_APB2PeriphClockCmd(  RCC_APB2Periph_ADC1 | RCC_APB2Periph_GPIOA , ENABLE);

RCC_APB2PeriphClockCmd( RCC_APB2Periph_AFIO | RCC_APB2Periph_GPIOB , ENABLE);

}

else

{

   while(1);   //

}

}


关键字:STM32  系统时钟  有源晶振  配置问题 引用地址:STM32系统时钟设置,采用外部有源晶振相关配置问题

上一篇:STM32定时器学习---基本定时器
下一篇:基于STM32F103ZET6的UART通讯实现

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

STM32小笔记(一) GPIO口的配置
GPIO口的使用: 1.GPIO和AFIO 全系列支持 GPIO寄存器 (1)两个32位配置寄存器(GPIOx_CRL,GPIOx_CRH); (2)两个32位数据寄存器(GPIOx_IDR,GPIOx_ODR); (3)一个32位置为/复位寄存器(GPIOx_BSRR); (4)一个16位复位寄存器(GPIOx_BRR); (5)一个32位锁存器(GPIOx_LCKR); 输入配置 当I/O端口配置为输入时: ● 输出缓冲器被禁止 ● 施密特触发输入被激活 ● 根据输入配置(上拉,下拉或浮动)的不同,弱上拉和下拉电阻被连接 ● 出现在I/O脚上的数据在每个APB2时钟被采样到输入数据寄存器 ● 对输入数据寄
[单片机]
STM32的DAC实验
一。数模转换DAC的原理 STM32的DAC的局限性: 只有大容量的STM32F103x(Flash在256K以上)的型号才有DAC功能。 1. 数模转换原理 DAC模块有2个转换器,每个转换有一个通道。 2. STM32DAC模块的主要特点 3. DAC模块框图 (1)DAC1对应PA4 DAC2对应PA5 (2)数字写在DHRx中,经过一定的时间才转到DORx寄存器中,DORx寄存器我们不能直接写。 (3)可以通过外部触发转换。 (4)可以产生DMA请求。 使用DAC来输出到PA4或PA5,要把PA4或PA5设置成模拟输入。 4. DAC转换 (1)对于DAC_DHRx寄存器根据对齐
[单片机]
<font color='red'>STM32</font>的DAC实验
基于STM32的八种GPIO输入输出模式解析
最近在看数据手册的时候,发现STM32的GPIO输入输出模式的配置种类有8种之多(输入和输入各4种): (1)GPIO_Mode_AIN模拟输入 (2)GPIO_Mode_IN_FLOATING浮空输入 (3)GPIO_Mode_IPD下拉输入 (4)GPIO_Mode_IPU上拉输入 (5)GPIO_Mode_Out_OD开漏输出 (6)GPIO_Mode_Out_PP推挽输出 (7)GPIO_Mode_AF_OD复用开漏输出 (8)GPIO_Mode_AF_PP复用推挽输出 我们平时接触的最多的也就是推挽输出、开漏输出、上拉输入这三种,但对于各种模式下IO口的内部电路和典型应用,STM32的数据手册中也未曾做过详细的说明和归纳
[单片机]
基于<font color='red'>STM32</font>的八种GPIO输入输出模式解析
STM32通用定时器TIMx
STM32计数器时钟可由下列四种时钟源提供: (1)内部时钟(CK_INT) (2)外部时钟模式1:外部输入脚(TIx) (3)外部时钟模式2:外部触发输入(ETR) (4)内部触发输入(ITRx) 时钟源(CK_INT)经预分频(PSC)后得到定时时钟(CK_CNT),每个定时时钟计数寄存器计数(可设向上/向下/中央对齐模式),计数寄存器计数至捕获比较寄存器(CCR),则产生CC中断;计数寄存器计数至预装载值(ARR),则产生UPDATE中断,并重装预载值。 举个例子:(以向上计数为例,每40us中断一次)   例程: (省略RCC设置部分) void TIM2_Configuration(void) {
[单片机]
<font color='red'>STM32</font>通用定时器TIMx
STM32CubeMX系列 | STM32内部FLASH
1. 内部FLASH简介 之前的文章中介绍过STM32F1利用SPI与外部FLASH(W25QXX芯片)通讯的例程,本例程将介绍STM32F1的内部FLASH,通过内部FLASH实现数据读写操作。 不同型号的STM32,其FLASH容量也有所不同,最小的只有16K字节,最大的则达到了1024K字节。此处我们使用的是STM32F103ZET6,其FLASH容量为512K字节,属于大容量产品,大容量产品的闪存模块组织图如下图示 STM32F1的闪存模块由:主存储器、信息块和闪存存储器接口寄存器3部分组成 主存储器:用来存放代码和数据常量,起始地址是0x08000000,BOOT0和BOOT1都接GND时,就是从该起始地址运行代码
[单片机]
点亮LED(库函数实现)
本次测试采用的芯片是STM32F103CB 我的开发板如下: 此开发板有8个led,分别为D11,D12,D13,D14,D15,D16,D17,D18。查询核心板的电路图后知道其对应芯片的控制引脚为P0.0,P0.1,P0.2,P0.3,P0.4,P0.5,P0.6,P0.7,P0.8。 现在开始测试点亮D11。主要源代码如下: 1 //main.c 2 #include pbdata.h 3 #include led.h 4 5 int main(void) 6 { 7 led_init(); 8 led_setBit(); 9 } 1 //pbdata.h 2 #ifndef _pbdata
[单片机]
点亮LED(库函数实现)
STM32学前班教程之三:让PC工作,开发软件的选择
1、 软件与版本的选择 需求:支持STLink2或未来的Jlink V7调试接口(因为STM32-SK使用这个接口),能够找到去除软件限制的方法,最好具有中文版帮助和界面,最好带有纯软件仿真 选择:RealView MDK 3.23RPC或者IAR EWARM 4.42A(5版本观望一下)。 2、 RealView MDK 3.23RPC(中国版)安装与去除限制 第一步:执行安装程序完成基本安装,最后选项选择加入虚拟硬件,便于纯软件调试。 第二步:执行软件,点击File-- Licence Manager,复制CID的数据到破解器的CID,其他选项如下图,然后点击Generate。 第三步:复制LIC0的数据到软件的LI
[单片机]
小广播
添点儿料...
无论热点新闻、行业分析、技术干货……
设计资源 培训 开发板 精华推荐

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

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

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