一区二区三区三上|欧美在线视频五区|国产午夜无码在线观看视频|亚洲国产裸体网站|无码成年人影视|亚洲AV亚洲AV|成人开心激情五月|欧美性爱内射视频|超碰人人干人人上|一区二区无码三区亚洲人区久久精品

0
  • 聊天消息
  • 系統(tǒng)消息
  • 評(píng)論與回復(fù)
登錄后你可以
  • 下載海量資料
  • 學(xué)習(xí)在線課程
  • 觀看技術(shù)視頻
  • 寫文章/發(fā)帖/加入社區(qū)
會(huì)員中心
創(chuàng)作中心

完善資料讓更多小伙伴認(rèn)識(shí)你,還能領(lǐng)取20積分哦,立即完善>

3天內(nèi)不再提示

關(guān)于內(nèi)外時(shí)鐘切換及時(shí)鐘超頻測(cè)試

硬件攻城獅 ? 來源:21ic ? 作者:21ic ? 2022-12-07 14:11 ? 次閱讀
加入交流群
微信小助手二維碼

掃碼添加小助手

加入工程師交流群

前言

近日,有群友困于STM32時(shí)鐘系統(tǒng)。這里就詳細(xì)介紹一下關(guān)于內(nèi)外時(shí)鐘切換及時(shí)鐘超頻測(cè)試,希望對(duì)大家能有所幫助。

46be059a-75f1-11ed-8abf-dac502259ad0.png

誠然,當(dāng)使用固件庫時(shí),把外部晶振摘掉,系統(tǒng)確實(shí)會(huì)自動(dòng)切換到內(nèi)部時(shí)鐘,但是只會(huì)以8M的默認(rèn)值運(yùn)行,顯然這是十分不可行的,8M的速度直接讓我們的STM32病入膏肓,今天的任務(wù)就是讓STM32失去外掛(晶振)時(shí),依舊可以激情澎湃。

時(shí)鐘詳解這里不過多介紹,自己也沒有別人介紹的好,本文旨在解決現(xiàn)實(shí)問題。

此處插播廣告:群友問過這種問題,外部接8M晶振和16M晶振有啥區(qū)別?

以我微薄的經(jīng)驗(yàn)來看,這兩個(gè)在用的時(shí)候差別不大,如果使用ST的固件庫(以STM32F103為例),使用8M的晶振會(huì)更方便,不用改任何代碼,時(shí)鐘就是72M的全速運(yùn)行狀態(tài)。如果用16M晶振,則需要修改代碼:

在stm32f10x.h中修改宏定義HSE_VALUE ((uint32_t)8000000)為HSE_VALUE ((uint32_t)16000000)。

46e8dcb6-75f1-11ed-8abf-dac502259ad0.png

之后進(jìn)入system_stm32f10x.c,將RCC->CFGR |= (uint32_t)(RCC_CFGR_PLLSRC_HSE | RCC_CFGR_PLLMULL9);改為RCC->CFGR |= (uint32_t)(RCC_CFGR_PLLSRC_HSI_Div2| RCC_CFGR_PLLMULL9);此處是將輸入時(shí)鐘二分頻為8M,再進(jìn)行9倍頻到72M,和使用了8M沒區(qū)別。

如果不進(jìn)行該二分頻操作,時(shí)鐘還是有的,但是會(huì)以16M為基準(zhǔn)進(jìn)行9倍頻到144M,此時(shí)單片機(jī)以超頻模式運(yùn)行,也是可以運(yùn)行的。但是,時(shí)鐘的精準(zhǔn)性不能得到保證。

470d387c-75f1-11ed-8abf-dac502259ad0.png

系統(tǒng)的時(shí)鐘可以通過添加代碼在debug模式下顯示:

RCC_ClocksTypeDef ClockInfo;
RCC_GetClocksFreq(&ClockInfo);

4733359a-75f1-11ed-8abf-dac502259ad0.png

通過debug模式下觀察ClockInfo的值,便可知道此時(shí)系統(tǒng)時(shí)鐘速度:

4766a934-75f1-11ed-8abf-dac502259ad0.png

4766a934-75f1-11ed-8abf-dac502259ad0.png

這里提一下,在使用外部晶振的情況下,ST即使是超頻,依舊發(fā)揮穩(wěn)定,不得不夸一下ST的質(zhì)量。

此時(shí)我將我的開發(fā)板以8M的基準(zhǔn)倍頻16倍,得到128M的主頻,使用定時(shí)器定時(shí)10us,示波器測(cè)試無誤差。串口通信無誤。

