||
//--------------------------------------------------------------------------
// Example: InitPeripheralClocks:
//---------------------------------------------------------------------------
// This function initializes the clocks to the peripheral modules.
// First the high and low clock prescalers are set
// Second the clocks are enabled to each peripheral.
// To reduce power, leave clocks to unused peripherals disabled
// Note: If a peripherals clock is not enabled then you cannot
// read or write to the registers for that peripheral
void InitPeripheralClocks(void)
{
//等同汇编指令#define EALLOW asm(" EALLOW");原来TI的DSP为了提高安全性能,
//将很多关键寄存器作了保护处理。通过状态寄存器1(ST1)的位6设置与复位,来决定是否
//允许DSP指令对关键寄存器进行操作。这些关键寄存器包括:器件仿真寄存器、FLASH寄存
//器、CSM寄存器、PIE矢量表、系统控制寄存器、GPIOMux寄存器等等。
EALLOW;
// HISPCP/LOSPCP prescale register settings, normally it will be set to default values
SysCtrlRegs.HISPCP.all = 0x0001; //High speed clock = SYSCLKOUT/2=75MHZ
SysCtrlRegs.LOSPCP.all = 0x0002;
// Peripheral clock enables set for the selected peripherals.使能一些外设时钟: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;
//等同#define EDIS asm(" EDIS"),清除状态寄存器1的C6位,来防止杂散代码或指针破坏寄存器内容。
EDIS;
}
转自《C2000手册》
Archiver|手机版|科学网 ( 京ICP备07017567号-12 )
GMT+8, 2024-4-24 15:27
Powered by ScienceNet.cn
Copyright © 2007- 中国科学报社