帮我翻译一下代码void main(void) { InitPll(0x0A); } void InitPll(unsigned int val) { EALLOW; SysCtrlReg.PLLCR.bit.DIV=val; EDIS; }
时间: 2024-03-13 16:43:53 浏览: 160
这段代码的作用是初始化程序时钟,具体实现如下:
```
void main(void) {
InitPll(0x0A);
}
void InitPll(unsigned int val) {
// 允许访问系统控制寄存器
EALLOW;
// 设置时钟分频器的值
SysCtrlReg.PLLCR.bit.DIV = val;
// 禁止访问系统控制寄存器
EDIS;
}
```
其中,`InitPll` 函数用于设置时钟分频器的值,`val` 参数是分频器的值。在 `main` 函数中,调用 `InitPll` 函数,将分频器的值设置为 `0x0A`。
相关问题
设外部时钟为30兆赫兹若虚设定C P U的时钟频率为150兆赫兹那么初始化P L L C R寄存器的代码如下:void main(void) { InitPll(0x0A); } void InitPll(unsigned int val) { EALLOW; SysCtrlReg.PLLCR.bit.DIV=val; EDIS; }
如果外部时钟为30兆赫兹,虚设定 CPU 的时钟频率为 150 兆赫兹,那么初始化 PLLCR 寄存器的代码如下:
```
void main(void) {
// 将分频器的值设置为 4,使得 CPU 的时钟频率为 30 MHz * 5 / 4 = 37.5 MHz
InitPll(0x04);
}
void InitPll(unsigned int val) {
// 允许访问系统控制寄存器
EALLOW;
// 设置时钟分频器的值
SysCtrlReg.PLLCR.bit.DIV = val;
// 禁止访问系统控制寄存器
EDIS;
}
```
在这里,我们将分频器的值设置为 4,这样 CPU 的时钟频率就会变成 30 MHz * 5 / 4 = 37.5 MHz。注意,这里的 5 指的是 PLLCR 中的乘数因子,也就是我们虚设的 CPU 时钟频率除以外部时钟频率。由于我们虚设定的 CPU 时钟频率是 150 兆赫兹,所以乘数因子为 5。
帮我翻译一下代码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 的函数,用于初始化 PLLCR 寄存器。函数的参数是一个无符号整数 val,表示 PLL 的分频器值。在函数中,定义了一个无符号整型变量 i,并使用关键字 volatile 声明。接着,通过 EALLOW 和 EDIS 宏来使能和禁止写入系统控制寄存器。然后,将 PLLCR 寄存器的 DIV 位设置为传入的参数 val。接着,调用了一个名为 DisableDog 的函数,用于关闭看门狗定时器。最后,通过一个 for 循环等待 PLL 锁定。这个循环的次数是根据特定的时钟频率计算得出的,为 ((131072/2)/12)。
阅读全文