汇编实现时钟代码详解

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)

  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值