读书人

dsPIC33EP 钟表初始化程序

发布时间: 2013-10-31 12:03:52 作者: rapoo

dsPIC33EP 时钟初始化程序

//文件名p33clk.h#ifndef _P33CLK_H_#define _P33CLK_H_//#include "p33clk.h"#defineWDT_ENB_SWDTEN = 1 #defineWDT_DIS_SWDTEN = 0 //时钟源选择#defineOSCLK00   //FRC#defineOSCLK11//带PLL+N分频的FRC#defineOSCLK22//HS MS LS 外部时钟#defineOSCLK33//带PLL的HS MS LS 外部时钟#defineOSCLK44//保留#defineOSCLK55//LPRC#defineOSCLK66//FRC/16#defineOSCLK77//带N分频的FRC//处理器与CPU时钟分频比 #defineDOZEDIV1(0<<12)#defineDOZEDIV2(1<<12)#defineDOZEDIV4(2<<12)#defineDOZEDIV8(3<<12)#defineDOZEDIV16(4<<12)#defineDOZEDIV32(5<<12)#defineDOZEDIV64(6<<12)#defineDOZEDIV128(7<<12)//------------------------------//Fosc = (Fin/V_FRCDIV/N1/N2)*M#defineV_FRCDIVV_FRCDIV1//FRC振荡分频系数#defineV_N1V_N1DIV(2)//x = 2--33 N1 分频系数#defineV_N2V_N2DIV2  //N2 分频系数#defineV_PLLFBDPLLMF(50) //(x=2--513)PLL 倍频比//FRC 分频系数#defineV_FRCDIV10#defineV_FRCDIV21#defineV_FRCDIV42#defineV_FRCDIV83#defineV_FRCDIV164#defineV_FRCDIV325#defineV_FRCDIV646#defineV_FRCDIV2567//N1#defineV_N1DIV(x) (x-2)//N2#defineV_N2DIV20#defineV_N2DIV41#defineV_N2DIV83//PLL 倍频数 M#definePLLMF(x)(x-2)//================================extern void Init_Clk(uint16 OsClk) ;#endif//文件名p33clk.c#include "global.h"#include "p33clk.h"//***************************************// 函数名称:InitClk// 函数功能:初始化时钟// 入口参数:时钟来源选择 FRC分频 pll倍频比// 出口参数:无// 返回值:无// Fosc = (Fin/V_FRCDIV/N1/N2)*M//***************************************void Init_Clk(uint16 OsClk){CLKDIV = 0X0000 ; //处理器与外设时钟比为1:1_FRCDIV = V_FRCDIV ; //FRC分频系数_PLLPOST = V_N2 ;//N2_PLLPRE = V_N1 ;//N1PLLFBD = V_PLLFBD ;// PLL倍频OSCTUN = 0X0000 ; //振荡器调节寄存器 默认7.37MREFOCON = 0X0000  ; //参考时钟=系统时钟 OSCCON = 0X0000 ; _OSWEN = 1 ; //请求切换由NOSC指定的时钟_NOSC = OsClk ; //切换 新的振荡器 while(_OSWEN) ;//等待时钟切换完成if((_NOSC == OSCLK1) ||(_NOSC == OSCLK3))//带PLL{while(!_LOCK) ;//等待PLL锁定}REFOCON |= 0X8000 ; //参考时钟输出使能 }//应用实例 -- 时钟初始化//FRC 系统时钟1分频到CPU PLL倍频50 //Fin = 7.37M   Fcpu = Fosc/2 = 46.0625M  Init_Clk(OSCLK1) ;

读书人网 >移动开发

热点推荐