OpenEdv-开源电子网

 找回密码
 立即注册
正点原子全套STM32/Linux/FPGA开发资料,上千讲STM32视频教程免费下载...
查看: 2804|回复: 2

STM32中 我需要RCC_MCOConfig()库,输出一个2M的时钟,我该怎么配置HSI HSE PLL呢?

[复制链接]

1

主题

4

帖子

0

精华

新手上路

积分
43
金钱
43
注册时间
2016-1-4
在线时间
6 小时
发表于 2017-2-20 20:11:46 | 显示全部楼层 |阅读模式
2金钱
void RCC_Configuration(void)
{
  u32 StartUpCounter = 0, HSEStatus = 0;

  /* SYSCLK, HCLK, PCLK2 and PCLK1 configuration ---------------------------*/   
  /* Enable HSE */   
  RCC->CR |= ((u32)RCC_CR_HSEON);
//  /* Enable HSI */       
//  RCC->CR |= ((u32)RCC_CR_HSION);
//       
//        while(!(RCC->CR>>1));//等待HSI就绪
       
  /* Wait till HSE is ready and if Time out is reached exit */
  do
  {
    HSEStatus = RCC->CR & RCC_CR_HSERDY;
    StartUpCounter++;  
  } while((HSEStatus == 0) && (StartUpCounter != HSE_STARTUP_TIMEOUT));

  if ((RCC->CR & RCC_CR_HSERDY) != RESET)
  {
    HSEStatus = (u32)0x01;
  }
  else
  {
    HSEStatus = (u32)0x00;
  }  

  if (HSEStatus == (u32)0x01)
  {
    /* HCLK = SYSCLK 设置高速总线时钟=系统时钟*/
    RCC->CFGR |= (u32)RCC_CFGR_HPRE_DIV1;

    /* PCLK2 = HCLK 设置低速总线2时钟=高速总线时钟 */
    RCC->CFGR |= (u32)RCC_CFGR_PPRE2_DIV1;

    /* PCLK1 = HCLK 设置低速总线1的时钟=高速时钟的二分频*/
    RCC->CFGR |= (u32)RCC_CFGR_PPRE1_DIV2;

    RCC->CFGR &= (u32)((u32)~(RCC_CFGR_PLLSRC | RCC_CFGR_PLLXTPRE | RCC_CFGR_PLLMULL));
    RCC->CFGR |= (u32)(RCC_CFGR_PLLSRC_HSE  |RCC_CFGR_PLLXTPRE_HSE_Div2| RCC_CFGR_PLLMULL8);                //96MHz  RCC_CFGR_PLLXTPRE_HSE_Div2
               
    /* Enable PLL   使能锁相环*/
    RCC->CR |= RCC_CR_PLLON;

    /* Wait till PLL is ready 等待锁相环输出稳定*/
    while((RCC->CR & RCC_CR_PLLRDY) == 0)
    {
    }

    /* Select PLL as system clock source 将锁相环输出设置为系统时钟 */
    RCC->CFGR &= (u32)((u32)~(RCC_CFGR_SW));
    RCC->CFGR |= (u32)RCC_CFGR_SW_PLL;   

    /* Wait till PLL is used as system clock source   等待校验成功*/
    while ((RCC->CFGR & (u32)RCC_CFGR_SWS) != (u32)0x08)
    {
    }               
  }
       
        Set_USBClock();
       
        /* DMA clock enable */
        RCC_AHBPeriphClockCmd(RCC_AHBPeriph_DMA1, ENABLE);

        /* Enable  GPIOA, GPIOB, GPIOC, USART1, SPI1,AFIO clocks */
        RCC_APB2PeriphClockCmd( RCC_APB2Periph_GPIOA | RCC_APB2Periph_GPIOB | RCC_APB2Periph_GPIOC |
                                                                                                        RCC_APB2Periph_USART1 | RCC_APB2Periph_AFIO | RCC_APB2Periph_SPI1 , ENABLE);
                                                  
        /* Enable TIM2, TIM5 clock, PWR and BKP, USB clock */
        RCC_APB1PeriphClockCmd(RCC_APB1Periph_TIM2 | RCC_APB1Periph_TIM5 | RCC_APB1Periph_PWR | RCC_APB1Periph_BKP | RCC_APB1Periph_USB | RCC_APB1Periph_SPI2, ENABLE);
}
外部晶振是24M,求大神解决

正点原子逻辑分析仪DL16劲爆上市
回复

使用道具 举报

1

主题

4

帖子

0

精华

新手上路

积分
43
金钱
43
注册时间
2016-1-4
在线时间
6 小时
 楼主| 发表于 2017-2-21 09:18:18 | 显示全部楼层
回复

使用道具 举报

1

主题

4

帖子

0

精华

新手上路

积分
43
金钱
43
注册时间
2016-1-4
在线时间
6 小时
 楼主| 发表于 2017-2-21 09:18:29 | 显示全部楼层
自行刷新
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则



关闭

原子哥极力推荐上一条 /2 下一条

正点原子公众号

QQ|手机版|OpenEdv-开源电子网 ( 粤ICP备12000418号-1 )

GMT+8, 2025-8-24 03:17

Powered by OpenEdv-开源电子网

© 2001-2030 OpenEdv-开源电子网

快速回复 返回顶部 返回列表