我們在使用STM32F407時,有時需要對外部器件提供MHz級的時鍾信號,這使得我們非常頭疼,如果使用定時器來實現的話,那么MCU就不用干別的了,怎么辦呢?我們可以使用STM32F407的時鍾信號輸出。
其中STM32F407的時鍾系統,不再介紹,請參考STM32F407使用手冊;
下面就以MCO1為例,來輸出8MHz頻率的方波,MCO1與PA.8共用一個引腳;
晶振采用8MHz,這樣系統時鍾經過倍頻后為168MHz,其中HSI經過分頻后可得到16MHz的頻率,我們采用此信號,經過2分頻后輸出8MHz的時鍾信號,當然,我們也可以采用其他信號來產生其他的頻率。
代碼如下:
void Mco1_8MHz_Init(void)
{
GPIO_InitTypeDef GPIO_InitStructure;
RCC_AHB1PeriphClockCmd(RCC_AHB1Periph_GPIOA, ENABLE);//使能PA
GPIO_InitStructure.GPIO_Pin = GPIO_Pin_8;//PA8
GPIO_InitStructure.GPIO_Mode = GPIO_Mode_AF;//復用功能開啟
GPIO_InitStructure.GPIO_OType = GPIO_OType_PP;//推挽輸出
GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;//50MHz
GPIO_Init(GPIOA, &GPIO_InitStructure); 、
RCC_MCO1Config(RCC_MCO1Source_HSI,RCC_MCO1Div_2); //配置時鍾為HSI,16M 2分頻
}
配置好后,只需完成初始化即可,使用示波器觀察PA8腳,即可觀察到波形。