汇编实现时钟设置代码详解1~2

本文是朱老师物联网大讲堂的学习笔记,详细解析了如何用汇编语言设置时钟,包括寄存器定位、分频设置和PLL倍频参数配置。通过对数据手册的引用,解释了代码中的宏定义和操作步骤。
摘要由CSDN通过智能技术生成

《朱老师物联网大讲堂》学习笔记

学习地址:www.zhulaoshi.org


这次的代码,可以在上次重定位的代码基础上进行添加,或者icache设置代码基础上增加,

这里我是选择的是重定位的代码。


新增代码的位置,选择的是关看门狗后。

bl clock_init

初始化时钟单独通过一个函数来实现,

通过这句代码跳转到对应函数。


为了能更好的解释代码,我选择了在解释代码的同时,在旁边附上对应数据手册的图片。

那么开始吧!


#define ELFIN_CLOCK_POWER_BASE0xE0100000

在这里定了一个基地址,通过使用 基地址 + 偏移地址 的方法来定位到我们要访问的寄存器位,

这个用法在重定位也用过,

对于那些寄存器功能相关,地址相连的寄存器,很适合使用这种方法。

见数据手册P367,有没有看到第一个32位寄存器的地址就是我上面那句话的值,

这里只是为了说明,所以就没把后面那好几大页贴出来。


后面就是偏移量的宏定义,

#define APLL_LOCK_OFFSET 0x00
#define MPLL_LOCK_OFFSET 0x08


#define APLL_CON0_OFFSET 0x100
#define APLL_CON1_OFFSET 0x104
#define MPLL_CON_OFFSET 0x108


#define CLK_SRC0_OFFSET 0x200
#define CLK_SRC1_OFFSET 0x204
#define CLK_SRC2_OFFSET 0x208
#define CLK_SRC3_OFFSET 0x20c
#define CLK_SRC4_OFFSET 0x210
#define CLK_SRC5_OFFSET 0x214
#define CLK_SRC6_OFFSET 0x218
#define CLK_SRC_MASK0_OFFSET 0x280
#define CLK_SRC_MASK1_OFFSET 0x284


#define CLK_DIV0_OFFSET 0x300
#define CLK_DIV1_OFFSET 0x304
#define CLK_DIV2_OFFSET 0x308
#define CLK_DIV3_OFFSET 0x30c

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值