关于STM32F407时钟MCO1的使用
我们在使用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脚,即可观察到波形。