📄 test.c
字号:
#define Fcco 1105920
#define Fcclk Fcco/4
#define Fpclk Fcclk/4
void sysinit(void)
{
#ifdef __DEBUG
MEMMAP = 0x3;
#endif
#ifdef __OUT_CHIP
MEMMAP = 0x3;
#endif
#ifdef __IN_CHIP
MEMMAP = 0x1; /*根据预定义的宏,设置存储器映射方式*/
#endif
/* 设置系统各部分时钟 */
PLLCON = 1; /*使能PLL(锁相环),但不连接PLL*/
#if (Fpclk / (Fcclk / 4)) == 1
VPBDIV = 0;
#endif
#if (Fpclk / (Fcclk / 4)) == 2
VPBDIV = 2;
#endif
#if (Fpclk / (Fcclk / 4)) == 4
VPBDIV = 1;
#endif /*设置外设时钟(VPB时钟pclk)与系统时钟(cclk)的分频比*/
#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); /*根据PLL的电流控制振荡器和系统时钟的频率比,设置PLL的乘因子和除因子*/ #endif
PLLFEED = 0xaa;
PLLFEED = 0x55; /*使用芯片要求的访问序列把数据写入PLL相关寄存器*/
while((PLLSTAT & (1 << 10)) == 0); /*等待PLL跟踪完成*/
PLLCON = 3;
PLLFEED = 0xaa;
PLLFEED = 0x55; /*使PLL连上系统*/
/* 设置存储器加速模块(MAM) */
MAMCR = 0; /*关闭MAM*/
#if Fcclk < 20000000
MAMTIM = 1;
#else
#if Fcclk < 40000000
MAMTIM = 2;
#else
MAMTIM = 3; /*根据Fcclk的大小来设置MAM定时寄存器*/
#endif
#endif
MAMCR = 2; /*使能MAM*/
/* 初始化VIC */
VICIntEnClr = 0xffffffff //;禁止所有中断
VICVectAddr = 0 //;设置向量地址寄存器(VICVectAddr)的值为0
VICIntSelect = 0 // ;将所有中断设置为IRQ中断
}
//程序中的Fcclk、Fcco、Fpclk须在头文件中定义。
void main(void)
{
sysinit();
//init uart
while(1)
{
//todo
}
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -