LPC1788 SystemInit函数分析

本文介绍了一种嵌入式系统的时钟初始化方法,包括主振荡器、PLL配置及各类时钟源的选择,并详细解释了如何设置CPU时钟、USB时钟等关键时钟参数。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

void SystemInit (void)
{
#if (CLOCK_SETUP)                       /* Clock Setup                        */
   LPC_SC->SCS       = SCS_Val;  /*主振荡器使能          */
   if (SCS_Val & (1 << 5))    /* If Main Oscillator is enabled      */
 {            
     while ((LPC_SC->SCS & (1<<6)) == 0);/* Wait for Oscillator to be ready    */
   }

   LPC_SC->CLKSRCSEL = CLKSRCSEL_Val;    /* Select Clock Source for sysclk/PLL0 选择主振荡器作为sysclk/PLL0时钟源*/

#if (PLL0_SETUP)
   LPC_SC->PLL0CFG   = PLL0CFG_Val;   /* PLL0 10倍频*/
   LPC_SC->PLL0CON   = 0x01;             /* PLL0 Enable                        */
   LPC_SC->PLL0FEED  = 0xAA;
   LPC_SC->PLL0FEED  = 0x55;
   while (!(LPC_SC->PLL0STAT & (1<<10)));/* Wait for PLOCK0                    */
#endif

#if (PLL1_SETUP)
   LPC_SC->PLL1CFG   = PLL1CFG_Val;   /* PLL0 24倍频*/
   LPC_SC->PLL1CON   = 0x01;             /* PLL1 Enable                        */
   LPC_SC->PLL1FEED  = 0xAA;
   LPC_SC->PLL1FEED  = 0x55;
   while (!(LPC_SC->PLL1STAT & (1<<10)));/* Wait for PLOCK1                    */
#endif

   LPC_SC->CCLKSEL   = CCLKSEL_Val;      /* 主PLL的输出作为CPU时钟分频器的输入,输入时钟1分频来产生CPU时钟                */
   LPC_SC->USBCLKSEL = USBCLKSEL_Val;    /* Alt PLL的输出作为USB时钟分频器的输入          */
   LPC_SC->EMCCLKSEL = EMCCLKSEL_Val;    /* EMC使用的时钟速率是CPU的一半               */
  LPC_SC->PCLKSEL   = PCLKSEL_Val;      /* 输入时钟120M经过2分频产生APB时钟60M         */
   LPC_SC->PCONP     = PCONP_Val;        /* Power Control for Peripherals      */
   LPC_SC->CLKOUTCFG = CLKOUTCFG_Val;    /* Clock Output 使能        */
#endif

#if (FLASH_SETUP == 1)                    /* Flash Accelerator Setup            */
   LPC_SC->FLASHCFG  = FLASHCFG_Val|0x03A;  /*FLASH使用6个CPU时钟,20M*/
#endif
#ifdef  __RAM_MODE__
   SCB->VTOR  = 0x10000000 & 0x3FFFFF80;
#else
   SCB->VTOR  = 0x00000000 & 0x3FFFFF80;
#endif
}

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值