stm32 系统时钟配置

发布者:幸福之路最新更新时间:2018-12-26 来源: eefocus关键字:stm32  系统时钟  配置 手机看文章 扫描二维码
随时随地手机看文章

HSE:72M,HSE:64M,HSI:64M


代码实现:


// 时钟设置

//#define MAINCLOCK_72M     // HSE,外部时钟

//#define MAINCLOCK_64M_EXTERN     // HSE

#define MAINCLOCK_64M_INTERAL      // HSI

 

/** System Clock Configuration

*/

void SystemClock_Config(void)

{

    RCC_OSCInitTypeDef RCC_OscInitStruct;

    RCC_ClkInitTypeDef RCC_ClkInitStruct;

 

    /**Initializes the CPU, AHB and APB busses clocks 

*/

#ifdef MAINCLOCK_72M

RCC_OscInitStruct.OscillatorType = RCC_OSCILLATORTYPE_HSE;

RCC_OscInitStruct.HSEState = RCC_HSE_ON;

RCC_OscInitStruct.HSEPredivValue = RCC_HSE_PREDIV_DIV1;

//RCC_OscInitStruct.HSIState = RCC_HSI_ON;

RCC_OscInitStruct.PLL.PLLState = RCC_PLL_ON;

RCC_OscInitStruct.PLL.PLLSource = RCC_PLLSOURCE_HSE;

RCC_OscInitStruct.PLL.PLLMUL = RCC_PLL_MUL9;   // 72M

#else

#ifdef MAINCLOCK_64M_EXTERN

RCC_OscInitStruct.OscillatorType = RCC_OSCILLATORTYPE_HSE;

RCC_OscInitStruct.HSEState = RCC_HSE_ON;

RCC_OscInitStruct.HSEPredivValue = RCC_HSE_PREDIV_DIV1;

RCC_OscInitStruct.PLL.PLLState = RCC_PLL_ON;

RCC_OscInitStruct.PLL.PLLSource = RCC_PLLSOURCE_HSE;

RCC_OscInitStruct.PLL.PLLMUL = RCC_PLL_MUL8;  // 64M

#else

// MAINCLOCK_64M_INTERAL

RCC_OscInitStruct.OscillatorType = RCC_OSCILLATORTYPE_HSI;

RCC_OscInitStruct.HSICalibrationValue = 16;

RCC_OscInitStruct.HSIState = RCC_HSI_ON;

RCC_OscInitStruct.PLL.PLLState = RCC_PLL_ON;

RCC_OscInitStruct.PLL.PLLSource = RCC_PLLSOURCE_HSI_DIV2;

RCC_OscInitStruct.PLL.PLLMUL = RCC_PLL_MUL16;  // 64M

#endif

#endif

 

 

if (HAL_RCC_OscConfig(&RCC_OscInitStruct) != HAL_OK)

{

Error_Handler();

 

/**Initializes the CPU, AHB and APB busses clocks 

*/

RCC_ClkInitStruct.ClockType = RCC_CLOCKTYPE_HCLK|RCC_CLOCKTYPE_SYSCLK

|RCC_CLOCKTYPE_PCLK1|RCC_CLOCKTYPE_PCLK2;

RCC_ClkInitStruct.SYSCLKSource = RCC_SYSCLKSOURCE_PLLCLK;

RCC_ClkInitStruct.AHBCLKDivider = RCC_SYSCLK_DIV1; // 72M/64M 

#ifdef MAINCLOCK_72M

RCC_ClkInitStruct.APB1CLKDivider = RCC_HCLK_DIV8; // 72 / 8 = 9M

RCC_ClkInitStruct.APB2CLKDivider = RCC_HCLK_DIV4; // 72 / 4 = 18M

#else

RCC_ClkInitStruct.APB1CLKDivider = RCC_HCLK_DIV8;// 64 / 8 = 8M

RCC_ClkInitStruct.APB2CLKDivider = RCC_HCLK_DIV4;// 64 / 4 = 16M

#endif

 

if (HAL_RCC_ClockConfig(&RCC_ClkInitStruct, FLASH_LATENCY_2) != HAL_OK)

{

Error_Handler();

}

 

/**Configure the Systick interrupt time 

*/

HAL_SYSTICK_Config(HAL_RCC_GetHCLKFreq()/1000);

 

/**Configure the Systick 

*/

HAL_SYSTICK_CLKSourceConfig(SYSTICK_CLKSOURCE_HCLK);

 

/* SysTick_IRQn interrupt configuration */

HAL_NVIC_SetPriority(SysTick_IRQn, SysTick_IRQn_PP, 0);

}

 


关键字:stm32  系统时钟  配置 引用地址:stm32 系统时钟配置

上一篇:STM32之RTC原理
下一篇:STM32 中断实现的程序步骤

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

STM32学习——GPIO的操作
写在前面 1.应项目要求,要迅速熟悉stm32的GPIO、串口以及TIM高级定时器(输出PWM) 2.初步了解stm32学习方法以及编程要领(疯狂地赋值粘贴库函数,学会看库函数的函数介绍以及参数选择,注意现在h文件里看函数声明,再goto到相应的函数处) 正文 (一)GPIO的初始化过程 //主要用来点亮LED void LED_GPIO_Config(void) { GPIO_InitTypeDef GPIO_InitStructure; /*使能时钟,去库函数的rcc源文件里找*/ RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOC,ENABLE);
[单片机]
STM32的OTA远程升级
上次发过SD卡的Bootloader离线升级后,应大家的要求,这次就讲一下STM32的OTA远程升级。 OTA又叫空中下载技术,是通过移动通信的空中接口实现对移动终端设备数据进行远程管理的技术,还能提供移动化的新业务下载功能。 要实现OTA功能,至少需要两块设备,分别是服务器与客户端。服务器只有一个,客户端可有多个。服务器通过串口与PC机连接,需要下载的镜像文件存放于PC机,命令执行器给服务器发命令及镜像文件。首先命令执行器控制服务器广播当前可用的镜像文件信息,客户端收到信息后进行对比,若有与自身相匹配的镜像,则向服务器请求数据。服务器收到请求后向命令执行器索取固定大小的块,再点对点传送给客户端。镜像传输完毕后,客户端进行
[单片机]
<font color='red'>STM32</font>的OTA远程升级
STM32 关于复位类型的判断及软件复位
要想查看复位情况可以使用: //****************************************************************************** // 函数名称: RCC_GetFlagStatus // 功能描述: 检查指定的RCC标志设置与否. // 输入参数: RCC_FLAG:要检查的标志. // 这个参数可以是下面的值之一: // - RCC_FLAG_HSIRDY: HIS振荡时钟就绪 // - RCC_FLAG_HSERDY: HSE振荡时钟就绪 // - RCC_FLAG_PLLRDY:
[单片机]
Zonal架构下的动态配置转换
引言:和友人一起交流 Zonal 架构这样未来 5-10 年才会普及的架构到底有多少好处,我觉得这个问题是可以理一理的,特别是之前在 EE 架构方面比较沉默的丰田,也很明确会在 2025 年以后导入 Zonal 架构并且围绕座舱和自动驾驶两个核心的计算平台进行大幅度的改动。特别是今天在读 BMW 的 Florian Oszwald 有关于《Evaluation Methodologies in the Development of Dynamically Reconfigurable Systems in the Automotive Industry》,围绕着动态可重新配置的系统,如果可以满足安全性要求,也就是在 Zonal
[嵌入式]
Zonal架构下的动态<font color='red'>配置</font>转换
嵌入式实时操作系统Salvo的内核分析与配置
摘要:简要介绍Salvo的基本特点;详细分析Salvo的内核管理、运行机制;深入探讨Salvo用户目标代码的生成与配置,并给出不同用户目标代码生成方式下的用户目标代码生成流程。 关键词:嵌入式操作系统 Salvo 内核分析 任务控制块 配置 引言 目前电子产品开发广泛采用以微处理器为核心的电子系统。开发以微处理器为核心的电子系统(以下简称微处理器系统)采用传统的无限循环函数模式,产品的开发周期和稳定性都无法保障,因此,在微处理器系统开发中引入嵌入式实时操作系统RTOS。RTOS的引入消耗了部分系统资源。这部分系统资源对于高档微处理器系统影响不大;对于中小规模微处理器系统,特别是单片机系统,由于RTOS资源的占用,使用户可用
[嵌入式]
[单片机框架][bsp层][nrf51822][nrf51422][nrf51802][bsp_pwm] PWM配置和使用
NRF51系列的PWM是由TIM+PPI+GPIO组成的,下面依次介绍: Programmable Peripheral Interconnect (PPI) The Programmable Peripheral Interconnect (PPI) enables peripherals to interact autonomously with each other using tasks and events independent of the CPU. The PPI allows precise synchronization between peripherals when real-time applicat
[单片机]
[单片机框架][bsp层][nrf51822][nrf51422][nrf51802][bsp_pwm] PWM<font color='red'>配置</font>和使用
基于Xmodem的STM32的IAP升级【转】
实验平台:windows7 + STM32F103ZET6 实验目的:你不需要任何烧录工具,就可以对你的产品进行远程升级代码! 1. Xmodem协议简介 2. IAP编程原理 3. Boot与App程序设计 4. 实验步骤 5. 远程升级应用 1.modem 协议 串行通信的文件传输协议主要有:Xmodem、Ymodem、Zmodem和KERMIT等。 Xmodem 协议传输由接收程序和发送程序完成。先由接收程序发送协商字符,协商校验方式,协商通过之后发送程序就开始发送数据包,接收程序接收到完整的一个数据包之后, 按照协商的方式对数据包进行校验。校验通过之后发送确认字符,然后发送程序继续发送下一包;如果校验失败,则发送否认字
[单片机]
基于Xmodem的<font color='red'>STM32</font>的IAP升级【转】
小广播
添点儿料...
无论热点新闻、行业分析、技术干货……
设计资源 培训 开发板 精华推荐

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

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

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