@/"...
1> SYSCLK
1.1> 名词解释
HSI: High Speed Internal, 高速内部时钟,由16 MHz RC 振荡器生成;
HSE: High Speed external, 高速外部时钟,由外部晶振产生4~26MHz;
PLL: Phase Locked Loop, 锁相环;
*N: frequency multiplier, 倍频系数;
/P:frequency division,分频系数;
AHB: Advanced High-performance Bus;
APB: Advanced Peripheral Bus;
频率最大值:
AHB > 168MHz;
APB1 > 42MHz;
APB2 > 84MHz;
1.2> Operating conditions
1.3> 标准库_时钟配置
system_stm32f4xx.h
*=============================================================================
* Supported STM32F40xxx/41xxx devices
*-----------------------------------------------------------------------------
* System Clock source | PLL (HSE) //RCC_CFGR[SW]
*-----------------------------------------------------------------------------
* SYSCLK(Hz) | 168000000
*-----------------------------------------------------------------------------
* HCLK(Hz) | 168000000
*-----------------------------------------------------------------------------
* AHB Prescaler | 1
*-----------------------------------------------------------------------------
* APB1 Prescaler | 4
*-----------------------------------------------------------------------------
* APB2 Prescaler | 2
*-----------------------------------------------------------------------------
* HSE Frequency(Hz) | 25000000
*-----------------------------------------------------------------------------
* PLL_M | 25
*-----------------------------------------------------------------------------
* PLL_N | 336
*-----------------------------------------------------------------------------
* PLL_P | 2
*-----------------------------------------------------------------------------
* PLL_Q | 7
*-----------------------------------------------------------------------------
* PLLI2S_N | NA
*-----------------------------------------------------------------------------
* PLLI2S_R | NA
*-----------------------------------------------------------------------------
* I2S input clock | NA
*-----------------------------------------------------------------------------
* VDD(V) | 3.3
*-----------------------------------------------------------------------------
* Main regulator output voltage | Scale1 mode
*-----------------------------------------------------------------------------
* Flash Latency(WS) | 5
*-----------------------------------------------------------------------------
* Prefetch Buffer | ON
*-----------------------------------------------------------------------------
* Instruction cache | ON
*-----------------------------------------------------------------------------
* Data cache | ON
*-----------------------------------------------------------------------------
* Require 48MHz for USB OTG FS, | Disabled
* SDIO and RNG clock |
*-----------------------------------------------------------------------------
*=============================================================================
void SystemInit(void) {};
void SetSysClock(void) {};
SYSCLK = HSE / M * N / P;
168MHz = 25 / 25 * 336 / 2;
168MHz = 8 / 8 * 336 / 2;
1.4> HAL库_时钟配置
/**--------- stm32f4xx_hal_conf.h -----------**/
// 外部时晶振为 25M;
#if !defined (HSE_VALUE)
#define HSE_VALUE ((uint32_t)25000000U) /*!< Value of the External oscillator in Hz */
#endif /* HSE_VALUE */
/**--------- SystemClock_Config()-----------**/
//CubeMx工具生成
// M 配置为25; N 配置为336; P 配置为2;
void SystemClock_Config(void)
{
/**-------- 省略 ------------**/
/** Initializes the RCC Oscillators according to the specified parameters
* in the RCC_OscInitTypeDef structure.
*/
RCC_OscInitStruct.OscillatorType = RCC_OSCILLATORTYPE_HSE;
RCC_OscInitStruct.HSEState = RCC_HSE_ON;
RCC_OscInitStruct.PLL.PLLState = RCC_PLL_ON;
RCC_OscInitStruct.PLL.PLLSource = RCC_PLLSOURCE_HSE;
RCC_OscInitStruct.PLL.PLLM = 25; // M 配置为25
RCC_OscInitStruct.PLL.PLLN = 336; // N 配置为336
RCC_OscInitStruct.PLL.PLLP = RCC_PLLP_DIV2; // #define RCC_PLLP_DIV2 0x00000002U
/**-------- 省略 ------------**/
}
1.5> 定时器时钟
APB1 Timer Clock 与 APB2 Timer Clock 对APB1时钟和APB2时钟X2倍频;
2> I2S
I2S: Inte IC Sound,集成电路内置音频总线;
3> RTC / IDWG
LSI: Low Speed Internal, 低速内部时钟,由32KHz RC 振荡器生成;
LSE: Low Speed external, 高速外部时钟,由外部晶振产生32.768KHz;
RTC: Real-time clock,实时时钟;
IWDG: Independent watchdog,看门狗;
4> 输出时钟
MCO:Microcontroller Clock Output