📄 dsp281x_sysctrl.c
字号:
#include "DSP281x_Device.h" // DSP281x Headerfile Include File
#include "DSP281x_Examples.h" // DSP281x Examples Include File
#pragma CODE_SECTION(InitFlash, "ramfuncs");
void InitSysCtrl(void)
{
DisableDog();
InitPll(0x06); //clkin=90MHz
InitPeripheralClocks();
}
void InitFlash(void)
{
EALLOW;
FlashRegs.FOPT.bit.ENPIPE = 1;
FlashRegs.FBANKWAIT.bit.RANDWAIT = 5;
FlashRegs.FBANKWAIT.bit.PAGEWAIT = 5;
FlashRegs.FSTDBYWAIT.bit.STDBYWAIT = 0x01FF;
FlashRegs.FACTIVEWAIT.bit.ACTIVEWAIT = 0x01FF;
EDIS;
asm(" RPT #7 || NOP");
}
void KickDog(void)
{
EALLOW;
SysCtrlRegs.WDKEY = 0x0055;
SysCtrlRegs.WDKEY = 0x00AA;
EDIS;
}
void DisableDog(void)
{
EALLOW;
SysCtrlRegs.WDCR= 0x0068;//第6位 WDDIS=1 屏蔽看门狗
EDIS;
}
void InitPll(Uint16 val)//val=ox06
{
volatile Uint16 iVol;
if (SysCtrlRegs.PLLCR.bit.DIV != val)
{
EALLOW;
SysCtrlRegs.PLLCR.bit.DIV = val;//CLKIN=OSCCLK*6/2=90M
EDIS;
DisableDog();
for(iVol= 0; iVol< ( (131072/2)/12 ); iVol++)//等待锁相环锁定
{
;
}
}
}
void InitPeripheralClocks(void)
{
EALLOW;
// HISPCP/LOSPCP prescale register settings, normally it will be set to default values
SysCtrlRegs.HISPCP.all = 0x0003; //HISPCP=SYSCLK/2*3=15M/25M
SysCtrlRegs.LOSPCP.all = 0x0005; //LOSPCP=SYSCLK/2*5=9M/15M
// Peripheral clock enables set for the selected peripherals.
SysCtrlRegs.PCLKCR.bit.EVAENCLK=1;//使能EVA
SysCtrlRegs.PCLKCR.bit.EVBENCLK=0;//不使能EVB
SysCtrlRegs.PCLKCR.bit.ADCENCLK=1;//使能ADC
SysCtrlRegs.PCLKCR.bit.SPIENCLK=0;//不使能SPI
SysCtrlRegs.PCLKCR.bit.SCIAENCLK=0;//不使能SCI-A
SysCtrlRegs.PCLKCR.bit.SCIBENCLK=0;//不使能SCI-B
SysCtrlRegs.PCLKCR.bit.MCBSPENCLK=0;//不使能MCBSP
SysCtrlRegs.PCLKCR.bit.ECANENCLK=0;//不使能ECAN
EDIS;
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -