8805|16

72

帖子

0

TA的资源

一粒金砂(初级)

楼主
 

STM32不能用11.0592的晶振? [复制链接]

我的芯片是STM32F101RBT6,接外部的11.0592的晶振后程序可以运行,但是在调试窗口中看到的OSC的频率还是8M的,并且通过串口发送出去的数据也不正确。这是什么原因呢?
明明我都把HSI关掉了,程序也能运行,这说明外部晶振也已经运行了啊,但是为什么MDK显示的确是8M呢?

1111.JPG (97.67 KB)

1111.JPG

此帖出自stm32/stm8论坛

最新回复

                                 呵呵,我也出现过这种情况。  详情 回复 发表于 2009-12-3 15:28
点赞 关注
 

回复
举报

87

帖子

0

TA的资源

一粒金砂(初级)

沙发
 
高手帮我看一下设置的哪里有问题呢?
我都换成12M的晶振了,但是MDK中还是显示的OSC为8M。崩溃啊。。。。。。。
此帖出自stm32/stm8论坛
 
 

回复

79

帖子

0

TA的资源

一粒金砂(初级)

板凳
 
这么一点困难就要崩溃啦,神经太脆弱了吧?

改变外部时钟频率后,还要相应地改变程序中的参数,软件不会自动检测晶振频率的。

以前有很多这种帖子,你找找看。
此帖出自stm32/stm8论坛
 
 

回复

84

帖子

0

TA的资源

一粒金砂(初级)

4
 
呵呵,谢谢版主,我忙活了差不多一下午了,还没搞定。
以下是我程序中的RCC配置代码
/* Enable HSE */
  RCC_HSEConfig(RCC_HSE_ON);

  /* Wait till HSE is ready */
  HSEStartUpStatus = RCC_WaitForHSEStartUp();

  if(HSEStartUpStatus == SUCCESS)
  {
    /* Enable Prefetch Buffer */
    FLASH_PrefetchBufferCmd(FLASH_PrefetchBuffer_Enable);

    /* Flash 2 wait state */
    FLASH_SetLatency(FLASH_Latency_2);
       
    /* HCLK = SYSCLK */
    RCC_HCLKConfig(RCC_SYSCLK_Div1);
  
    /* PCLK2 = HCLK */
    RCC_PCLK2Config(RCC_HCLK_Div1);

    /* PCLK1 = HCLK/2 */
    RCC_PCLK1Config(RCC_HCLK_Div2);

    /* PLLCLK = 11.0592MHz * 3 = 33.1776 MHz */
    RCC_PLLConfig(RCC_PLLSource_HSE_Div1, RCC_PLLMul_3);

    /* 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)
    {
    }
        RCC->CR &= ~(u32)0x00000001;//
  }
除了这些参数,还需要设置别的什么吗?软件中在哪里修改晶振频率呢?
此帖出自stm32/stm8论坛
 
 
 

回复

73

帖子

0

TA的资源

一粒金砂(初级)

5
 


HSE_Value,你藏的好深啊!
此帖出自stm32/stm8论坛
 
 
 

回复

78

帖子

0

TA的资源

一粒金砂(初级)

6
 
好像还是不行啊,将HSE_Value的值改为12M之后,重新下载程序调试,在MDK中看到的OSC怎么还是8M呢?
还需要改哪里呢?
RCC_GetClocksFreq()这个函数要在哪里用呢?HSE_Value也只在这个函数里用到了。
此帖出自stm32/stm8论坛
 
 
 

回复

71

帖子

0

TA的资源

一粒金砂(初级)

7
 
                                 改了HSE_Value的值为12M后,现在的串口收到的数据倒是正确了,单就是在MDK中显示的OSC总是8M,这是什么原因呢?
此帖出自stm32/stm8论坛
 
 
 

回复

59

帖子

0

TA的资源

一粒金砂(初级)

8
 
                                 配置一下Keil的参数
此帖出自stm32/stm8论坛
 
 
 

回复

80

帖子

0

TA的资源

一粒金砂(初级)

9
 
                                 加油啊,别被吓到了
此帖出自stm32/stm8论坛
 
 
 

回复

54

帖子

0

TA的资源

一粒金砂(初级)

10
 
TO8楼:如何配置keil的参数呢?
我发现只有更改了keil安装文件夹下的stm32f10x_conf.h文件中HSE_Value值,程序才能正常运行。
那以后要是有两个不同的产品用了不同的晶振,每次编译两个程序的时候都要把HSE_Value的做修改,这样岂不是很麻烦吗?
此帖出自stm32/stm8论坛
 
 
 

回复

82

帖子

0

TA的资源

一粒金砂(初级)

11
 
                                 如果有两个不同的产品用了不同的硬件配置,比如使用了不同的晶振或芯片配置,为避免混淆,最好的办法是把用到的系统文件拷贝到字节的项目下,这样不同的项目都使用自己专用的头文件。
此帖出自stm32/stm8论坛
 
 
 

回复

76

帖子

0

TA的资源

一粒金砂(初级)

12
 
                                 终于发现了,原来是在Options for target下的target中的Xtal栏中可以设置晶振为11.0592M。
此帖出自stm32/stm8论坛
 
 
 

回复

74

帖子

0

TA的资源

一粒金砂(初级)

13
 
                                 做51时就有这个选项,仿真是软件的?
此帖出自stm32/stm8论坛
 
 
 

回复

81

帖子

0

TA的资源

一粒金砂(初级)

14
 
                                 不可能吧
此帖出自stm32/stm8论坛
 
 
 

回复

69

帖子

0

TA的资源

一粒金砂(初级)

15
 
原先没有用过keil,所以对这个不太熟悉。
在Options for target下的target中的Xtal栏中设置晶振为11.0592M后,只是调试时keil会在PRCC这个界面中显示正确的各个时钟。
此帖出自stm32/stm8论坛
 
 
 

回复

62

帖子

0

TA的资源

一粒金砂(初级)

16
 
                                 呵呵,问题解决了就好
此帖出自stm32/stm8论坛
 
 
 

回复

76

帖子

0

TA的资源

一粒金砂(初级)

17
 
                                 呵呵,我也出现过这种情况。
此帖出自stm32/stm8论坛
 
 
 

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

随便看看
查找数据手册?

EEWorld Datasheet 技术支持

相关文章 更多>>
关闭
站长推荐上一条 1/9 下一条

 
EEWorld订阅号

 
EEWorld服务号

 
汽车开发圈

About Us 关于我们 客户服务 联系方式 器件索引 网站地图 最新更新 手机版

站点相关: 国产芯 安防电子 汽车电子 手机便携 工业控制 家用电子 医疗电子 测试测量 网络通信 物联网

北京市海淀区中关村大街18号B座15层1530室 电话:(010)82350740 邮编:100190

电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 电信业务审批[2006]字第258号函 京公网安备 11010802033920号 Copyright © 2005-2025 EEWORLD.com.cn, Inc. All rights reserved
快速回复 返回顶部 返回列表