野火电子论坛

 找回密码
 注册

QQ登录

只需一步,快速开始

楼主: fire

【F1-RCC】STM32使用HSE、HSI作为系统时钟的来源

  [复制链接]
发表于 2016-5-8 09:34:25 | 显示全部楼层
  这是什么
回复 支持 反对

使用道具 举报

发表于 2016-5-9 11:21:28 | 显示全部楼层
需要用到内部时钟编程
回复 支持 反对

使用道具 举报

发表于 2016-5-13 16:03:31 | 显示全部楼层
谢谢火哥谢谢火哥
回复 支持 反对

使用道具 举报

发表于 2016-6-12 11:56:19 | 显示全部楼层
正在学习中  谢谢野火
回复 支持 反对

使用道具 举报

 楼主| 发表于 2016-6-12 11:59:03 | 显示全部楼层
飞飞话 发表于 2016-5-9 11:21
需要用到内部时钟编程

最好不要用内部的啦,一个精度有偏差,二来最高只能到64M
回复 支持 反对

使用道具 举报

发表于 2016-7-27 12:59:15 | 显示全部楼层
来看看,使用HSE时,设置系统时钟的步骤
回复 支持 反对

使用道具 举报

发表于 2016-8-31 15:32:17 | 显示全部楼层
具体操作如何进行??
回复 支持 反对

使用道具 举报

发表于 2016-9-1 16:16:37 | 显示全部楼层
8M HSI 除2变成4M PLLsrc选 HSI分频后  PLLMUL 16分频变成64M时钟
回复 支持 反对

使用道具 举报

发表于 2016-9-2 07:33:12 | 显示全部楼层
第三方第三方第三方的
回复 支持 反对

使用道具 举报

发表于 2016-9-23 15:33:47 | 显示全部楼层
学习学习静安寺都放假哦下
回复 支持 反对

使用道具 举报

发表于 2016-10-12 17:28:05 | 显示全部楼层
谢谢火大 谢谢火大  谢谢火大   谢谢火大   谢谢火大    谢谢火大   谢谢火大谢谢火大  谢谢火大谢谢火大
回复 支持 反对

使用道具 举报

发表于 2016-10-13 09:53:34 | 显示全部楼层
强势强势强势强势强势强势强势强势强势强势强势强势强势强势强势强势强势强势强势强势强势强势强势
回复 支持 反对

使用道具 举报

发表于 2016-10-15 15:42:43 | 显示全部楼层
..........................
回复

使用道具 举报

发表于 2016-10-16 22:47:03 | 显示全部楼层

支持火哥!!每日一题赞
回复 支持 反对

使用道具 举报

发表于 2016-10-17 07:32:23 | 显示全部楼层
【F1-RCC】STM32使用HSE、HSI作为系统时钟的来源
回复 支持 反对

使用道具 举报

发表于 2016-11-3 11:51:33 | 显示全部楼层
看看,我要看看,,就是看看
回复 支持 反对

使用道具 举报

发表于 2016-11-4 16:52:47 | 显示全部楼层
学习了  加油        
回复 支持 反对

使用道具 举报

发表于 2016-11-8 12:53:44 | 显示全部楼层
我个人感觉学好任何一款单片机  第一步必须学好的就是时钟的配置  看不懂时钟树  搞不好时钟配置的人永远玩不转单片机
回复 支持 反对

使用道具 举报

发表于 2016-11-17 22:01:58 | 显示全部楼层
kankand ,xiexie
回复 支持 反对

使用道具 举报

发表于 2016-11-18 09:06:30 | 显示全部楼层
楼主V587不解释
回复 支持 反对

使用道具 举报

发表于 2016-11-27 18:45:59 来自手机 | 显示全部楼层
66666666 666
回复 支持 反对

使用道具 举报

发表于 2016-12-1 17:18:59 | 显示全部楼层
天天向上,天天学习!
回复 支持 反对

使用道具 举报

