打印

单片机无法对外部时钟分频

[复制链接]
2295|7
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
wholoveme|  楼主 | 2008-12-25 16:27 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
8M晶振,9分频后单片机频率还是8M
同样程序换个单片机,为72M。

频率由RCC_GetClocksFreq(&Clock);测得

想问下什么原因,硬件原因可能性大不大?
沙发
香水城| | 2008-12-25 17:18 | 只看该作者

什么芯片?

使用特权

评论回复
板凳
wholoveme|  楼主 | 2008-12-25 17:33 | 只看该作者

STM32F103ZE

仔细查了一下,RCC_CFGR这个寄存器无法赋值。

RCC_PLLConfig(RCC_PLLSource_HSE_Div1, RCC_PLLMul_9);

这个函数在全速运行时无法对RCC_CFGR赋值,单步时可以赋值

使用特权

评论回复
地板
香水城| | 2008-12-25 17:38 | 只看该作者

请检查晶振是否启振,如果没有启振就会有楼主的现象

哈哈,“8M晶振,9分频后单片机频率还是8M”,我猜了半天也不知道哪个芯片可以9分频~~~~~~~~

使用特权

评论回复
5
wholoveme|  楼主 | 2008-12-26 08:25 | 只看该作者

晶振没起振,初始化可以通过吗?

9倍频,嘴误

使用特权

评论回复
6
香水城| | 2008-12-26 08:53 | 只看该作者

如果启动HSE又不等待HSE,则芯片可以依靠HSI运行

等待HSE稳定的函数:RCC_WaitForHSEStartUp

使用特权

评论回复
7
wholoveme|  楼主 | 2008-12-26 09:16 | 只看该作者

我的初始化函数,请帮忙看看

void RCC_Configuration(void)
{
  ErrorStatus HSEStartUpStatus;
    RCC_ClocksTypeDef Clock;
    
  RCC_DeInit();/* RCC system reset(for debug purpose) */
  RCC_HSEConfig(RCC_HSE_ON);/* Enable HSE */
  HSEStartUpStatus = RCC_WaitForHSEStartUp();/* Wait till HSE is ready */
  if(HSEStartUpStatus == SUCCESS)
  {
    RCC_HCLKConfig(RCC_SYSCLK_Div1);/* HCLK = SYSCLK */
    RCC_PCLK2Config(RCC_HCLK_Div1); /* PCLK2 = HCLK */
    RCC_PCLK1Config(RCC_HCLK_Div2);/* PCLK1 = HCLK/2 */
    RCC_ADCCLKConfig(RCC_PCLK2_Div6);/* ADCCLK = PCLK2/6 */
    /* Flash 2 wait state ,不加下面两句话,则后面语句无法通过?*/
    FLASH_SetLatency(FLASH_Latency_2);
    /* Enable Prefetch Buffer */
    FLASH_PrefetchBufferCmd(FLASH_PrefetchBuffer_Enable);

    /* PLLCLK = 8/1MHz * 9 = 72 MHz */
    RCC_PLLConfig(RCC_PLLSource_HSE_Div1, RCC_PLLMul_9);
    
    RCC_PLLCmd(ENABLE);/* Enable PLL */

    /* 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_GetClocksFreq(&Clock);
 
    RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOA | RCC_APB2Periph_GPIOB |RCC_APB2Periph_GPIOC | RCC_APB2Periph_GPIOD 
                           | RCC_APB2Periph_GPIOE | RCC_APB2Periph_GPIOF |RCC_APB2Periph_GPIOG |RCC_APB2Periph_AFIO, ENABLE);
    /* TIM2 clocks enable */
  RCC_APB1PeriphClockCmd(RCC_APB1Periph_TIM2, ENABLE);
  
    rcc_can_user();
    rcc_lcd();
    rcc_rtc();
}

使用特权

评论回复
8
wholoveme|  楼主 | 2008-12-26 09:18 | 只看该作者

晶振用示波器测试过,稳定8M

使用特权

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

本版积分规则

15

主题

27

帖子

0

粉丝