单片机
返回首页

STM32 RCC实验MCO脚输出时钟波形

2016-10-10 来源:eefocus

一:rcc设置使用内部HSI时钟,SYSclk 64M    MCO输出32M
1:
void RCC_Configuration(void)
{
  ErrorStatus HSEStartUpStatus;  
  /* RCC system reset(for debug purpose) */
  RCC_DeInit();     //??RCC?????÷?è?????±????
 
  /* Enable HSE */
  //RCC_HSEConfig(RCC_HSE_ON);    //?è???????????§??
RCC_HSEConfig(RCC_HSE_OFF);
RCC_HSICmd(ENABLE);                        //??????
  //RCC_HSICmd(DISABLE);                        //??????
  /* Wait till HSE is ready */     //HSE  ?????????§??
  //HSEStartUpStatus = RCC_WaitForHSEStartUp();       //????HSE????
 
       while(RCC_GetFlagStatus(RCC_FLAG_HSIRDY) == RESET)        
        {        
        }
 
 // if(HSEStartUpStatus == SUCCESS)
//  {
    /* HCLK = SYSCLK *///?è??AHB?±??=?????±??    ?¨RCC_SYSCLK_Div1??·?????????
    RCC_HCLKConfig(RCC_SYSCLK_Div1);     
  
    /* PCLK2 = HCLK *///?è??????APB2?±??(×??ó72MHZ)
    RCC_PCLK2Config(RCC_HCLK_Div1);    //RCC_HCLK_Div1   ??·?????RCC_HCLK_Div2  2·???
 
    /* PCLK1 = HCLK/2 *///?è??????APB1?±???¨×??ó36MHZ??
    RCC_PCLK1Config(RCC_HCLK_Div2);
 
    /* Flash 2 wait state */
    FLASH_SetLatency(FLASH_Latency_2);
    /* Enable Prefetch Buffer */
    FLASH_PrefetchBufferCmd(FLASH_PrefetchBuffer_Enable);
 
    /* PLLCLK = 8MHz * 9 = 72 MHz */
    //RCC_PLLConfig(RCC_PLLSource_HSE_Div1, RCC_PLLMul_9);
 
    //?????±????8/2=4M   4*16 = 64        hsi  =  64m  (MAX)
  RCC_PLLConfig(RCC_PLLSource_HSI_Div2 , RCC_PLLMul_16);
 
 
    /* Enable PLL */ 
    RCC_PLLCmd(ENABLE);
 
    /* Wait till PLL is ready */
    while(RCC_GetFlagStatus(RCC_FLAG_PLLRDY) == RESET)
    {
    }
 
    /* Select PLL as system clock source */
    RCC_SYSCLKConfig(RCC_SYSCLKSource_PLLCLK);
 
    /* Wait till PLL is used as system clock source */
    while(RCC_GetSYSCLKSource() != 0x08)
    {
    }
 // }  
}
 
2:设置MCO引脚PA8
  GPIO_InitStructure.GPIO_Pin = GPIO_Pin_8;
  GPIO_InitStructure.GPIO_Mode = GPIO_Mode_AF_PP ;
 GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;  // ×???????????50MHz
  GPIO_Init(GPIOA, &GPIO_InitStructure);
注意: A8引脚使用复用推挽输出模式,我使用推挽输出的时候波形没出来,推挽输出只能输出TTL,复用推挽可以输出时钟波形
 
3:设置MCO模式
RCC_MCOConfig(RCC_MCO_PLLCLK_Div2);  //因为端口最大50M所以要PLL    2分频
 
 
二:rcc设置使用外部HSE时钟,SYSclk 72M    MCO输出36M
只要改变RCC设置即可,其他不变

进入单片机查看更多内容>>
相关视频
  • RISC-V嵌入式系统开发

  • SOC系统级芯片设计实验

  • 云龙51单片机实训视频教程(王云,字幕版)

  • 2022 Digi-Key KOL 系列: 你见过1GHz主频的单片机吗?Teensy 4.1开发板介绍

  • TI 新一代 C2000™ 微控制器:全方位助力伺服及马达驱动应用

  • MSP430电容触摸技术 - 防水Demo演示

精选电路图
  • 家用电源无载自动断电装置的设计与制作

  • 开关电源的基本组成及工作原理

  • 带有短路保护系统的5V直流稳压电源电路图

  • 如何构建一个触摸传感器电路

  • 如何调制IC555振荡器

  • 基于ICL296的大电流开关稳压器电源电路

    相关电子头条文章