发表于 2017-2-9 17:28:17 | 显示全部楼层
火哥,在使用HSE配置时钟时候,在main函数之前,系统已经是72M了为什么还要用HSE_SetSysClock(RCC_PLLMul_9);
这个语句把时钟设为72M,感觉这不是多此一举吗?求解答@fier
回复 支持 反对

使用道具 举报

发表于 2017-2-10 15:00:12 | 显示全部楼层
1111111111
回复 支持 反对

使用道具 举报

发表于 2017-2-24 19:53:57 | 显示全部楼层
好好学习天天向上
回复 支持 反对

使用道具 举报

发表于 2017-3-6 18:25:11 | 显示全部楼层
没事看看可以复习一下,不错
回复 支持 反对

使用道具 举报

发表于 2017-3-6 22:29:57 | 显示全部楼层
HSI一开始为8M,下来要/2,为4M,最高pll为*16,为64M
回复 支持 反对

使用道具 举报

发表于 2017-3-7 07:50:31 | 显示全部楼层
来学习!!
回复

使用道具 举报

发表于 2017-3-28 10:01:27 | 显示全部楼层
感谢火哥的帖子
回复 支持 反对

使用道具 举报

发表于 2017-3-28 10:18:30 来自手机 | 显示全部楼层
1234567890
回复 支持 反对

使用道具 举报

发表于 2017-3-28 10:48:12 | 显示全部楼层
火哥,今天用你的例子跑了下,公司因为硬件工程偷懒,把8M晶振给省略了,在systeminit函数中把HSE配置给去掉了,在main函数中直接使用内部时钟初始化
void setSysClockHSI (unsigned short freq)
{
        __IO uint32_t HSIStartUpStatus = 0;
        uint32_t pllmul = 0;

           // 把RCC外设初始化成复位状态
          RCC_DeInit();

          //使能HSI
    RCC_HSICmd(ENABLE);
        
          // 等待 HSI 就绪
    HSIStartUpStatus = RCC->CR & RCC_CR_HSIRDY;
        
    // 只有 HSI就绪之后则继续往下执行
          if (HSIStartUpStatus == RCC_CR_HSIRDY)
          {
                // 这两句是操作FLASH闪存用到的,如果不操作FLASH的话,这两个注释掉也没影响
            // 使能FLASH 预存取缓冲区
            FLASH_PrefetchBufferCmd(FLASH_PrefetchBuffer_Enable);

            // SYSCLK周期与闪存访问时间的比例设置,这里统一设置成2
                // 设置成2的时候,SYSCLK高于48M也可以工作,如果设置成0或者1的时候,
                // 如果配置的SYSCLK超出了范围的话,则会进入硬件错误,程序就死了
                // 0:0 < SYSCLK <= 24M
                // 1:24< SYSCLK <= 48M
                // 2:48< SYSCLK <= 72M
            FLASH_SetLatency(FLASH_Latency_2);

            // AHB预分频因子设置为1分频,HCLK = SYSCLK
            RCC_HCLKConfig(RCC_SYSCLK_Div1);
  
            // APB2预分频因子设置为1分频,PCLK2 = HCLK
            RCC_PCLK2Config(RCC_HCLK_Div1);

            // APB1预分频因子设置为2分频,PCLK1 = HCLK/2
            RCC_PCLK1Config(RCC_HCLK_Div2);
               
//-----------------设置各种频率主要就是在这里设置-------------------//
    // 设置PLL时钟来源为HSE,设置PLL倍频因子
                // PLLCLK = 4MHz * pllmul
            //pllmul = freq / 4;
        RCC_PLLConfig(RCC_PLLSource_HSI_Div2,RCC_PLLMul_12);
//------------------------------------------------------------------//

        // 开启PLL
        RCC_PLLCmd(ENABLE);

        // 等待 PLL稳定
        while (RCC_GetFlagStatus(RCC_FLAG_PLLRDY) == RESET)
        {
        }

        // 当PLL稳定之后,把PLL时钟切换为系统时钟SYSCLK
        RCC_SYSCLKConfig(RCC_SYSCLKSource_PLLCLK);

        // 读取时钟切换状态位,确保PLLCLK被选为系统时钟
        while (RCC_GetSYSCLKSource() != 0x08)
        {
        }
  }
  else
  { // 如果HSI开启失败,那么程序就会来到这里,用户可在这里添加出错的代码处理
    // 当HSE开启失败或者故障的时候,单片机会自动把HSI设置为系统时钟,HSI是内部的高速时钟,8MHZ
    while (1)
    {
    }
  }
}
配置时会卡在
// 等待 PLL稳定
        while (RCC_GetFlagStatus(RCC_FLAG_PLLRDY) == RESET)
        {
        }
