文档章节

晶振对stm32 串口数据传输的影响

青春无极限
 青春无极限
发布于 2015/12/27 17:37
字数 475
阅读 295
收藏 1

一般stm32 外部晶振是8M的,但是如果你要改外部晶振的话,需要把配置文件也改下

如图位置,把8000000改为 16000000;


图3  系统时钟配置

   修改SetSysClockTo72(void)文件如下:

static void SetSysClockTo72(void)
{
  __IO uint32_t StartUpCounter = 0, HSEStatus =0;

    
    
  RCC->CR |= ((uint32_t)RCC_CR_HSEON);


  do
  {
    HSEStatus =RCC->CR & RCC_CR_HSERDY;
   StartUpCounter++; 
  } while((HSEStatus == 0) &&(StartUpCounter != HSE_STARTUP_TIMEOUT));
  if ((RCC->CR & RCC_CR_HSERDY) !=RESET)
  {
    HSEStatus =(uint32_t)0x01;
  }
  else
  {
    HSEStatus =(uint32_t)0x00;
  } 
  if (HSEStatus == (uint32_t)0x01)
  {
   
   FLASH->ACR |= FLASH_ACR_PRFTBE;
   
   FLASH->ACR &=(uint32_t)((uint32_t)~FLASH_ACR_LATENCY);
   FLASH->ACR |=(uint32_t)FLASH_ACR_LATENCY_2;   

   
    RCC->CFGR|= (uint32_t)RCC_CFGR_HPRE_DIV1;
     
   
    RCC->CFGR|= (uint32_t)RCC_CFGR_PPRE2_DIV1;
   
   
    RCC->CFGR|= (uint32_t)RCC_CFGR_PPRE1_DIV2;
#ifdef STM32F10X_CL
   
   
   
       
   RCC->CFGR2 &= (uint32_t)~(RCC_CFGR2_PREDIV2 |RCC_CFGR2_PLL2MUL |
                             RCC_CFGR2_PREDIV1 | RCC_CFGR2_PREDIV1SRC);
   RCC->CFGR2 |= (uint32_t)(RCC_CFGR2_PREDIV2_DIV5 |RCC_CFGR2_PLL2MUL8 |
                            RCC_CFGR2_PREDIV1SRC_PLL2 | RCC_CFGR2_PREDIV1_DIV5);

   
    RCC->CR|= RCC_CR_PLL2ON;
   
   while((RCC->CR & RCC_CR_PLL2RDY) == 0)
    {
    }
   
       RCC->CFGR &= (uint32_t)~(RCC_CFGR_PLLXTPRE | RCC_CFGR_PLLSRC| RCC_CFGR_PLLMULL);
    RCC->CFGR|= (uint32_t)(RCC_CFGR_PLLXTPRE_PREDIV1 | RCC_CFGR_PLLSRC_PREDIV1|
                           RCC_CFGR_PLLMULL9);
#else   
   
    //16MHZ2分频如下改动,添加RCC_CFGR_PLLXTPRE_HSE_Div2
    RCC->CFGR&= (uint32_t)((uint32_t)~(RCC_CFGR_PLLSRC | RCC_CFGR_PLLXTPRE|
                                       RCC_CFGR_PLLXTPRE_HSE_Div2|RCC_CFGR_PLLMULL));
    RCC->CFGR|= (uint32_t)(RCC_CFGR_PLLXTPRE_HSE_Div2 | RCC_CFGR_PLLSRC_HSE |RCC_CFGR_PLLMULL9);
#endif
   
    RCC->CR|= RCC_CR_PLLON;
   
   while((RCC->CR & RCC_CR_PLLRDY) == 0)
    {
    }
   
   
    RCC->CFGR&= (uint32_t)((uint32_t)~(RCC_CFGR_SW));
    RCC->CFGR|=(uint32_t)RCC_CFGR_SW_PLL;   
   
    while((RCC->CFGR & (uint32_t)RCC_CFGR_SWS) !=(uint32_t)0x08)
    {
    }
  }
  else
  {
  }
}

          
如果用的keil  还要改下target里的 xtal 为16Mhz

以上只是针对于无源晶振,然而对于有源晶振,接法和无源晶振是不一样的,有源晶振由外部发送脉冲信号,通过oscin输入,oscout悬空,此时,在启动文件system_stm32f0xx.c中,在SetSysClock函数中,加上

