STM32时钟配置,不同晶振时需要配置的程序

发布者:幸福约定123最新更新时间:2018-06-18 来源: eefocus关键字:STM32  时钟配置 手机看文章 扫描二维码
随时随地手机看文章

在“stm32f10x.h”这个头文件里: 
#define HSE_Value ((uint32_t)8000000) /!< Value of the External oscillator in Hz/ 
斜体内容默认是8000000,在你修改了外部晶振时,要和你的外部晶振数值相同,不如我的外部晶振时24M,我就把它改成24M,这样就可以了, 
还有一处要更改是在“system_stm32f10x.c”里: 
static void SetSysClockTo72(void) 

__IO uint32_t StartUpCounter = 0, HSEStatus = 0;

/!< SYSCLK, HCLK, PCLK2 and PCLK1 configuration —————————/ 
/!< Enable HSE / 
RCC->CR |= ((uint32_t)RCC_CR_HSEON);

/!< Wait till HSE is ready and if Time out is reached exit / 
do 

HSEStatus = RCC->CR & RCC_CR_HSERDY; 
StartUpCounter++; 
} while((HSEStatus == 0) && (StartUpCounter != HSEStartUp_TimeOut));

if ((RCC->CR & RCC_CR_HSERDY) != RESET) 

HSEStatus = (uint32_t)0x01; 

else 

HSEStatus = (uint32_t)0x00; 
}

if (HSEStatus == (uint32_t)0x01) 

/!< Enable Prefetch Buffer / 
FLASH->ACR |= FLASH_ACR_PRFTBE;

/*!< Flash 2 wait state */

FLASH->ACR &= (uint32_t)((uint32_t)~FLASH_ACR_LATENCY);

FLASH->ACR |= (uint32_t)FLASH_ACR_LATENCY_2;    


/*!< HCLK = SYSCLK */

RCC->CFGR |= (uint32_t)RCC_CFGR_HPRE_DIV1;//1


/*!< PCLK2 = HCLK */

RCC->CFGR |= (uint32_t)RCC_CFGR_PPRE2_DIV1;//1


/*!< PCLK1 = HCLK */

RCC->CFGR |= (uint32_t)RCC_CFGR_PPRE1_DIV2;//2


/*!< PLLCLK = 8MHz * 9 = 72 MHz */

RCC->CFGR &= (uint32_t)((uint32_t)~(RCC_CFGR_PLLSRC | RCC_CFGR_PLLXTPRE | RCC_CFGR_PLLMULL));

RCC->CFGR |= (uint32_t)(RCC_CFGR_PLLSRC | RCC_CFGR_PLLMULL3 );//RCC_CFGR_PLLMULL9


/*!< Enable PLL */

RCC->CR |= RCC_CR_PLLON;


/*!< Wait till PLL is ready */

while((RCC->CR & RCC_CR_PLLRDY) == 0)

{

}


/*!< Select PLL as system clock source */

RCC->CFGR &= (uint32_t)((uint32_t)~(RCC_CFGR_SW));

RCC->CFGR |= (uint32_t)RCC_CFGR_SW_PLL;    


/*!< Wait till PLL is used as system clock source */

while ((RCC->CFGR & (uint32_t)RCC_CFGR_SWS) != (uint32_t)0x08)

{

}


else 

{ /*!< If HSE fails to start-up, the application will have wrong clock 

configuration. User can add here some code to deal with this error */


/*!< Go to infinite loop */

while (1)

{

}


}


endif


/** 

* @} 

*/ 

“RCC->CFGR |= (uint32_t)(RCC_CFGR_PLLSRC | RCC_CFGR_PLLMULL3 );”给成你合适的倍数,不要超频


关键字:STM32  时钟配置 引用地址:STM32时钟配置,不同晶振时需要配置的程序

上一篇:STM32 system_stm32f10x.c文件分析
下一篇:STM32之SPI从机例程

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