47d370dc-75f1-11ed-8abf-dac502259ad0.png

48011564-75f1-11ed-8abf-dac502259ad0.png

48323c2a-75f1-11ed-8abf-dac502259ad0.png

48c47860-75f1-11ed-8abf-dac502259ad0.png

以72M的主頻跑128依舊穩(wěn)定,贊一個(gè),因?yàn)槲业耐獠烤д裰挥?M最大只能倍頻到128,如果使用外部16M,不知繼續(xù)倍頻可以到多少。不過性能還是很好的。

預(yù)留測(cè)試GD32的效果:

寫本文時(shí),將GD的GD32E230翻出來進(jìn)行了同樣的測(cè)試,因?yàn)镚D的倍頻器倍數(shù)較高,我已經(jīng)倍頻到144M(標(biāo)準(zhǔn)72M),測(cè)試定時(shí)器依舊穩(wěn)定。

48e53c1c-75f1-11ed-8abf-dac502259ad0.png

廣告很長(zhǎng),請(qǐng)忍一下:

上半場(chǎng)結(jié)束,下半場(chǎng)繼續(xù):

此處歪解一下時(shí)鐘的問題,之前有群友很疑惑單片機(jī)的低功耗和時(shí)鐘的關(guān)系,疑惑高速的時(shí)鐘會(huì)不會(huì)增加MCU的功耗,為啥低功耗要降低時(shí)鐘速度。這里講解一下:

可以用用單位時(shí)間內(nèi)執(zhí)行的指令來看,高速時(shí)鐘在單位時(shí)間內(nèi)使系統(tǒng)跑了更多的指令,而低速時(shí)鐘單位時(shí)間內(nèi)跑的少,而單片機(jī)是直線結(jié)構(gòu),內(nèi)核是不會(huì)休息的,功耗就看執(zhí)行的指令多少。而單片機(jī)的低功耗就是降低時(shí)鐘,讓單片機(jī)跑慢點(diǎn)。就像人一樣,低功耗相當(dāng)于你不跑了,原地休息,但是你的心跳不會(huì)停止,你還是得消耗能量,即使再少還得消耗。

就像人一樣,時(shí)鐘就相當(dāng)于心跳,只要還活著就得消耗能量,你要想跑得快,心臟就得跳得快,跳得越快能量消耗越高,即使你去睡覺,心跳只要不停止,你還得消耗能量,如果心跳沒了,整個(gè)人就沒了,MCU也就宕機(jī)了。所以,在處理低功耗時(shí)最先解決的就是時(shí)鐘頻率,只有降低了時(shí)鐘的頻率,才能真正降低功耗。關(guān)于單片機(jī)進(jìn)入低功耗和喚醒,以及降低整體運(yùn)行功耗我看能不能在下文講解,近期剛好做了一個(gè)低功耗的項(xiàng)目,這里留懸念吧。

廣告結(jié)束,正文開始,不好意思,有點(diǎn)喧賓奪主了哈!

回到主題,為了解決時(shí)鐘切換的問題,才有了這個(gè)帖子,上文全屬歪樓,為最近開發(fā)時(shí)的經(jīng)驗(yàn)總結(jié)。

我們?cè)谑褂肧TM32103的固件庫時(shí),時(shí)鐘配置在system_stm32f10x.c中,但是只是對(duì)外部晶振做了初始化,而對(duì)于內(nèi)部時(shí)鐘并沒有添加代碼,如果你的MCU沒有外部晶振,當(dāng)系統(tǒng)運(yùn)行時(shí)是先啟動(dòng)內(nèi)部時(shí)鐘,然后會(huì)檢測(cè)外部晶振,如果沒有檢測(cè)到晶振,系統(tǒng)便以內(nèi)部的8M繼續(xù)運(yùn)行,這是不合理的。

4907446a-75f1-11ed-8abf-dac502259ad0.png

