📄 pll.c
字号:
/*
*********************************************************************************************************
* 文件: PLL.C
* 描述: 初始化 PLL.VPB.MAM 等功能部件,根据目标板的要求更改相应频率设置在 PLL.H 中.
* 编写: 深思 (001-12345@sohu.com).
*********************************************************************************************************
*/
#include "includes.h"
/*
********************************************************************************************************
* 函数: void PLLInit(void).
* 描述: 设置 PLL. VPB. MAM. 等功能器件.
********************************************************************************************************
*/
void PLLInit(void)
{
PLLCON = 1; /* PLL 使能. */
#if ((Fcclk / 4) / Fpclk) == 1
VPBDIV = 0;
#endif
#if ((Fcclk / 4) / Fpclk) == 2
VPBDIV = 2;
#endif
#if ((Fcclk / 4) / Fpclk) == 4
VPBDIV = 1;
#endif
#if (Fcco / Fcclk) == 2
PLLCFG = ((Fcclk / Fosc) - 1) | (0 << 5);
#endif
#if (Fcco / Fcclk) == 4
PLLCFG = ((Fcclk / Fosc) - 1) | (1 << 5);
#endif
#if (Fcco / Fcclk) == 8
PLLCFG = ((Fcclk / Fosc) - 1) | (2 << 5);
#endif
#if (Fcco / Fcclk) == 16
PLLCFG = ((Fcclk / Fosc) - 1) | (3 << 5);
#endif
PLLFEED = 0xaa;
PLLFEED = 0x55; /* 馈送序列. */
while((PLLSTAT & (1 << 10)) == 0); /* 等待 PLL 锁定. */
PLLCON = 3;
PLLFEED = 0xaa;
PLLFEED = 0x55;
MAMCR = 2; /* 设置存储器加速模块 */
#if Fcclk < 20000000
MAMTIM = 1;
#else
#if Fcclk < 40000000
MAMTIM = 2;
#else
MAMTIM = 3;
#endif
#endif
VICIntEnClr = 0x0ffffffff; /* 初始化VIC. */
VICSoftIntClear = 0x0ffffffff;
VICVectAddr = 0;
}
/*
*********************************************************************************************************
* END.
*********************************************************************************************************
*/
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -