晶振对stm32 串口数据传输的影响
2019独角兽企业重金招聘Python工程师标准>>>
一般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
有源晶振一般比无源晶振贵,优点是输出波形完美,不受寄生电容干扰,缺点是输出频率不可调,无源晶振一般比芯片内部晶振效果好十倍,由内部脉冲触发
转载于:https://my.oschina.net/u/2252538/blog/551949
晶振对stm32 串口数据传输的影响相关推荐
- 换晶振导致stm32串口数据飞码的解决办法
一般来说,stm32f107都是用标配的晶振,比如8MHz. 但是,如果用别的晶振,比如13.56M的晶振,那串口接收还正常吗? 根据试验结果,很可能会飞码.比如说用串口助手发送的是0x35,但是在串 ...
- 换晶振导致stm32串口数据飞码的解决办法(补充)
今天(2014.4.21)把stm32f107的程序下载到stm32f103的板子上,发现串口收不到数据,突然想起晶振频率没有修改,#define HSE_VALUE ((uint32_t)13 ...
- ipconfig不是内部或外部_晶振有什么作用,如何选择合适的晶振,为什么有时候用内部晶振?...
一. 什么是晶振 晶振,全名叫"晶体振荡器",它在电路当中起到产生振荡频率的作用,我们都知道,单片机可以看成是在时钟驱动下的时序逻辑电路,那么这个所需要的时钟就是晶振来产生,可以说 ...
- 一个严谨的STM32串口DMA发送接收(1.5Mbps波特率)机制
文章目录 1 前言 2 串口有必要使用DMA吗 3 实现方式 4 STM32串口使用DMA 5 串口DMA接收 5.1 基本流程 5.2 相关配置 5.3 接收处理 5.3 .1 接收数据大小 5.3 ...
- 电子器件系列十九:晶振
石英晶体振荡器是利用石英晶体(二氧化硅的结晶体)的压电效应制成的一种谐振器件. 它的基本结构大致是从一块石英晶体上按一定方位角切下薄片(简称为晶片,它可以是正方形.矩形或圆形等),在它的两个对应面上涂 ...
- STM8s外部时钟晶振失效时钟安全系统CSS启动演示
使用的最小系统晶振是8m的. 这里说下配置过程: 时钟自动切换,开启切换中断 在中断里面清除中断标志,使能CSS并开启CSS中断 CSS中断发生,清除CSS中断标志,将HSI二分频,即16M/2=8M ...
- 关于晶振的那些事……
原文地址:http://bbs.armfly.com/read.php?tid=19764&fpage=2 关于晶振的那些事-- 晶振,在板子上看上去一个不起眼的小器件,但是在数字电路里,就像 ...
- 晶振,数字电路的心脏~
之所以说晶振是数字电路的心脏,就是因为所有的数字电路都需要一个稳定的工作时钟信号,最常见的就是用晶振来解决,可以说只要有数字电路的地方就可以见到晶振. 常见种类 我们常说的晶振,包含两种. 一种需要加 ...
- 电路 晶振频率_都说晶振是电路的心脏,你真的了解它吗?
之所以说晶振是数字电路的心脏,就是因为所有的数字电路都需要一个稳定的工作时钟信号,最常见的就是用晶振来解决,可以说只要有数字电路的地方就可以见到晶振. 常见种类 我们常说的晶振,包含两种. 一种需要加 ...
最新文章
- 企业云部署要如何选择IaaS PaaS和SaaS
- 转:FMS 3.5之Hello World!
- HBase数据存取流程
- 如何使用 Barracuda 防火墙设置/保护 Azure 应用程序
- java对docker_如何在docker中运行java程序
- webpack4学习之问题一
- Hdu2660 Accepted Necklace【简单dfs】
- 并发包 concurrent(一) Atomic
- 1、Java语言简介
- 数模竞赛必备参考书籍《算法竞赛入门经典(第2版)》PDF免费下载
- linux安装 soapui_SOAP测试工具-SoapUI For Linux下载V5.2.1免费版-西西软件下载
- 统计学和计算机的关系,浅议统计学与其他学科的关系
- pta平台c语言作业答案,C语言PTA平台习题与答案.pdf
- 考研数学笔记(更新中)
- IP地址冲突的原因及其解决方法
- 机器人运动规划技术介绍
- 2019牛客多校第九场 H Cutting Bamboos (二分主席树)
- c++学习 cout endl使用
- BP客户主数据信用数据批量修改
- A + B Proble