這里可以看到,如果外部啟動(dòng)失敗,會(huì)進(jìn)入這個(gè)else,但是這個(gè)else中并未添加任何代碼,所以只會(huì)用8M的內(nèi)鐘執(zhí)行,我們要做的就是在else中添加外部啟動(dòng)失敗的代碼:

  /* 開啟HSI 即內(nèi)部晶振時(shí)鐘 */
  RCC->CR |= (uint32_t)0x00000001; 
  /*選擇HSI為PLL的時(shí)鐘源HSI必須2分頻給PLL*/
  RCC->CFGR |= (uint32_t)RCC_CFGR_PLLSRC_HSI_Div2; 
         
  /*PLLCLK=8/2*13=52MHz 設(shè)置倍頻得到時(shí)鐘源PLL的頻率*/
  RCC->CFGR |= (uint32_t)RCC_CFGR_PLLMULL12;
  /* PLL不分頻輸出*/
  RCC->CFGR |= (uint32_t)RCC_CFGR_HPRE_DIV1;
   
  /* 使能 PLL時(shí)鐘 */
  RCC->CR |= RCC_CR_PLLON;
  /* 等待PLL時(shí)鐘就緒*/
  while((RCC->CR & RCC_CR_PLLRDY) == 0)
  {
  }
  /* 選擇PLL為系統(tǒng)時(shí)鐘的時(shí)鐘源 */
  RCC->CFGR &= (uint32_t)((uint32_t)~(RCC_CFGR_SW));
  RCC->CFGR |= (uint32_t)RCC_CFGR_SW_PLL;  
  /* 等到PLL成為系統(tǒng)時(shí)鐘的時(shí)鐘源*/
  while ((RCC->CFGR & (uint32_t)RCC_CFGR_SWS) != (uint32_t)0x08)
  {
}

該代碼填充后如果檢測(cè)到有外部時(shí)鐘,便以外部時(shí)鐘為基準(zhǔn)進(jìn)行時(shí)鐘的倍頻處理,達(dá)到用戶想要的時(shí)鐘頻率,如果你的MCU沒有外部時(shí)鐘,則會(huì)執(zhí)行else內(nèi)部的代碼,將時(shí)鐘源切換到內(nèi)部時(shí)鐘并進(jìn)行倍頻,如此便達(dá)到了自動(dòng)檢測(cè)時(shí)鐘的目的。

問題:這是我根據(jù)STM32F031的時(shí)鐘切換代碼演變來的,但是這個(gè)只能用于主頻小于或等于48M時(shí)使用,如果倍頻因子超過12,也就是主頻超過48M是,就會(huì)出現(xiàn)硬件錯(cuò)誤,直接卡死。當(dāng)需要更高的主頻時(shí)就需要如下配置。

在else里面最開頭添加:

  /* Enable Prefetch Buffer */
  FLASH->ACR |= FLASH_ACR_PRFTBE;
  /* Flash 2 wait state */
  FLASH->ACR &= (uint32_t)((uint32_t)~FLASH_ACR_LATENCY);
FLASH->ACR|=(uint32_t)FLASH_ACR_LATENCY_2;

492c0bec-75f1-11ed-8abf-dac502259ad0.png

問:如果我的MCU有晶振,但是我不想用外部,就想用內(nèi)部,如何處理呢?

答:打一頓就好了,有外部不用干啥用內(nèi)部呢?

上述純屬惡搞自己,被坑過……

因?yàn)閮?nèi)部時(shí)鐘不準(zhǔn)?。?!測(cè)試內(nèi)部時(shí)鐘在使用定時(shí)器時(shí)會(huì)有偏差,本人在此吃過虧。此問題在STM32F031和GD32E230中均有體現(xiàn)。但是USART和SPI通信是正常的,即使我用的2.5M波特率的USART和8M的SPI。

解決辦法,上述代碼不用動(dòng),添加如下代碼。

4980dbcc-75f1-11ed-8abf-dac502259ad0.png

通過注釋原文RCC->CR |= ((uint32_t)RCC_CR_HSEON);并添加RCC->CR &= ~((uint32_t)RCC_CR_HSEON);可默認(rèn)之以內(nèi)部時(shí)鐘方式啟動(dòng)。 注意:在主函數(shù)加上SystemInit();函數(shù)哦?。?! 最終代碼如下:

