帮我翻译一下代码void InitPll(unsigned int val) { volatile unsigned int i; EALLOW; SysCtrlRegs.PLLCR.bit.DIV = val; EDIS; DisableDog(); // Wait PLL lock cycles. for(i= 0; i< ( (131072/2)/12 ); i++) {;} } }
时间: 2024-04-23 10:23:54 浏览: 12
这段代码的作用是初始化PLL(相锁环),函数名为InitPll,参数为unsigned int类型的val。函数中使用了volatile unsigned int i来作为循环计数器,使用EALLOW和EDIS来打开和关闭系统控制寄存器的保护机制,使用SysCtrlRegs.PLLCR.bit.DIV = val来设置PLL的分频值。最后使用for循环等待PLL锁定,循环次数为131072/2/12,即等待PLL锁定的周期数。同时,函数中还调用了DisableDog函数来禁用看门狗。
相关问题
帮我详细翻译一下代码void InitPll(unsigned int val) { volatile unsigned int i; EALLOW; SysCtrlRegs.PLLCR.bit.DIV = val; EDIS; DisableDog(); // Wait PLL lock cycles. for(i= 0; i< ( (131072/2)/12 ); i++) {;} } }
这段代码的作用是初始化PLL(相锁环),函数名为InitPll,参数为一个无符号整型val。
在函数中,定义了一个volatile无符号整型变量i用于循环计数。使用EALLOW和EDIS来打开和关闭系统控制寄存器的保护机制,这样就可以访问SysCtrlRegs.PLLCR.bit.DIV寄存器,将其设置为传入参数val,从而设置PLL的分频值。
接下来,调用了一个名为DisableDog的函数来禁用看门狗。在此之后,使用for循环等待PLL锁定。循环次数为131072/2/12,即等待PLL锁定的周期数。在循环中没有任何实际的操作,只是等待一段时间。
最终,该函数完成了PLL的初始化,并等待PLL锁定。
帮我翻译一下这段代码void InitPll(unsigned int val) { volatile unsigned int i; EALLOW; SysCtrlRegs.PLLCR.bit.DIV = val; EDIS; DisableDog(); // Wait PLL lock cycles. for(i= 0; i< ( (131072/2)/12 ); i++) {;} } }
这段代码是一个函数,函数名为 InitPll,参数为一个无符号整数 val。函数的主要作用是初始化系统的 PLL(锁相环)。
函数内部首先使用关键字 volatile 定义了一个无符号整数 i,然后使用 EALLOW 和 EDIS 宏打开和关闭了对一些寄存器的访问保护。
接下来,函数将传入的参数 val 赋值给 SysCtrlRegs.PLLCR.bit.DIV 寄存器中的 DIV 位。该寄存器用于控制 PLL 的分频器,通过设置该寄存器中的 DIV 位可以控制 PLL 的输出频率。
然后,函数调用了 DisableDog 函数,该函数用于关闭看门狗定时器。
最后,函数使用一个 for 循环等待 PLL 锁定。循环内部的代码是一个延时函数,通过循环次数来实现延时。这里循环的次数是 ( (131072/2)/12 ),其中 131072 表示 PLL 的输出频率,12 表示延时函数每次循环需要的 CPU 时钟周期数。