K60 學習05修改時鐘

流程如下:

/* SIM->CLKDIV1: OUTDIV1=0,OUTDIV2=2,OUTDIV3=4,OUTDIV4=4*/
  SIM->CLKDIV1 = (uint32_t)0x01330000u;
 /* Update system prescalers */
  /* Switch to FBE Mode */
  /* OSC->CR: ERCLKEN=1,,EREFSTEN=0,,SC2P=0,SC4P=0,SC8P=0,SC16P=0 */
  OSC->CR = (uint8_t)0x80u;
  /*SIM->SOPT2: MCGCLKSEL=0*/
  SIM->SOPT2 &= (uint8_t)~(uint8_t)0x01u;
  /* MCG->C2: RANGE0=2,HGO=0,EREFS=0,LP=0,IRCS=0 */
  MCG->C2 = (uint8_t)0x20u;
  /* MCG->C1: CLKS=2,FRDIV=5,IREFS=0,IRCLKEN=1,IREFSTEN=0 */
  MCG->C1 = (uint8_t)0xAAu;
  /* MCG->C4: DMX32=0,DRST_DRS=0 */
  MCG->C4 &= (uint8_t)~(uint8_t)0xE0u;
  /* MCG->C5: PLLCLKEN=0,PLLSTEN=0,PRDIV0=16 */
  MCG->C5 = (uint8_t)0x0Fu;
  /* MCG->C6: LOLIE=0,PLLS=0,CME=0,VDIV0=0 */
  MCG->C6 = (uint8_t)0x00u;
  while((MCG->S & MCG_S_OSCINIT0_MASK) == 0u) {
 /* Check that the oscillator is running */
  }
  while((MCG->S & MCG_S_IREFST_MASK) != 0u) {
 /* Check that the source of the FLL reference clock is the external reference clock. */
  }
  while((MCG->S & 0x0Cu) != 0x08u) {    
/* Wait until external reference clock is selected as MCG output */
  }
  /* Switch to PBE Mode */
  /* MCG_C5: PLLCLKEN=0,PLLSTEN=0,PRDIV0=1 */
  MCG->C1 = (uint8_t)0xAAu;
  /* MCG->C6: LOLIE=0,PLLS=1,CME=0,VDIV0=32 */
  MCG->C6 = (uint8_t)0x48u;
  while((MCG->S & MCG_S_PLLST_MASK) == 0u) { 
/* Wait until the source of the PLLS clock has switched to the PLL */
  }
  while((MCG->S & MCG_S_LOCK0_MASK) == 0u) {
 /* Wait until locked */
  }
  /* Switch to PEE Mode */
  /* MCG->C1: CLKS=0,FRDIV=3,IREFS=0,IRCLKEN=1,IREFSTEN=0 */
  MCG->C1 = (uint8_t)0x2Au;
  while((MCG->S & 0x0Cu) != 0x0Cu) {    
/* Wait until output of the PLL is selected */
  }
  while((MCG->S & MCG_S_LOCK0_MASK) == 0u) {
 /* Wait until locked */
  }

里面還是有許多不懂的地方,這里只是 抄下來,知道哪個寄存器在什么地方,要想真正搞清楚里面究竟是怎么回事,還差得遠!沒有下載器,也無法驗證。只是慢慢來,不急!

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

推薦閱讀更多精彩內(nèi)容