打印
[STM32F4]

时钟设置

[复制链接]
253|14
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
wenfen|  楼主 | 2020-12-14 23:56 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式

同样的定时器程序NVIC_PriorityGroupConfig(NVIC_PriorityGroup_2);/
        delay_init(168);  //
        LED_Init();                                //

        TIM3_Int_Init(5000-1,8400-1);        
        while(1)
        {
                LED0=!LED0;//DS0·-×a
                delay_ms(200);//
        };
我用例子里面的代码,定时500ms,刷写到原子的板子是500ms,刷写到我的板子变2s,隔了4倍。。晶振都是一样的。。这是为什么?

使用特权

评论回复
沙发
happy_10| | 2020-12-15 18:53 | 只看该作者
把系统时钟读出来,测试下,现在的时钟倍频到多少

使用特权

评论回复
板凳
wenfen|  楼主 | 2020-12-15 18:57 | 只看该作者
一样的程序一样的设置,时钟也都是8M的。。。

使用特权

评论回复
地板
wenfen|  楼主 | 2020-12-15 19:01 | 只看该作者
只是两块PCB不同。。。

使用特权

评论回复
5
wenfen|  楼主 | 2020-12-15 19:05 | 只看该作者
void delay_init(u8 SYSCLK)
{
#if SYSTEM_SUPPORT_OS                                                 //Èç¹ûÐèÒªÖ§³ÖOS.
        u32 reload;
#endif
        SysTick_CLKSourceConfig(SysTick_CLKSource_HCLK_Div8);
        fac_us=SYSCLK/8;                                                //²»ÂÛÊÇ·ñʹÓÃOS,fac_us¶¼ÐèҪʹÓÃ
#if SYSTEM_SUPPORT_OS                                                 //Èç¹ûÐèÒªÖ§³ÖOS.
        reload=SYSCLK/8;                                                //ÿÃëÖӵļÆÊý´ÎÊý µ¥Î»ÎªM           
        reload*=1000000/delay_ostickspersec;        //¸ù¾Ýdelay_ostickspersecÉ趨Òç³öʱ¼ä
                                                                                        //reloadΪ24λ¼Ä´æÆ÷,×î´óÖµ:16777216,ÔÚ168MÏÂ,Ô¼ºÏ0.7989s×óÓÒ        
        fac_ms=1000/delay_ostickspersec;                //´ú±íOS¿ÉÒÔÑÓʱµÄ×îÉÙµ¥Î»           
        SysTick->CTRL|=SysTick_CTRL_TICKINT_Msk;           //¿ªÆôSYSTICKÖжÏ
        SysTick->LOAD=reload;                                         //ÿ1/delay_ostickspersecÃëÖжÏÒ»´Î        
        SysTick->CTRL|=SysTick_CTRL_ENABLE_Msk;         //¿ªÆôSYSTICK   
#else
        fac_ms=(u16)fac_us*1000;                                //·ÇOSÏÂ,´ú±íÿ¸ömsÐèÒªµÄsystickʱÖÓÊý   
#endif
}                                    

使用特权

评论回复
6
wenfen|  楼主 | 2020-12-15 19:08 | 只看该作者

void SystemInit(void)
{
  /* FPU settings ------------------------------------------------------------*/
  #if (__FPU_PRESENT == 1) && (__FPU_USED == 1)
    SCB->CPACR |= ((3UL << 10*2)|(3UL << 11*2));  /* set CP10 and CP11 Full Access */
  #endif
  /* Reset the RCC clock configuration to the default reset state ------------*/
  /* Set HSION bit */
  RCC->CR |= (uint32_t)0x00000001;

  /* Reset CFGR register */
  RCC->CFGR = 0x00000000;

  /* Reset HSEON, CSSON and PLLON bits */
  RCC->CR &= (uint32_t)0xFEF6FFFF;

  /* Reset PLLCFGR register */
  RCC->PLLCFGR = 0x24003010;

  /* Reset HSEBYP bit */
  RCC->CR &= (uint32_t)0xFFFBFFFF;

  /* Disable all interrupts */
  RCC->CIR = 0x00000000;

#if defined (DATA_IN_ExtSRAM) || defined (DATA_IN_ExtSDRAM)
  SystemInit_ExtMemCtl();
#endif /* DATA_IN_ExtSRAM || DATA_IN_ExtSDRAM */
         
  /* Configure the System clock source, PLL Multiplier and Divider factors,
     AHB/APBx prescalers and Flash settings ----------------------------------*/
  SetSysClock();

  /* Configure the Vector Table location add offset address ------------------*/
#ifdef VECT_TAB_SRAM
  SCB->VTOR = SRAM_BASE | VECT_TAB_OFFSET; /* Vector Table Relocation in Internal SRAM */
#else
  SCB->VTOR = FLASH_BASE | VECT_TAB_OFFSET; /* Vector Table Relocation in Internal FLASH */
#endif
}

使用特权

评论回复
7
supernan| | 2020-12-15 19:13 | 只看该作者
主控芯片一样不

使用特权

评论回复
8
ousj| | 2020-12-15 19:16 | 只看该作者
写一个简单的定时器 看看时间有什么不同

使用特权

评论回复
9
lium| | 2020-12-15 19:19 | 只看该作者
用系统的那个感觉不太准确

使用特权

评论回复
10
wenfen|  楼主 | 2020-12-15 19:23 | 只看该作者

唉,还是没有什么结果,算了,多谢大家啦

使用特权

评论回复
11
wowu| | 2021-1-9 16:13 | 只看该作者
时钟源用的是什么

使用特权

评论回复
12
xiaoqizi| | 2021-1-9 16:15 | 只看该作者
是不是外部晶振不一样

使用特权

评论回复
13
木木guainv| | 2021-1-9 16:16 | 只看该作者
用示波器量一下波形

使用特权

评论回复
14
磨砂| | 2021-1-9 16:21 | 只看该作者
晶振的质量不过关也有可能

使用特权

评论回复
15
晓伍| | 2021-1-9 16:22 | 只看该作者
弱电就是如此莫名其妙

使用特权

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

本版积分规则

737

主题

8940

帖子

8

粉丝