static void SetSysClockTo72(void)
{


__IO uint32_t StartUpCounter = 0, HSEStatus = 0;





/* SYSCLK, HCLK, PCLK2 and PCLK1 configuration ---------------------------*/  


/* Enable HSE */  


//RCC->CR |= ((uint32_t)RCC_CR_HSEON);


  /*取消改行注釋并注釋上文,可默認(rèn)啟動(dòng)內(nèi)部時(shí)鐘*/


  RCC->CR &= ~((uint32_t)RCC_CR_HSEON);


/* Wait till HSE is ready and if Time out is reached exit */


do


{


  HSEStatus = RCC->CR & RCC_CR_HSERDY;


  StartUpCounter++;


} while((HSEStatus == 0) && (StartUpCounter != HSE_STARTUP_TIMEOUT));






if ((RCC->CR & RCC_CR_HSERDY) != RESET)


{


  HSEStatus = (uint32_t)0x01;


}


else


{


  HSEStatus = (uint32_t)0x00;


}






if (HSEStatus == (uint32_t)0x01)


{


  /* Enable Prefetch Buffer */


  FLASH->ACR |= FLASH_ACR_PRFTBE;






  /* Flash 2 wait state */


  FLASH->ACR &= (uint32_t)((uint32_t)~FLASH_ACR_LATENCY);


  FLASH->ACR |= (uint32_t)FLASH_ACR_LATENCY_2;  










  /* HCLK = SYSCLK */


  RCC->CFGR |= (uint32_t)RCC_CFGR_HPRE_DIV1;


  


  /* PCLK2 = HCLK */


  RCC->CFGR |= (uint32_t)RCC_CFGR_PPRE2_DIV1;


  


  /* PCLK1 = HCLK */


  RCC->CFGR |= (uint32_t)RCC_CFGR_PPRE1_DIV2;






#ifdef STM32F10X_CL


  /* Configure PLLs ------------------------------------------------------*/


  /* PLL2 configuration: PLL2CLK = (HSE / 5) * 8 = 40 MHz */


  /* PREDIV1 configuration: PREDIV1CLK = PLL2 / 5 = 8 MHz */


  


  RCC->CFGR2 &= (uint32_t)~(RCC_CFGR2_PREDIV2 | RCC_CFGR2_PLL2MUL |


          RCC_CFGR2_PREDIV1 | RCC_CFGR2_PREDIV1SRC);


  RCC->CFGR2 |= (uint32_t)(RCC_CFGR2_PREDIV2_DIV5 | RCC_CFGR2_PLL2MUL8 |


         RCC_CFGR2_PREDIV1SRC_PLL2 | RCC_CFGR2_PREDIV1_DIV5);





  /* Enable PLL2 */


  RCC->CR |= RCC_CR_PLL2ON;


  /* Wait till PLL2 is ready */


  while((RCC->CR & RCC_CR_PLL2RDY) == 0)


  {


  }


  


 


  /* PLL configuration: PLLCLK = PREDIV1 * 9 = 72 MHz */ 


  RCC->CFGR &= (uint32_t)~(RCC_CFGR_PLLXTPRE | RCC_CFGR_PLLSRC | RCC_CFGR_PLLMULL);


  RCC->CFGR |= (uint32_t)(RCC_CFGR_PLLXTPRE_PREDIV1 | RCC_CFGR_PLLSRC_PREDIV1 | 


          RCC_CFGR_PLLMULL9); 


#else  


  /*PLL configuration: PLLCLK = HSE * 9 = 72 MHz */


  RCC->CFGR &= (uint32_t)((uint32_t)~(RCC_CFGR_PLLSRC | RCC_CFGR_PLLXTPRE |


              RCC_CFGR_PLLMULL));


  RCC->CFGR |= (uint32_t)(RCC_CFGR_PLLSRC_HSE | RCC_CFGR_PLLMULL16);


#endif /* STM32F10X_CL */






  /* Enable PLL */


  RCC->CR |= RCC_CR_PLLON;






  /* Wait till PLL is ready */


  while((RCC->CR & RCC_CR_PLLRDY) == 0)


  {


  }


  


  /* Select PLL as system clock source */


  RCC->CFGR &= (uint32_t)((uint32_t)~(RCC_CFGR_SW));


  RCC->CFGR |= (uint32_t)RCC_CFGR_SW_PLL;  






  /* Wait till PLL is used as system clock source */


  while ((RCC->CFGR & (uint32_t)RCC_CFGR_SWS) != (uint32_t)0x08)


  {


  }


}


else


{ 


  /* Enable Prefetch Buffer */


  FLASH->ACR |= FLASH_ACR_PRFTBE;


  /* Flash 2 wait state */


  FLASH->ACR &= (uint32_t)((uint32_t)~FLASH_ACR_LATENCY);


  FLASH->ACR |= (uint32_t)FLASH_ACR_LATENCY_2;    


   /* 開啟HSI 即內(nèi)部晶振時(shí)鐘 */


  RCC->CR |= (uint32_t)0x00000001; 






  /*選擇HSI為PLL的時(shí)鐘源HSI必須2分頻給PLL*/


  RCC->CFGR |= (uint32_t)RCC_CFGR_PLLSRC_HSI_Div2; 






         


  /*PLLCLK=8/2*13=52MHz 設(shè)置倍頻得到時(shí)鐘源PLL的頻率*/


  RCC->CFGR |= (uint32_t)RCC_CFGR_PLLMULL16;






  /* PLL不分頻輸出*/


  RCC->CFGR |= (uint32_t)RCC_CFGR_HPRE_DIV1;


   


  /* 使能 PLL時(shí)鐘 */


  RCC->CR |= RCC_CR_PLLON;






  /* 等待PLL時(shí)鐘就緒*/


  while((RCC->CR & RCC_CR_PLLRDY) == 0)


  {


  }










  /* 選擇PLL為系統(tǒng)時(shí)鐘的時(shí)鐘源 */


  RCC->CFGR &= (uint32_t)((uint32_t)~(RCC_CFGR_SW));


  RCC->CFGR |= (uint32_t)RCC_CFGR_SW_PLL;  






  /* 等到PLL成為系統(tǒng)時(shí)鐘的時(shí)鐘源*/


  while ((RCC->CFGR & (uint32_t)RCC_CFGR_SWS) != (uint32_t)0x08)


  {






  }


}


}

