STM32时钟文件

本文档详细介绍了STM32F4xx RCC(复用功能时钟控制器)头文件`stm32f4xx_rcc.h`中的结构、常量定义和函数原型,包括HSE、HSE、PLL、系统时钟源、AHB和APB总线时钟频率配置等关键函数,为STM32时钟系统配置提供参考。
摘要由CSDN通过智能技术生成

以下内容在stm32f4xx_rcc.h内

[cpp]  view plain  copy
  1. /** 
  2.   ****************************************************************************** 
  3.   * @file    stm32f4xx_rcc.h 
  4.   * @author  MCD Application Team 
  5.   * @version V1.5.1 
  6.   * @date    22-May-2015 
  7.   * @brief   This file contains all the functions prototypes for the RCC firmware library.   
  8.   ****************************************************************************** 
  9.   * @attention 
  10.   * 
  11.   * <h2><center>&copy; COPYRIGHT 2015 STMicroelectronics</center></h2> 
  12.   * 
  13.   * Licensed under MCD-ST Liberty SW License Agreement V2, (the "License"); 
  14.   * You may not use this file except in compliance with the License. 
  15.   * You may obtain a copy of the License at: 
  16.   * 
  17.   *        http://www.st.com/software_license_agreement_liberty_v2 
  18.   * 
  19.   * Unless required by applicable law or agreed to in writing, software  
  20.   * distributed under the License is distributed on an "AS IS" BASIS,  
  21.   * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 
  22.   * See the License for the specific language governing permissions and 
  23.   * limitations under the License. 
  24.   * 
  25.   ****************************************************************************** 
  26.   */  
  27.   
  28. /* Define to prevent recursive inclusion -------------------------------------*/  
  29. #ifndef __STM32F4xx_RCC_H  
  30. #define __STM32F4xx_RCC_H  
  31.   
  32. #ifdef __cplusplus  
  33.  extern "C" {  
  34. #endif  
  35.   
  36. /* Includes ------------------------------------------------------------------*/  
  37. #include "stm32f4xx.h"  
  38.   
  39. /** @addtogroup STM32F4xx_StdPeriph_Driver 
  40.   * @{  
  41.   */  
  42.   
  43. /** @addtogroup RCC 
  44.   * @{  
  45.   */   
  46.   
  47. /* Exported types ------------------------------------------------------------*/  
  48. typedef struct  
  49. {  
  50.   uint32_t SYSCLK_Frequency; /*!<  SYSCLK clock frequency expressed in Hz */  
  51.   uint32_t HCLK_Frequency;   /*!<  HCLK clock frequency expressed in Hz   */  
  52.   uint32_t PCLK1_Frequency;  /*!<  PCLK1 clock frequency expressed in Hz  */  
  53.   uint32_t PCLK2_Frequency;  /*!<  PCLK2 clock frequency expressed in Hz  */  
  54. }RCC_ClocksTypeDef;  
  55.   
  56. /* Exported constants --------------------------------------------------------*/  
  57.   
  58. /** @defgroup RCC_Exported_Constants 
  59.   * @{  
  60.   */  
  61.     
  62. /** @defgroup RCC_HSE_configuration  
  63.   * @{  
  64.   */  
  65. #define RCC_HSE_OFF                      ((uint8_t)0x00)  
  66. #define RCC_HSE_ON                       ((uint8_t)0x01)  
  67. #define RCC_HSE_Bypass                   ((uint8_t)0x05)  
  68. #define IS_RCC_HSE(HSE) (((HSE) == RCC_HSE_OFF) || ((HSE) == RCC_HSE_ON) || \  
  69.                          ((HSE) == RCC_HSE_Bypass))  
  70. /** 
  71.   * @} 
  72.   */   
  73.   
  74. /** @defgroup RCC_LSE_Dual_Mode_Selection 
  75.   * @{  
  76.   */  
  77. #define RCC_LSE_LOWPOWER_MODE           ((uint8_t)0x00)  
  78. #define RCC_LSE_HIGHDRIVE_MODE          ((uint8_t)0x01)  
  79. #define IS_RCC_LSE_MODE(MODE)           (((MODE) == RCC_LSE_LOWPOWER_MODE) || \  
  80.                                          ((MODE) == RCC_LSE_HIGHDRIVE_MODE))  
  81. /** 
  82.   * @} 
  83.   */  
  84.   
  85. /** @defgroup RCC_PLLSAIDivR_Factor 
  86.   * @{  
  87.   */  
  88. #define RCC_PLLSAIDivR_Div2                ((uint32_t)0x00000000)  
  89. #define RCC_PLLSAIDivR_Div4                ((uint32_t)0x00010000)  
  90. #define RCC_PLLSAIDivR_Div8                ((uint32_t)0x00020000)  
  91. #define RCC_PLLSAIDivR_Div16               ((uint32_t)0x00030000)  
  92. #define IS_RCC_PLLSAI_DIVR_VALUE(VALUE) (((VALUE) == RCC_PLLSAIDivR_Div2) ||\  
  93.                                         ((VALUE) == RCC_PLLSAIDivR_Div4)  ||\  
  94.                                         ((VALUE) == RCC_PLLSAIDivR_Div8)  ||\  
  95.                                         ((VALUE) == RCC_PLLSAIDivR_Div16))  
  96. /** 
  97.   * @} 
  98.   */  
  99.   
  100. /** @defgroup RCC_PLL_Clock_Source  
  101.   * @{  
  102.   */  
  103. #define RCC_PLLSource_HSI                ((uint32_t)0x00000000)  
  104. #define RCC_PLLSource_HSE                ((uint32_t)0x00400000)  
  105. #define IS_RCC_PLL_SOURCE(SOURCE) (((SOURCE) == RCC_PLLSource_HSI) || \  
  106.                                    ((SOURCE) == RCC_PLLSource_HSE))  
  107. #define IS_RCC_PLLM_VALUE(VALUE) ((VALUE) <= 63)  
  108. #define IS_RCC_PLLN_VALUE(VALUE) ((192 <= (VALUE)) && ((VALUE) <= 432))  
  109. #define IS_RCC_PLLP_VALUE(VALUE) (((VALUE) == 2) || ((VALUE) == 4) || ((VALUE) == 6) || ((VALUE) == 8))  
  110. #define IS_RCC_PLLQ_VALUE(VALUE) ((4 <= (VALUE)) && ((VALUE) <= 15))  
  111. #if defined(STM32F446xx)  
  112. #define IS_RCC_PLLR_VALUE(VALUE) ((2 <= (VALUE)) && ((VALUE) <= 7))  
  113. #endif /* STM32F446xx */  
  114.   
  115. #define IS_RCC_PLLI2SN_VALUE(VALUE) ((192 <= (VALUE)) && ((VALUE) <= 432))  
  116. #define IS_RCC_PLLI2SR_VALUE(VALUE) ((2 <= (VALUE)) && ((VALUE) <= 7))  
  117. #define IS_RCC_PLLI2SM_VALUE(VALUE) ((VALUE) <= 63)  
  118. #define IS_RCC_PLLI2SQ_VALUE(VALUE) ((2 <= (VALUE)) && ((VALUE) <= 15))  
  119. #if defined(STM32F446xx)  
  120. #define IS_RCC_PLLI2SP_VALUE(VALUE) (((VALUE) == 2) || ((VALUE) == 4) || ((VALUE) == 6) || ((VALUE) == 8))  
  121. #define IS_RCC_PLLSAIM_VALUE(VALUE) ((VALUE) <= 63)  
  122. #endif /* STM32F446xx */  
  123. #define IS_RCC_PLLSAIN_VALUE(VALUE) ((49 <= (VALUE)) && ((VALUE) <= 432))  
  124. #if defined(STM32F446xx)  
  125. #define IS_RCC_PLLSAIP_VALUE(VALUE) (((VALUE) == 2) || ((VALUE) == 4) || ((VALUE) == 6) || ((VALUE) == 8))  
  126. #endif /* STM32F446xx */  
  127. #define IS_RCC_PLLSAIQ_VALUE(VALUE) ((2 <= (VALUE)) && ((VALUE) <= 15))  
  128. #define IS_RCC_PLLSAIR_VALUE(VALUE) ((2 <= (VALUE)) && ((VALUE) <= 7))    
  129.   
  130. #define IS_RCC_PLLSAI_DIVQ_VALUE(VALUE) ((1 <= (VALUE)) && ((VALUE) <= 32))  
  131. #define IS_RCC_PLLI2S_DIVQ_VALUE(VALUE) ((1 <= (VALUE)) && ((VALUE) <= 32))  
  132. /** 
  133.   * @} 
  134.   */   
  135.     
  136. /** @defgroup RCC_System_Clock_Source  
  137.   * @{  
  138.   */  
  139.   
  140. #if defined(STM32F446xx)  
  141. #define RCC_SYSCLKSource_HSI             ((uint32_t)0x00000000)  
  142. #define RCC_SYSCLKSource_HSE             ((uint32_t)0x00000001)  
  143. #define RCC_SYSCLKSource_PLLPCLK         ((uint32_t)0x00000002)  
  144. #define RCC_SYSCLKSource_PLLRCLK         ((uint32_t)0x00000003)  
  145. #define IS_RCC_SYSCLK_SOURCE(SOURCE) (((SOURCE) == RCC_SYSCLKSource_HSI) || \  
  146.                                       ((SOURCE) == RCC_SYSCLKSource_HSE) || \  
  147.                                       ((SOURCE) == RCC_SYSCLKSource_PLLPCLK) || \  
  148.                                       ((SOURCE) == RCC_SYSCLKSource_PLLRCLK))  
  149. /* Add legacy definition */  
  150. #define  RCC_SYSCLKSource_PLLCLK    RCC_SYSCLKSource_PLLPCLK    
  151. #endif /* STM32F446xx */  
  152.   
  153. #if defined(STM32F40_41xxx) || defined(STM32F427_437xx) || defined(STM32F429_439xx) || defined(STM32F401xx) || defined(STM32F411xE)  
  154. #define RCC_SYSCLKSource_HSI             ((uint32_t)0x00000000)  
  155. #define RCC_SYSCLKSource_HSE             ((uint32_t)0x00000001)  
  156. #define RCC_SYSCLKSource_PLLCLK          ((uint32_t)0x00000002)  
  157. #define IS_RCC_SYSCLK_SOURCE(SOURCE) (((SOURCE) == RCC_SYSCLKSource_HSI) || \  
  158.                                       ((SOURCE) == RCC_SYSCLKSource_HSE) || \  
  159.                                       ((SOURCE) == RCC_SYSCLKSource_PLLCLK))  
  160. #endif /* STM32F40_41xxx || STM32F427_437xx || STM32F429_439xx || STM32F401xx || STM32F411xE */   
  161. /** 
  162.   * @} 
  163.   */   
  164.     
  165. /** @defgroup RCC_AHB_Clock_Source 
  166.   * @{  
  167.   */  
  168. #define RCC_SYSCLK_Div1                  ((uint32_t)0x00000000)  
  169. #define RCC_SYSCLK_Div2                  ((uint32_t)0x00000080)  
  170. #define RCC_SYSCLK_Div4                  ((uint32_t)0x00000090)  
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值