关于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脚,即可观察到波形。

 

posted @ 2016-05-04 10:18  XiaoTanGee  阅读(6361)  评论(0编辑  收藏  举报