DSP的InitSysCtrl()函数详谈

void InitSysCtrl(void)
{      
   DisableDog();//关闭看门狗
   InitPll(0xA);//初始化PLL时钟
   InitPeripheralClocks();//初始化外设时钟

}

void InitPll(Uint16 val)//初始化PLL时钟
{
   volatile Uint16 iVol;   
   
   if (SysCtrlRegs.PLLCR.bit.DIV != val)
   {
      EALLOW;

     //设置系统时钟为150Mhz
      SysCtrlRegs.PLLCR.bit.DIV = val;//CLKIN=(OSCCLK*10.0)/2=(30*10)/2=150Mhz
      EDIS;  
      DisableDog();
      for(iVol= 0; iVol< ( (131072/2)/12 ); iVol++)//PLL使能完成需要等待一段时间
      {
   
      }
   }
}

void InitPeripheralClocks(void)//初始化外设时钟
{
   EALLOW;
   SysCtrlRegs.HISPCP.all = 0x0001;//高速时钟定标HSPCLK=SYSCLKOUT/(HISPCP*2)=150/(1*2)=75Mhz
   SysCtrlRegs.LOSPCP.all = 0x0002;//低速时钟定标LSPCLK=SYSCLKOUT/(LOSPCP*2)=150/(2*2)=37.5Mhz    
// 使能一些外设时钟:EVA,EVB,SCIA, SCIB ,MCBSP,SPI,ECAN,ADC的时钟被使能
// 通常为了降低功耗,没用到的外设,时钟关闭
   SysCtrlRegs.PCLKCR.bit.EVAENCLK=1;
   SysCtrlRegs.PCLKCR.bit.EVBENCLK=1;
   SysCtrlRegs.PCLKCR.bit.SCIAENCLK=1;
   SysCtrlRegs.PCLKCR.bit.SCIBENCLK=1;
   SysCtrlRegs.PCLKCR.bit.MCBSPENCLK=1;
   SysCtrlRegs.PCLKCR.bit.SPIENCLK=1;
   SysCtrlRegs.PCLKCR.bit.ECANENCLK=1;
   SysCtrlRegs.PCLKCR.bit.ADCENCLK=1;
   EDIS;
}

  • 5
    点赞
  • 18
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值