在STM32F030或者STM32F031中,同樣可以做類似操作:

static void SetSysClock(void)
{


__IO uint32_t StartUpCounter = 0, HSEStatus = 0;





/* SYSCLK, HCLK, PCLK configuration ----------------------------------------*/


/* Enable HSE */ 






RCC->CR |= ((uint32_t)RCC_CR_HSEON);


  //修改為內(nèi)部晶振  


//  RCC->CR &= ~((uint32_t)RCC_CR_HSEON);


 


/* Wait till HSE is ready and if Time out is reached exit */


do


{


  HSEStatus = RCC->CR & RCC_CR_HSERDY;


  StartUpCounter++;


} while((HSEStatus == 0) && (StartUpCounter != HSE_STARTUP_TIMEOUT));






if ((RCC->CR & RCC_CR_HSERDY) != RESET)


{


  HSEStatus = (uint32_t)0x01;


}


else


{


  HSEStatus = (uint32_t)0x00;


}






if (HSEStatus == (uint32_t)0x01)


{


  /* Enable Prefetch Buffer and set Flash Latency */


  FLASH->ACR = FLASH_ACR_PRFTBE | FLASH_ACR_LATENCY;


 


  /* HCLK = SYSCLK */


  RCC->CFGR |= (uint32_t)RCC_CFGR_HPRE_DIV1;


  


  /* PCLK = HCLK */


  RCC->CFGR |= (uint32_t)RCC_CFGR_PPRE_DIV1;






  /* PLL configuration = HSE * 6 = 48 MHz */


  RCC->CFGR &= (uint32_t)((uint32_t)~(RCC_CFGR_PLLSRC | RCC_CFGR_PLLXTPRE | RCC_CFGR_PLLMULL));


  RCC->CFGR |= (uint32_t)(RCC_CFGR_PLLSRC_PREDIV1 | RCC_CFGR_PLLXTPRE_PREDIV1 | RCC_CFGR_PLLMULL7);


    


  /* Enable PLL */


  RCC->CR |= RCC_CR_PLLON;






  /* Wait till PLL is ready */


  while((RCC->CR & RCC_CR_PLLRDY) == 0)


  {


  }






  /* Select PLL as system clock source */


  RCC->CFGR &= (uint32_t)((uint32_t)~(RCC_CFGR_SW));


  RCC->CFGR |= (uint32_t)RCC_CFGR_SW_PLL;  






  /* Wait till PLL is used as system clock source */


  while ((RCC->CFGR & (uint32_t)RCC_CFGR_SWS) != (uint32_t)RCC_CFGR_SWS_PLL)


  {


  }


}


else


{ /* If HSE fails to start-up, the application will have wrong clock 


   configuration. User can add here some code to deal with this error */


       // HSI 內(nèi)部時(shí)鐘做為PLL時(shí)鐘源并配置PLL 56M做為系統(tǒng)時(shí)鐘


  /* Enable Prefetch Buffer and set Flash Latency */


  FLASH->ACR = FLASH_ACR_PRFTBE | FLASH_ACR_LATENCY;






  /* HCLK = SYSCLK */


  RCC->CFGR |= (uint32_t)RCC_CFGR_HPRE_DIV1;






  /* PCLK = HCLK */


  RCC->CFGR |= (uint32_t)RCC_CFGR_PPRE_DIV1;






  // PLL configuration = (HSI/2) * 12 = 48 MHz


  RCC_PLLConfig(RCC_PLLSource_HSI_Div2, RCC_PLLMul_14); // 8M/2 * 14 = 56M






  /* Enable PLL */


  RCC->CR |= RCC_CR_PLLON;






  /* Wait till PLL is ready */


  while ((RCC->CR & RCC_CR_PLLRDY) == 0)


  {


  }






  /* Select PLL as system clock source */


  RCC_SYSCLKConfig(RCC_SYSCLKSource_PLLCLK); // PLL 做系統(tǒng)時(shí)鐘






  /* Wait till PLL is used as system clock source */


  while ((RCC->CFGR & (uint32_t)RCC_CFGR_SWS) != (uint32_t)RCC_CFGR_SWS_PLL)


  {


  }


}


}

