STM32的PA.8引腳具備複用功能——時鐘輸出(MCO), 該功能能將STM32內部的時鐘經過PA.8輸出.blog
操做流程:ip
1)、設置PA.8爲複用AF模式。get
RCC_AHB1PeriphClockCmd(RCC_AHB1Periph_GPIOA, ENABLE);it
GPIO_InitStructure.GPIO_Pin = GPIO_Pin_8;配置
GPIO_InitStructure.GPIO_Mode = GPIO_Mode_AF;im
GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;d3
GPIO_InitStructure.GPIO_OType = GPIO_OType_PP;img
GPIO_InitStructure.GPIO_PuPd = GPIO_PuPd_NOPULL;co
GPIO_Init(GPIOA, &GPIO_InitStructure);d3
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。