芯片复制LPC11C14时钟分频详解与代码分析
芯片复制void Main_PLL_Setup ( void ) 主要做三件事:
1、设置PLL的时钟来源为12MHz晶振,再倍频PLL为48Mhz
2、设置主时钟频率为倍频后的频率 即48Mhz
3、设置AHB时钟预分频值
void Main_PLL_Setup ( void )
{
// uint32_t regVal;
/* 先倍频PLL,再让主时钟选择倍频后的PLL 频率 */
ClockSource = OSC_CLK;
// 系统PLL时钟来源:IRC振荡器bit:00、系统振荡器(晶振)bit:01、看门口振荡器 bit:10
LPC_SYSCON->SYSPLLCLKSEL = MAIN_CLKSRCSEL_Val; /* Select system OSC PLL时钟源选择系统振荡器 即外部12M晶振*/
LPC_SYSCON->SYSPLLCLKUEN = 0x01; /* Update clock source 更新PLL选择时钟源 */
LPC_SYSCON->SYSPLLCLKUEN = 0x00; /* toggle Update register once 先写0再写1 达到更新时钟源的目的*/
LPC_SYSCON->SYSPLLCLKUEN = 0x01;
while ( !(LPC_SYSCON->SYSPLLCLKUEN & 0x01) ); /* Wait until updated 等待时钟源更新完毕后向下执*/
// regVal = LPC_SYSCON->SYSPLLCTRL;
// regVal &= ~0x1FF; // 清空0 - 8 位
// LPC_SYSCON->SYSPLLCTRL = (regVal | (MAIN_PLL_P_Val<<5) | MAIN_PLL_M_Val); // P=0 M=3
/* 芯片复制计算公式
模式 1(普通模式)
在这种模式下使能后置分频器,占空比时钟为 50%,频率关系如下:
Fclkout=M×Fclkin=(FCCO)/(2×P) ---> 输出频率 = M * 输入频率 = (156Mhz~320Mhz)/ (2*P)
(1)
为了选择合适的 M 和 P 值,推荐如下步骤:
第 1 步:指定输入时钟频率 Fclkin;
第 2 步:计算 M 值以获得所需的输出频率 Fclkout,M=Fclkout/Fclkin;
第 3 步:找出一个值使得 FCCO=2×P×Fclkout;
第 4 步:检查所有的频率和分频器值是否符合表 3.5 的限定。
*/

芯片解密