求助个关于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进制数吗? 你的意思是10进制数不能左移吗??? officektv 发表于 2019-12-19 23:36
你的意思是10进制数不能左移吗???
不是不能,为啥左移12位,而不是11,也不是其他? 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
officektv 发表于 2019-12-19 23:42
它上面不是有解释吗。。。
FCLK通过HDIVN分频得到HCLK,通过PDIVN分频得到PCLK,这里设置FCLK:HCLK:PCLK ...
MDIV这里我也看了,韦老师的视频也看了,翻了网上的资料,依旧看不明白这里的左移12位。{:1_908:} silverviolet 发表于 2019-12-19 23:54
MDIV这里我也看了,韦老师的视频也看了,翻了网上的资料,依旧看不明白这里的左移12位。
????
这就是纯粹的设置某个整数的某些比特位的值的运算啊。。。
页:
[1]