在STM32F103中,使用內(nèi)部晶振,最大時(shí)鐘頻率也只能到64M,受倍頻因子的影響嘛,最大只能倍頻16倍。但在STM32F031中,標(biāo)準(zhǔn)使用內(nèi)部時(shí)鐘主頻只有48M,但是我們?nèi)匀豢梢岳^續(xù)倍頻,用內(nèi)部時(shí)鐘進(jìn)行超頻達(dá)到64M。在我們的產(chǎn)品中就用過內(nèi)部超頻到56M,USART和SPI長(zhǎng)時(shí)間無問題。

而GD32E230因?yàn)槠涓哌_(dá)32的倍頻因子,內(nèi)部時(shí)鐘可以倍頻到128M。

49aaa9ca-75f1-11ed-8abf-dac502259ad0.png

但是,這種幾分鐘內(nèi)沒有明顯發(fā)熱現(xiàn)象,不敢做長(zhǎng)時(shí)間測(cè)試,現(xiàn)在MCU有點(diǎn)小貴。干費(fèi)一個(gè)就心疼。

總之,無論ST還是國(guó)產(chǎn),其主頻更適合在規(guī)定的范圍內(nèi)運(yùn)行,但是跑極限在短時(shí)間內(nèi)也沒有很大的問題。這些數(shù)據(jù)僅供參考。

至此單片機(jī)時(shí)鐘講解就結(jié)束了,沒有多少理論性的東西,主要是解決一些時(shí)鐘使用時(shí)的問題,自己也總是忘,留帖一篇作為自省。

本文中所有代碼都經(jīng)過本人測(cè)試,運(yùn)行無任何問題,但是對(duì)于問題的闡述或者一些見解可能有錯(cuò)誤,歡迎大佬們批評(píng)指正,一定接受各種批評(píng),努力完善!

審核編輯 :李倩


聲明:本文內(nèi)容及配圖由入駐作者撰寫或者入駐合作網(wǎng)站授權(quán)轉(zhuǎn)載。文章觀點(diǎn)僅代表作者本人,不代表電子發(fā)燒友網(wǎng)立場(chǎng)。文章及其配圖僅供工程師學(xué)習(xí)之用,如有內(nèi)容侵權(quán)或者其他違規(guī)問題,請(qǐng)聯(lián)系本站處理。 舉報(bào)投訴
  • 晶振
    +關(guān)注

    關(guān)注

    35

    文章

    3268

    瀏覽量

    70144
  • STM32
    +關(guān)注

    關(guān)注

    2293

    文章

    11032

    瀏覽量

    365001
  • 時(shí)鐘
    +關(guān)注

    關(guān)注

    11

    文章

    1901

    瀏覽量

    133238

原文標(biāo)題:工程師歪解單片機(jī)的時(shí)鐘系統(tǒng),有點(diǎn)意思~

文章出處:【微信號(hào):mcu168,微信公眾號(hào):硬件攻城獅】歡迎添加關(guān)注!文章轉(zhuǎn)載請(qǐng)注明出處。

收藏 人收藏
加入交流群
微信小助手二維碼

掃碼添加小助手