STM32——TIM2定时器定时
STM32 中一共有11 个定时器,其中2 个高级控制定时器,4 个普通定时器和2 个基本定时器,以及2 个看门狗定时器和1 个系统嘀嗒定时器。其中系统嘀嗒定时器是前文中所描述的SysTick,看门狗定时器以后再详细研究。今天主要是研究剩下的8 个定时器。关于这8 个定时器的简要说明,如图60 所示。其中TIM1 和TIM8 是能够产生3 对PWM 互补输出的高级定时器,常用于三相电机的驱动,时钟由APB2 的输出产生。TIM2-TIM5 是普通定时器,TIM6 和TIM7是基本定时器,其时钟由APB1 输出产生。由于STM32 的TIMER 功能比较复杂,所以只能一点一点的学习。因此今天就从最简单的开始学习起,也就是TIM2-T
[单片机]
<font color='red'>STM32</font>——TIM2定时器定时
STM32之DMA二
DMA 部分我用到的相对简单,当然,可能这是新东西,我暂时还用不到它的复杂功能吧。下面用问答的形式表达我的思路。 DMA 有什么用? 直接存储器存取用来提供在外设和存储器之间或者存储器和存储器之间的高速数据传输。无须 CPU 的干预,通过 DMA 数据可以快速地移动。这就节省了 CPU 的资源来做其他操作。 有多少个 DMA 资源? 有两个 DMA 控制器, DMA1 有 7 个通道, DMA2 有 5 个通道。 数据从什么地方送到什么地方 ? 外设到 SRAM ( I2C/UART 等获取数据并送入 SRAM ); SRAM 的两个区域之间; 外设到外设(
[单片机]
STM32的 位寻址(地址映射)
STM32的寄存器的分布情况: STM比较特色的就是 位带操作: 如下解释: (寄存器的地址是固定好的,我们想要进行位操作的话 就需要用到地址映射,将位带区寄存器的 各位 映射到 位带别名区的地址。) 通过 位带别名区 的 4个字节(32个位)用来存放 位带区的 位地址。 如将 0x2200 0000 映射到 0x2000 000 的第一个位! 具体的映射C程序是这样的: 算法公式: (addr & 0xF0000000)+0x2000000+((addr &0xFFFFF) 5)+(bitnum 2) addr & 0xF0000000: 取0x40
[单片机]
STM32 进阶教程 5 - 内联函数
前言 在计算机科学中,内联函数(有时称作在线函数或编译时期展开函数)是一种编程语言结构,用来建议编译器对一些特殊函数进行内联扩展(有时称作在线扩展);也就是说建议编译器将指定的函数体插入并取代每一处调用该函数的地方(上下文),从而节省了每次调用函数带来的额外时间开支。但在选择使用内联函数时,必须在程序占用空间和程序执行效率之间进行权衡,因为过多的比较复杂的函数进行内联扩展将带来很大的存储资源开支。另外还需要特别注意的是对递归函数的内联扩展可能引起部分编译器的无穷编译。 内联扩展是一种特别的用于消除调用函数时所造成的固有的时间消耗方法。一般用于能够快速执行的函数,因为在这种情况下函数调用的时间消耗显得更为突出。这种方法对于很小的
[单片机]
<font color='red'>STM32</font> 进阶教程 5 - 内联函数
STM32串口多机通信
从设备采用漏极开路方式级联,从设备的串口TX必须配置为漏极开路,不能是推挽方式,如果配置成推挽方式,会导致灌电流过大,低电平低不下去问题 STM32 的UART数据寄存器是9位,数据传输先传低位(LSB) --实际应用发现9位数据大时候有丢包错包问题?? 利用USART可以进行多机处理器通信,其原理就是使从机处于静默模式,由主机在需要的时候发送指令唤醒从机,并传输数据。STM32静默模式特点:1、所有接收状态位都不会被设置;2、所有的接收中断都被禁止;3、USART_CR1寄存器中的RWU位被置1,RUW可以硬件自动控制或者在某些条件下由软件写。 连接方法很简单,主机的TX输出与从机的RX端口直接相连,从机TX端口要经过与
[单片机]
STM32 AI实验课程—HAR在STM32L4上的实现
课程目的:旨在为AI深度学习解决方案提供关于ST生态系统的实践体验 实验步骤: 下载AI演示项目到ST开发板上 借助智能手机/平板电脑上的应用程序,将传感器数据和标签记录在ST开发板上 给定的Python脚本将处理数据集并训练NN模型 在STM32CubeMX.AI工具的帮助下,将神经网络训练好的模型导入到STM32项目中 相关软硬件简介 软硬件需求列表 IoT开发板—B-L475E-IOT01A FP-AI-SENSING1 AI特定功能:训练用的数据集、数据标注、STM32模型转换对应代码 其他功能:使用RTOS实现低功耗、手机应用软件“ST BLE Sensor” 实验1:STM32固件下载和演示测
[单片机]
<font color='red'>STM32</font> AI实验课程—HAR在STM32L4上的实现
STM32-(01):认识ARM
ARM(Advanced RISC Machines)是微处理器行业的一家知名企业,设计了大量的高性能、廉价、低耗能的RISC(Reduced Instruction Set Computer,中文是精简指令集计算机)处理器、相关技术及软件。技术具有性能高、成本低和能耗省的特点。适用于多种领域,比如嵌入控制、消费/教育类多媒体、DSP和移动式应用等。 市场份额 手机处理器90%以上的市场份额 上网本处理器30%的市场份额 平板电脑处理器70%的市场份额 基于ARM技术的微处理器应用约占据了32位嵌入式微处理器80%以上的市场份额。 风靡全球的几大原因: 1、功耗低 2、功能强 3、32位指令集 4、合作伙伴众多 5、产品线丰富
[单片机]
STM32-(01):认识ARM
基于STM32的新型角度测量系统设计
在现代控制系统中,角度测量装置是非常关键的需要高精度的部件,其测量精度直接影响着整个系统的性能和精度。例如施工 升降机上有角度测控机构来控制起降;火箭炮瞄准系统中都有大量的角度传感器,实时检测炮塔偏转角度,以便对火箭炮瞄准进行调整。目前已有的利用的加速度传 感器实现高精度角度测量的研究,主要侧重于单轴的角度测量。本文将重点讨论利用双轴加速传感器ADXL202实现高精度角度测量的软硬件方法。 1 角度测量仪系统硬件方案设计 本角度测量仪采用STM32F107作为数据处理的核心芯片。这是一款低功耗、高速度的32位处理器,拥有Cortex-M3内核。角度测量模块使用的是高精度、低功耗的双轴加速度传感器ADXL202,能将加速度信号转换成
[单片机]
基于<font color='red'>STM32</font>的新型角度测量系统设计
小广播
添点儿料...
无论热点新闻、行业分析、技术干货……
设计资源 培训 开发板 精华推荐

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

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

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