打印
[STM32F1]

stm32用过有源晶振的过来看看

[复制链接]
6250|8
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
zhang3721|  楼主 | 2014-7-18 16:09 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
最近在搞stm32f107,使用的是24M有源晶振。在调试串口时出现乱码情况。在改为系统内部振荡器时,串口就正常了。我想问一下使用有源晶振和无源晶振在时钟配置时有什么区别吗?附上我的时钟配置函数
void RCC_Configuration(void)
{
    ErrorStatus HSEStartUpStatus;                  
      RCC_DeInit();
    RCC_HSEConfig(RCC_HSE_ON);
    HSEStartUpStatus = RCC_WaitForHSEStartUp();
    if(HSEStartUpStatus == SUCCESS)
    {
        FLASH_PrefetchBufferCmd(FLASH_PrefetchBuffer_Enable);
        FLASH_SetLatency(FLASH_Latency_2);

        RCC_PCLK1Config(RCC_HCLK_Div2);
        RCC_PCLK2Config(RCC_HCLK_Div1);
        RCC_HCLKConfig(RCC_SYSCLK_Div1);

        RCC_PLLConfig(RCC_PLLSource_HSE_Div1, RCC_PLLMul_3);//24M*3=72M
        RCC_PLLCmd(ENABLE);
        while(RCC_GetFlagStatus(RCC_FLAG_PLLRDY)==RESET);
        {
        }
        RCC_SYSCLKConfig(RCC_SYSCLKSource_PLLCLK);
        while(RCC_GetSYSCLKSource() != 0x08);
        {
        }
    }
}
沙发
mmuuss586| | 2014-7-18 18:16 | 只看该作者

用有源晶振和外部无源晶振代码一样的;

使用特权

评论回复
板凳
mmuuss586| | 2014-7-18 18:17 | 只看该作者
把系统时钟读出来看看是不是你所需要的时钟;
不是的话,哪里配置不准确;

使用特权

评论回复
地板
zhang3721|  楼主 | 2014-7-19 10:56 | 只看该作者
mmuuss586 发表于 2014-7-18 18:16
用有源晶振和外部无源晶振代码一样的;

那你看我这代码有问题吗?

使用特权

评论回复
5
MOn51| | 2014-7-19 10:57 | 只看该作者
波特率变了才会有乱码。

使用特权

评论回复
6
zhang3721|  楼主 | 2014-7-19 10:59 | 只看该作者
mmuuss586 发表于 2014-7-18 18:17
把系统时钟读出来看看是不是你所需要的时钟;
不是的话,哪里配置不准确; ...

怎么读出呢?

使用特权

评论回复
7
zhang3721|  楼主 | 2014-7-19 15:17 | 只看该作者
终于找到原因了,把stm32f10x.h里面的
#define HSE_VALUE    ((uint32_t)8000000)
改为
  #define HSE_VALUE    ((uint32_t)24000000)
就搞定了。。。

使用特权

评论回复
8
ddllxxrr| | 2014-7-19 16:21 | 只看该作者
奥,学习啦


使用特权

评论回复
9
mmuuss586| | 2014-7-20 08:35 | 只看该作者
zhang3721 发表于 2014-7-19 15:17
终于找到原因了,把stm32f10x.h里面的
#define HSE_VALUE    ((uint32_t)8000000)
改为

:D
解决了就好,那说明程序没问题,定义不对;

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

18

主题

61

帖子

1

粉丝