NUC140之设置主频
来源:互联网 发布:李小璐分享淘宝店链接 编辑:程序博客网 时间:2024/04/30 03:29
本人用的是NUC140VE3CN,这款芯片主频是50MHz,如果采用默认值的话大约为20多M,如何才能设置到50MHz呢。
根据芯片手册,这款单片机的主频频率就是HCLK的频率,而HCLK要想达到50MHz,需要选择时钟源为PLL输出,
在此我选用的外部晶振为12MHz。
贴出程序如下:
void setup_HCLK (void)
{
uint32_t u32PllCr;
/*初始化系统时钟*/
DrvSYS_UnlockProtectedReg (); //解锁受保护的系统寄存器
DrvSYS_SetOscCtrl (E_SYS_XTL12M, 1); //使能外部12M晶振
DrvSYS_SetIPClock (E_SYS_FDIV_CLK, 1); //使能分频器输出
SYSCLK->PLLCON.PLL_SRC = E_SYS_EXTERNAL_12M; //PLL时钟源选择外部时钟;NF、NR约束性参考用户手册"PLL控制寄存器部分"
u32PllCr = DrvSYS_GetPLLContent (E_SYS_EXTERNAL_12M, 48000000); //获得目标时钟频率所需数据,外部12MHz晶振,48MHz主频
DrvSYS_SetPLLContent (u32PllCr); //设置HCLK为48MHz,可用GETHCLK函数来实测
// SYSCLK->PLLCON.OUT_DV = 3; //公式: FOUT = (FIN/NO)*(NF/NR) = 12MHz/4*16 = 48MHz
// SYSCLK->PLLCON.FB_DV = 46; //NF = FB_DV + 2; NR = IN_DV + 2;
// SYSCLK->PLLCON.IN_DV = 1; //NO = 4 => OUT_DV = '11' ; NO = 2 => OUT_DV = '01' or '10'; NO = 1 => OUT_DV = '00';
SYSCLK->PLLCON.OE = 0; //PLL FOUT 使能
SYSCLK->PLLCON.PD = 0; //PLL 正常模式
delay(2000); //等待PLL稳定
DrvSYS_SelectHCLKSource(2); //选择HCLK为PLL输出
DrvSYS_LockProtectedReg (); //对系统寄存器上锁
}
现在总结一下步骤:
(1)使能外部晶振,看库函数实际上就是设置了PWRCON这个掉电控制寄存器;
(2)使能分频器的输出;
(3)选择PLL时钟源为外部12M晶振;
(4)配置PLL分频器,如果用DrvSYS_GetPLLContent和DrvSYS_SetPLLContent就不必自己技术PLL的分频比,注释掉的三行就是自己计算的;
(5)选择HCLK时钟源为PLL输出;
(6)由于其中涉及的很多寄存器都是写保护的,所以要解锁,并且记得设置完毕后上锁。
芯片频率高了,也会发热,建议不需要太高频率的话,不必设置到满频率,超频的话请自己小心。
注:库函数和相应的配置头文件在本人的资源里免积分下载
- NUC140之设置主频
- NUC140之定时器
- NUC140之看门狗
- NUC140之ADC
- NUC140之定时器2
- mini6410主频设置
- S3C6410设置667主频率
- LPC1768 主频设置100MHz
- 主频
- 210BV04_wince之主频修改
- STM32 不同主频下的定时器死区设置
- CPU卡程序设计实例(五)单片机系统主频设置
- 处理器主频
- 玩转Kinetis之教你将K60主频超到200MHz以上
- 编程计算CPU主频
- 内存_主频
- CPU主频认识
- 小常识:什么是主频?
- UIApplicationMain函数四个参数的含义
- 如何在Ubuntu中自定义键盘快捷[译]
- Failed to Copy Aritfact in Eclipse Ganymede with Workspace Resolution Enabled
- js中替换window.onload的方法 document.ready
- Oracle中Service Name、Database name、Instance Name的区别
- NUC140之设置主频
- C中的增量++和减量--运算符
- 我在赶集网的两个月(职场新人也可以制造传奇)
- 面向对象的static
- iPhone开发【十三】动画效果之最简单的动画——动态加载图片
- Words study
- c中的指针的理解
- linux加载iso文件
- 僅存的夢被擊碎