回复 支持 反对

使用道具 举报

发表于 2017-4-2 19:08:05 | 显示全部楼层
感谢分享, 正好需要。
回复 支持 反对

使用道具 举报

发表于 2017-4-21 22:12:40 来自手机 | 显示全部楼层
感谢火锅  学习ing
回复 支持 反对

使用道具 举报

发表于 2017-4-25 09:26:26 | 显示全部楼层
好东西来学习下
回复 支持 反对

使用道具 举报

发表于 2017-4-25 19:26:12 | 显示全部楼层
顶一个   才开始用F4板子学习  火哥 USB这个模块怎么去学习
回复 支持 反对

使用道具 举报

发表于 2017-5-4 16:41:30 | 显示全部楼层
谢谢分享!!!!!!!!!
回复

使用道具 举报

发表于 2017-5-4 21:44:51 | 显示全部楼层
学习学习
回复

使用道具 举报

发表于 2017-5-7 22:20:00 | 显示全部楼层
学习,学习,深入研究底层设计
回复 支持 反对

使用道具 举报

发表于 2017-5-27 18:22:12 | 显示全部楼层
怎么设的。要用
回复 支持 反对

使用道具 举报

发表于 2017-7-13 13:45:18 | 显示全部楼层
学习一下   
回复 支持 反对

使用道具 举报

发表于 2017-7-18 12:44:41 | 显示全部楼层
如何设置不用倍频
回复 支持 反对

使用道具 举报

发表于 2017-7-23 17:43:17 | 显示全部楼层
谢谢分享              
回复 支持 反对

使用道具 举报

发表于 2017-7-24 10:35:42 | 显示全部楼层
谢谢分享。。。。。。。。。。
回复

使用道具 举报

发表于 2017-7-25 10:03:55 | 显示全部楼层
设置成72Mhz
回复 支持 反对

使用道具 举报

发表于 2017-7-27 09:04:09 | 显示全部楼层
感谢火哥,学习啦!!!
回复 支持 反对

使用道具 举报

发表于 2017-7-30 13:06:11 | 显示全部楼层
看看看看看看看看看看看看看看看看看看看看看看看看看看看看看看看
回复 支持 反对

使用道具 举报

发表于 2017-7-30 16:09:56 | 显示全部楼层
学习到了,顶顶顶!!!
回复 支持 反对

使用道具 举报

发表于 2017-8-9 14:05:55 | 显示全部楼层
回复

使用道具 举报

发表于 2017-8-31 14:22:39 | 显示全部楼层
内部高速晶振最高为8m ,经过2分频后,得4mhz,经锁相环后,在经倍频因子16倍频,得64m
回复 支持 反对

使用道具 举报

 楼主| 发表于 2017-8-31 14:42:05 | 显示全部楼层
奔跑的阿蛋 发表于 2017-2-9 17:28
火哥,在使用HSE配置时钟时候,在main函数之前,系统已经是72M了为什么还要用HSE_SetSysClock(RCC_PLLMul_9 ...

只是为了测试而已
回复 支持 反对

使用道具 举报

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

本版积分规则

联系站长|手机版|野火电子官网|野火淘宝店铺|野火电子论坛 ( 粤ICP备14069197号 ) 大学生ARM嵌入式2群

GMT+8, 2024-4-24 03:00 , Processed in 0.117834 second(s), 20 queries , Gzip On.

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

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