/*Disable HSI*/

RCC->CR |= ((uint32_t)RCC_CR_HSEBYP);

/* Enable HSE */    

  RCC->CR |= ((uint32_t)RCC_CR_HSEON);

顺序一定不要搞错,就可以了


HSEBYP是把 HSI旁路,手册上说的被旁路,不是外部晶振失能,而是内部晶振失能,所以HSEBYP置1表示失能HSE,失能HSI

有源晶振一般比无源晶振贵,优点是输出波形完美,不受寄生电容干扰,缺点是输出频率不可调,无源晶振一般比芯片内部晶振效果好十倍,由内部脉冲触发

© 著作权归作者所有

上一篇: DS1302问题总结
下一篇: module_param()
青春无极限
粉丝 2
博文 129
码字总数 71498
作品 0
卢湾
程序员
私信 提问
STM32串口通信乱码详细处理方法

STM32串口通信以及温度采集搞定,其中主要遇到STM32系列单片机时钟树的问题,串口通信遇到串口调试助手能够接收到数据但出现乱码现象,开始一直以为是串口配置和程序代码问题,因为是第一次上...

aizaiyueye
2018/01/13
0
0
STM32学习笔记之修改外部晶振频率

STM32学习笔记之修改外部晶振频率 丛林听雨2016-07-23169 阅读 修改 我们常用的STM32F10x系列单片机外部晶振频率默认指定成了8M,如果外部电路发生修改,外部晶振发生了变化,会导致系统主频...

丛林听雨
2016/07/23
0
0
STM32不同外部晶振时工程的配置问题

遇到的问题: 同样的串口配置代码在一种407开发板上能正常输出,但是换到另一种407开发板上后就出现乱码,检查串口输出波形后发现,电平转换芯片没有问题,但是波特率却有问题。 问题原因: ...

walterbrien
2018/03/21
0
0
微水项目调试阶段一

1.传感器小板子焊接 鉴于温湿度一体传感器HTY271下方还有引脚,焊接时不服帖。 2.电源模块焊接与测试 TL431转换后的电压达不到3V,大约在2.7-2.8V,应该是电阻精度的问题。但已经可以达到两个...

许小佳
2014/12/19
7
0
CPLD/FPGA的UART接口设计之系统时钟(晶振)和波特率关系

UART(UniversalAsynchronous ReceiverTransmitter,通用异步收发器)是一种广泛使用的异步串行数据通信协议。目前大多数MCU、串口通信IC等芯片或模块均支持UART通信,随着CPLD/FPGA应用得越...

wordwarwordwar
2018/04/22
0
0

没有更多内容

加载失败,请刷新页面

加载更多

kibana汉化

kibana5 / 6 需要下载补丁包,https://github.com/anbai-inc/Kibana_Hanization 其中 v6 版本原生支持国际化,只需要添加资源文件并且配置即可 kibana7 v7版本官方内置汉化资源,在配置文件 ...

细肉云吞
22分钟前
5
0
spring boot 自定义日志 log4j2

使用默认的日志在实际开发中会存在很多问题,比如备份文件名称无法自动重命名、各个等级的日志被放在一个文件中等,所以实际开发中为了更好满足我们的需求,我们一般都会自定义采用配置的方式...

雷开你的门
26分钟前
7
0
PCB设计-Allegro软件入门系列-设计参数配置(上)

前言 经历了导入网表,和放置器件后,我们就要画板子了,但是必要的设计参数也要先准备好,磨刀不误砍柴工。 《一》显示参数 这里主要设置DRC报错标志大小和飞线显示类型 (1)DRC标志可以适当...

demyar
27分钟前
7
0
js实现微博、微信分享

html <!-- 分享 --><div class="share-box"> <b style="vertical-align: middle;">分享到:</b> <a title="分享到新浪微博" class="shareSina"><span class="share-icon"></span><......

张兴华ZHero
43分钟前
7
0
创龙TMS320DM8168浮点DSP C674x + ARM Cortex-A8的CPU、NAND FLASH、NOR FLASH

TL6678-EasyEVM是广州创龙基于SOM-TL6678核心板而研发的一款多核高性能DSP开发板。开发板采用核心板+底板方式,底板采用沉金无铅工艺的四层板设计,尺寸为200mm*106.65mm,它为用户提供了SOM...

Tronlong创龙
46分钟前
4
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部