1、实验项目文件介绍:文件包括mkv210_image.c 、Makefile(在这里第一行的依赖里要添加clock.o)、 led.c、 start.S(这里面用bl调用clock.S中实现时钟设置的函数)、 (这几个文件是在汇编写启动代码之开iCache复制来的),增加了一个clock.S
2、宏定义的应用:
(1)、寄存器访问:时钟模块基地址(ARM里面所有的寄存器都是按模块分的,每个模块里的寄存器地址都是彼此挨着的): 所以我们可以利用宏定义基址 + 宏定义变址(相对基址偏移量)的方式实现访问当前寄存器。
(2)、
//定义APLL中计算倍频系数参数M、P、S的值
#define APLL_MDIV 0x7d // 125
#define APLL_PDIV 0x3
#define APLL_SDIV 0x1
//定义MPLL中计算倍频系数参数M、P、S的值
#define MPLL_MDIV 0x29b // 667
#define MPLL_PDIV 0xc
#define MPLL_SDIV 0x1
//因为APLL和MPLL要设置的寄存器bit位和值都相同,所以这里定义一个公用宏(和C语言中定义一个函数的功能相同)
#define set_pll(mdiv, pdiv, sdiv) (1<<31 | mdiv<<16 | pdiv<<8 | sdiv)
//代入各自参数定义相应的宏
#define APLL_VAL set_pll(APLL_MDIV,APLL_PDIV,APLL_SDIV)
#define MPLL_VAL set_pll(MPLL_MDIV,MPLL_PDIV,MPLL_SDIV)