OpenEdv-开源电子网

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

STM32F4x,使用内部RC,怎么设置倍频

[复制链接]

6

主题

27

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
203
金钱
203
注册时间
2022-10-24
在线时间
39 小时
发表于 2022-11-16 09:44:50 | 显示全部楼层 |阅读模式
1金钱
本帖最后由 willie1040 于 2022-11-16 14:04 编辑

如题,求各位大神赐教
void SystemInitHSI (void)
{
        u8 i;
        /*********************************
        将RCC时钟配置重置为默认重置状态
会改变的功能:       
        *-HSI 开启并用作系统时钟源
  *-HSE,PLL和PLLI2S关闭
  *-AHB,APB1和APB2预分频器设置为1。
  *-CSS,MCO1和MCO2关闭
  *-禁用所有中断
不会改变的功能:
        *-外围时钟
  *-LSI,LSE和RTC时钟
*********************************/
  RCC_DeInit();//将外设RCC寄存器重设为缺省值
  RCC_HSICmd(ENABLE);//是能HSI

  while(RCC_GetFlagStatus(RCC_FLAG_HSIRDY) == RESET)//等待HSI使能成功
  {
  }        
          /********************************************
        配置AHB时钟(HCLK):HCLK=84MHZ
        *此参数可以是下列值之一:
        RCC_SYSCLK_Div1:AHB时钟= SYSCLK
        RCC_SYSCLK_Div2:AHB时钟= SYSCLK / 2
        RCC_SYSCLK_Div4:AHB时钟= SYSCLK / 4
        RCC_SYSCLK_Div8:AHB时钟= SYSCLK / 8
        RCC_SYSCLK_Div16:AHB时钟= SYSCLK / 16
        RCC_SYSCLK_Div64:AHB时钟= SYSCLK / 64
        RCC_SYSCLK_Div128:AHB时钟= SYSCLK / 128
        RCC_SYSCLK_Div256:AHB时钟= SYSCLK / 256
        RCC_SYSCLK_Div512:AHB时钟= SYSCLK / 512
        **********************************************/
        RCC_HCLKConfig(RCC_SYSCLK_Div1);
        /********************************************
        配置低速APB时钟(PCLK1)CLK1=84/2=42MHZ
        *此参数可以是下列值之一:
        RCC_HCLK_Div1:APB1时钟= HCLK
        RCC_HCLK_Div2:APB1时钟= HCLK / 2
        RCC_HCLK_Div4:APB1时钟= HCLK / 4
        RCC_HCLK_Div8:APB1时钟= HCLK / 8
        RCC_HCLK_Div16:APB1时钟= HCLK /16
        **********************************************/
        RCC_PCLK1Config(RCC_HCLK_Div2);
        /********************************************
        配置低速APB时钟(PCLK2)CLK2=84/1=84MHZ
        *此参数可以是下列值之一:
        RCC_HCLK_Div1:APB1时钟= HCLK
        RCC_HCLK_Div2:APB1时钟= HCLK / 2
        RCC_HCLK_Div4:APB1时钟= HCLK / 4
        RCC_HCLK_Div8:APB1时钟= HCLK / 8
        RCC_HCLK_Div16:APB1时钟= HCLK /16
        **********************************************/
        RCC_PCLK2Config(RCC_HCLK_Div1);
        /********************************************
        配置主PLL时钟源:
        外部高速时钟,PLLM=8,PLLN=336,PLLP=4,PLLQ=7
        PLL_VCO  = (HSE / PLL_M)* PLL_N
        SYSCLK  =  PLL_VCO/ PLL_P
        USB OTG FS 时钟        =PLL_VCO/ PLL_Q
        PLL(输出作SYSCLK)=8MHz * N/ (M*P)=8MHz* 336 /(8*4) = 84MHz
        **********************************************/
        //RCC_PLLConfig(RCC_PLLSource_HSI,16,192,6,7);//8M
        RCC_PLLConfig(RCC_PLLSource_HSI,8,216,6,7);//72M
//        RCC_PLLConfig(RCC_PLLSource_HSI,16,384,6,8);//64M
//        RCC_PLLConfig(RCC_PLLSource_HSI,16,256,4,8);//64M
        /********************************************
        使能主PLL时钟源:
        启用主PLL后,应用软件应等待PLLRDY标志置位,
        表示PLL时钟稳定并且可以用作系统时钟源
        **********************************************/
        RCC_PLLCmd(ENABLE);
        while(RCC_GetFlagStatus(RCC_FLAG_PLLRDY) == RESET)
        {

        }
        /********************************************
        配置系统时钟(SYSCLK):这里选择PLL作系统时钟
        SYSCLK=PLL=84MHZ
        *此参数可以是下列值之一:
        RCC_SYSCLKSource_HSI:选择HSI作为系统时钟源
        RCC_SYSCLKSource_HSE:选择HSE作为系统时钟源
        RCC_SYSCLKSource_PLLCLK:选择PLL作为系统时钟源
        **********************************************/
        RCC_SYSCLKConfig(RCC_SYSCLKSource_PLLCLK);

/*
        返回用作系统时钟的时钟源
        The clock source used as system clock. The returned value can be one
        of the following:
  *              - 0x00: HSI used as system clock
  *              - 0x04: HSE used as system clock
  *              - 0x08: PLL used as system clock
        */
    while(RCC_GetSYSCLKSource() != 0x08)
    {
                        i =RCC_GetSYSCLKSource();
    }
}                       


源码如上,调试模式,在最后的while语句 while(RCC_GetSYSCLKSource() != 0x08)  就跑不下去了   

最佳答案

查看完整内容[请看2#楼]

你啥都不干,默认就是用的内部HSI的,然后你设置倍频即可。不过HSI倍频系数不能太高,具体看说明
正点原子逻辑分析仪DL16劲爆上市
回复

使用道具 举报

530

主题

11万

帖子

34

精华

管理员

Rank: 12Rank: 12Rank: 12

积分
165371
金钱
165371
注册时间
2010-12-1
在线时间
2110 小时
发表于 2022-11-16 09:44:51 | 显示全部楼层
你啥都不干,默认就是用的内部HSI的,然后你设置倍频即可。不过HSI倍频系数不能太高,具体看说明
回复

使用道具 举报

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

本版积分规则



关闭

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

正点原子公众号

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

GMT+8, 2025-2-24 23:47

Powered by OpenEdv-开源电子网

© 2001-2030 OpenEdv-开源电子网

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