加入工程師交流群

    評(píng)論

    相關(guān)推薦
    熱點(diǎn)推薦

    賽思電子時(shí)鐘緩沖器的組成與應(yīng)用介紹

    時(shí)鐘緩沖器是現(xiàn)代電子系統(tǒng)中重要的組成部分,它可以有效地解決時(shí)鐘信號(hào)在長(zhǎng)距離傳輸和電路間切換時(shí)遇到的問題。在大多數(shù)電子設(shè)備中,時(shí)鐘信號(hào)被用來同步各個(gè)組件的操作,確保它們按照預(yù)定的時(shí)間順序
    的頭像 發(fā)表于 07-15 17:27 ?162次閱讀
    賽思電子<b class='flag-5'>時(shí)鐘</b>緩沖器的組成與應(yīng)用介紹

    ntp時(shí)鐘同步服務(wù)器是什么?ntp時(shí)鐘同步服務(wù)器介紹

    關(guān)于網(wǎng)絡(luò)時(shí)間的設(shè)備,你也可以叫他網(wǎng)絡(luò)時(shí)間同步設(shè)備,或者網(wǎng)絡(luò)同步時(shí)鐘系統(tǒng)等。今天小編就跟大家簡(jiǎn)單介紹一下它。網(wǎng)絡(luò)時(shí)鐘同步服務(wù)器行業(yè)人員通常會(huì)說NTP時(shí)鐘同步服務(wù)器,
    的頭像 發(fā)表于 05-13 15:19 ?277次閱讀
    ntp<b class='flag-5'>時(shí)鐘</b>同步服務(wù)器是什么?ntp<b class='flag-5'>時(shí)鐘</b>同步服務(wù)器介紹

    TSN時(shí)鐘同步精度技術(shù)解析:TSN網(wǎng)絡(luò)的基石與保障

    ,精確同步已成為剛性需求。本文圍繞時(shí)鐘同步精度測(cè)試展開,涵蓋測(cè)試方法、信而泰測(cè)試方案等關(guān)鍵內(nèi)容,旨在深入剖析時(shí)鐘同步精度
    的頭像 發(fā)表于 04-25 09:56 ?315次閱讀
    TSN<b class='flag-5'>時(shí)鐘</b>同步精度技術(shù)解析:TSN網(wǎng)絡(luò)的基石與保障

    HMC7044外參考時(shí)鐘切換失敗的原因?

    你好,我們?cè)谑褂肏MC7044的時(shí)候,發(fā)現(xiàn)將10M內(nèi)參考時(shí)鐘切換為外參考時(shí)鐘會(huì)失敗,切換完成之后必須將外參考時(shí)鐘拔插一下才能成功,請(qǐng)問這個(gè)是
    發(fā)表于 04-15 06:50

    時(shí)空刻度:LED電子時(shí)鐘系統(tǒng)如何重塑現(xiàn)代節(jié)奏

    ?高鐵站臺(tái)的安全倒計(jì)時(shí)在暴雨中清晰閃爍,體育場(chǎng)館的24秒進(jìn)攻時(shí)鐘與裁判哨聲嚴(yán)絲合縫,跨國(guó)企業(yè)總部的大樓立面時(shí)鐘同步切換三大時(shí)區(qū)——這些精準(zhǔn)的視覺化時(shí)間表達(dá),由LED電子時(shí)鐘系統(tǒng)在毫秒維
    的頭像 發(fā)表于 03-16 17:25 ?402次閱讀
    時(shí)空刻度:LED電子<b class='flag-5'>時(shí)鐘</b>系統(tǒng)如何重塑現(xiàn)代節(jié)奏

    RTC時(shí)鐘芯片+電池的應(yīng)用案例(一)

    車載領(lǐng)域的應(yīng)用案例。愛普生RTC時(shí)鐘芯片在工業(yè)自動(dòng)化設(shè)備的應(yīng)用愛普生RTC具有備用電池切換、寬溫范圍高精度、低功耗等特點(diǎn),幫助自動(dòng)化設(shè)備更好運(yùn)行。愛普生RTC時(shí)鐘
    的頭像 發(fā)表于 01-08 11:25 ?1637次閱讀
    RTC<b class='flag-5'>時(shí)鐘</b>芯片+電池的應(yīng)用案例(一)

    時(shí)序約束一主時(shí)鐘與生成時(shí)鐘

    一、主時(shí)鐘create_clock 1.1 定義 主時(shí)鐘是來自FPGA芯片外部的時(shí)鐘,通過時(shí)鐘輸入端口或高速收發(fā)器GT的輸出引腳進(jìn)入FPGA內(nèi)部。對(duì)于賽靈思7系列的器件,主
    的頭像 發(fā)表于 11-29 11:03 ?1399次閱讀
    時(shí)序約束一主<b class='flag-5'>時(shí)鐘</b>與生成<b class='flag-5'>時(shí)鐘</b>

    北斗衛(wèi)星時(shí)鐘系統(tǒng)——ZREXT2000衛(wèi)星時(shí)鐘擴(kuò)展分機(jī)

    ? ? ? 衛(wèi)星時(shí)鐘系統(tǒng) 是專為大型電站、電廠設(shè)計(jì)的多種輸出接口的冗余接收系統(tǒng), ?北斗/GPS衛(wèi)星時(shí)鐘系統(tǒng) 采用2臺(tái)北斗/GPS主時(shí)鐘(其中1臺(tái)是備份時(shí)鐘),當(dāng)主
    的頭像 發(fā)表于 11-11 14:37 ?583次閱讀
    北斗衛(wèi)星<b class='flag-5'>時(shí)鐘</b>系統(tǒng)——ZREXT2000衛(wèi)星<b class='flag-5'>時(shí)鐘</b>擴(kuò)展分機(jī)

    LMK04828-EP參考時(shí)鐘自動(dòng)切換的問題求解答

    我所遇到的問題是:我的clkin0是外部時(shí)鐘輸入,clkin1是板載晶振,clkin2為FPGA時(shí)鐘輸入,clkin0優(yōu)先級(jí)最高;當(dāng)clkin0 丟失后,04828自動(dòng)切換到clkin1 ,但是當(dāng)clkin0 恢復(fù)后,0482
    發(fā)表于 11-11 07:59

    時(shí)鐘芯片綜合測(cè)試策略:從生成過程到關(guān)鍵模塊

    時(shí)鐘芯片的測(cè)試工作需細(xì)致入微,涵蓋從時(shí)鐘生成過程到芯片內(nèi)部關(guān)鍵模塊的全面評(píng)估。其核心功能在于產(chǎn)生穩(wěn)定且準(zhǔn)確的頻率輸出,并能根據(jù)系統(tǒng)需求靈活調(diào)整。因此,測(cè)試的重點(diǎn)在于驗(yàn)證芯片內(nèi)部各個(gè)環(huán)節(jié)
    的頭像 發(fā)表于 11-04 11:50 ?888次閱讀

    京準(zhǔn)時(shí)鐘科普:關(guān)于北斗衛(wèi)星同步時(shí)鐘的那些事?

    京準(zhǔn)時(shí)鐘科普:關(guān)于北斗衛(wèi)星同步時(shí)鐘的那些事?
    的頭像 發(fā)表于 10-29 09:28 ?747次閱讀
    京準(zhǔn)<b class='flag-5'>時(shí)鐘</b>科普:<b class='flag-5'>關(guān)于</b>北斗衛(wèi)星同步<b class='flag-5'>時(shí)鐘</b>的那些事?

    視頻時(shí)鐘合成芯片怎么用

    ,以確保視頻信號(hào)的同步和穩(wěn)定。以下是關(guān)于視頻時(shí)鐘合成芯片的使用指南: 1. 視頻時(shí)鐘合成芯片的基本概念 視頻時(shí)鐘合成芯片是一種數(shù)字電路,它通過相位鎖定環(huán)(Phase-Locked Lo
    的頭像 發(fā)表于 10-10 11:17 ?734次閱讀

    HT1381時(shí)鐘程序例程

    本人親自測(cè)試并運(yùn)行成功,驅(qū)動(dòng)合泰時(shí)鐘芯片HT138&HT1381
    發(fā)表于 09-07 11:34 ?4次下載

    內(nèi)存時(shí)鐘是什么意思

    內(nèi)存時(shí)鐘是內(nèi)存模塊中一個(gè)至關(guān)重要的參數(shù),它直接關(guān)聯(lián)到內(nèi)存模塊能夠工作的最高頻率。以下是對(duì)內(nèi)存時(shí)鐘的詳細(xì)解析,包括其定義、作用、與內(nèi)存頻率的關(guān)系、對(duì)計(jì)算機(jī)性能的影響以及選擇時(shí)的考慮因素,旨在全面闡述內(nèi)存時(shí)鐘的意義。
    的頭像 發(fā)表于 09-04 11:45 ?2404次閱讀

    時(shí)鐘抖動(dòng)和時(shí)鐘偏移的區(qū)別

    時(shí)鐘抖動(dòng)(Jitter)和時(shí)鐘偏移(Skew)是數(shù)字電路設(shè)計(jì)中兩個(gè)重要的概念,它們對(duì)電路的時(shí)序性能和穩(wěn)定性有著顯著的影響。下面將從定義、原因、影響以及應(yīng)對(duì)策略等方面詳細(xì)闡述時(shí)鐘抖動(dòng)和時(shí)鐘
    的頭像 發(fā)表于 08-19 18:11 ?2154次閱讀