silverviolet 发表于 2019-12-19 22:47

求助个关于ARM时钟的问题

本帖最后由 silverviolet 于 2019-12-19 22:50 编辑

ARM修改时钟

https://www.cnblogs.com/Wayne123/p/9816117.html


上面是原链接的详细过程,对于其中一段不明,有请懂行的兄弟解释解析,不胜感激。


/* 设置CPU工作于异步模式    ** 如果不作此设置,当HDIVN不是0时,CPU会采用HCLK的频率而不是采用FCLK的频率    */    mrc p15,0,r0,c1,c0,0    orr r0,r0,#0xc0000000    // #R1_nF:OR:R1_iA等价于#0xc0000000    mcr p15,0,r0,c1,c0,0    /* 设置MPLL的PMS,使得FCLK=400MHz    ** m = MDIV+8 = 92+8=100    ** p = PDIV+2 = 1+2 = 3    ** s = SDIV   = 1    ** FCLK = 2*m*Fin/(p*2^s) = 2*100*12/(3*2^1)=400MHz    */    ldr r0,=0x4C000004    ldr r1,=(92<<12)|(1<<4)|(1<<0)    str r1,
就其中(92<<12)|(1<<4)|(1<<0) ,92左移12位啥情况,92不是10进制数吗?

officektv 发表于 2019-12-19 23:36

你的意思是10进制数不能左移吗???

silverviolet 发表于 2019-12-19 23:38

officektv 发表于 2019-12-19 23:36
你的意思是10进制数不能左移吗???

不是不能,为啥左移12位,而不是11,也不是其他?

officektv 发表于 2019-12-19 23:42

silverviolet 发表于 2019-12-19 23:38
不是不能,为啥左移12位,而不是11,也不是其他?

它上面不是有解释吗。。。
FCLK通过HDIVN分频得到HCLK,通过PDIVN分频得到PCLK,这里设置FCLK:HCLK:PCLK=400MHz : 100MHz : 50Hz
   1、修改MPLLCON寄存器中MDIV ,PDIV ,SDIV的值为92 ,1 ,1,可以得到FCLK为400MHz
   2、修改CLKDIVN中,HDIVN和PDIVN分别为0b10和1,使得HCLK=FCLK/4 , PCLK=HCLK/2

silverviolet 发表于 2019-12-19 23:54

officektv 发表于 2019-12-19 23:42
它上面不是有解释吗。。。
FCLK通过HDIVN分频得到HCLK,通过PDIVN分频得到PCLK,这里设置FCLK:HCLK:PCLK ...

MDIV这里我也看了,韦老师的视频也看了,翻了网上的资料,依旧看不明白这里的左移12位。{:1_908:}

officektv 发表于 2019-12-19 23:59

silverviolet 发表于 2019-12-19 23:54
MDIV这里我也看了,韦老师的视频也看了,翻了网上的资料,依旧看不明白这里的左移12位。

????
这就是纯粹的设置某个整数的某些比特位的值的运算啊。。。
页: [1]
查看完整版本: 求助个关于ARM时钟的问题