STM32的PA.8引腳具有復用功能——時鍾輸出(MCO), 該功能能將STM32內部的時鍾通過PA.8輸出.
操作流程:
1)、設置PA.8為復用AF模式。
RCC_AHB1PeriphClockCmd(RCC_AHB1Periph_GPIOA, ENABLE);
GPIO_InitStructure.GPIO_Pin = GPIO_Pin_8;
GPIO_InitStructure.GPIO_Mode = GPIO_Mode_AF;
GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;
GPIO_InitStructure.GPIO_OType = GPIO_OType_PP;
GPIO_InitStructure.GPIO_PuPd = GPIO_PuPd_NOPULL;
GPIO_Init(GPIOA, &GPIO_InitStructure);
2)、選擇輸出時鍾源。
時鍾的選擇由時鍾配置寄存器(RCC_CFGR)。
GPIO_PinAFConfig(GPIOA, GPIO_PinSource8, GPIO_AF_MCO);
RCC_MCO1Config(RCC_MCO1Source_HSE, RCC_MCO1Div_1);
參數RCC_MCO為要輸出的內部時鍾:
RCC_MCO_NoClock --- 無時鍾輸出
RCC_MCO_SYSCLK --- 輸出系統時鍾(SysCLK)
RCC_MCO_HSI --- 輸出內部高速8MHz的RC振盪器的時鍾(HSI)
RCC_MCO_HSE --- 輸出高速外部時鍾信號(HSE)
RCC_MCO_PLLCLK_Div2 --- 輸出PLL倍頻后的二分頻時鍾(PLLCLK/2)
注:由於STM32 GPIO輸出管腳的最大響應頻率為50MHz,如果輸出頻率超過50MHz,則輸出的波形會失真。
例1:外部振盪器25Mhz。
RCC_MCO1Config(RCC_MCO1Source_HSE, RCC_MCO1Div_1);
輸出時鍾25Mhz。
例2:外部振盪器25Mhz。
RCC_MCO1Config(RCC_MCO1Source_HSE, RCC_MCO1Div_5);
輸出時鍾5Mhz。
例3:內部PLL時鍾168Mhz。
RCC_MCO1Config(RCC_MCO1Source_PLLCLK, RCC_MCO1Div_5);
輸出時鍾33.57Mhz。
例3:內部PLL時鍾168Mhz。
RCC_MCO1Config(RCC_MCO1Source_PLLCLK, RCC_MCO1Div_3);
輸出時鍾55.75Mhz。