dsPIC33EP 时钟初始化程序

dsPIC33EP 时钟初始化程序

//文件名p33clk.h

#ifndef _P33CLK_H_
#define _P33CLK_H_
//#include "p33clk.h"

#define		WDT_ENB		_SWDTEN = 1 
#define		WDT_DIS		_SWDTEN = 0 
//时钟源选择
#define		OSCLK0		0   //FRC
#define		OSCLK1		1	//带PLL+N分频的FRC
#define		OSCLK2		2	//HS MS LS 外部时钟
#define		OSCLK3		3	//带PLL的HS MS LS 外部时钟
#define		OSCLK4		4	//保留
#define		OSCLK5		5	//LPRC
#define		OSCLK6		6	//FRC/16
#define		OSCLK7		7	//带N分频的FRC


//处理器与CPU时钟分频比 
#define		DOZEDIV1	(0<<12)
#define		DOZEDIV2	(1<<12)
#define		DOZEDIV4	(2<<12)
#define		DOZEDIV8	(3<<12)
#define		DOZEDIV16	(4<<12)
#define		DOZEDIV32	(5<<12)
#define		DOZEDIV64	(6<<12)
#define		DOZEDIV128	(7<<12)

//------------------------------
//Fosc = (Fin/V_FRCDIV/N1/N2)*M

#define		V_FRCDIV	V_FRCDIV1	//FRC振荡分频系数
#define		V_N1		V_N1DIV(2)	//x = 2--33 N1 分频系数
#define		V_N2		V_N2DIV2  //N2 分频系数
#define		V_PLLFBD	PLLMF(50) //(x=2--513)PLL 倍频比

//FRC 分频系数
#define		V_FRCDIV1		0
#define		V_FRCDIV2		1
#define		V_FRCDIV4		2
#define		V_FRCDIV8		3
#define		V_FRCDIV16		4
#define		V_FRCDIV32		5
#define		V_FRCDIV64		6
#define		V_FRCDIV256		7
//N1
#define		V_N1DIV(x)		 (x-2)

//N2
#define		V_N2DIV2		0
#define		V_N2DIV4		1
#define		V_N2DIV8		3

//PLL 倍频数 M
#define		PLLMF(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 ;//N1
	PLLFBD = V_PLLFBD ;// PLL倍频
	
	OSCTUN = 0X0000 ; //振荡器调节寄存器 默认7.37M
	REFOCON = 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) ;

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请联系我们举报,一经查实,本站将立刻删除。

发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/109983.html原文链接:https://javaforall.net

(0)
全栈程序员-站长的头像全栈程序员-站长


相关推荐

  • msfconsole模块_msfconsole下载

    msfconsole模块_msfconsole下载Msfconsole提供了一个一体化的集中控制台。通过msfconsole,你可以访问和使用所有的metasploit的插件,payload,利用模块,post模块等等。Msfconsole还有第三方程序的接口,比如nmap,sqlmap等,可以直接在msfconsole里面使用。在启动MSF终端之后,可以首先输入help命令列出MSF终端所支持的命令列表,包括核心命令集和后端数据库命令集。对于其中的大部分命令,你可以输入help[COMMAND],进一步查看该命令的使用帮助信息。一、Msfconso

    2022年9月6日
    3
  • js之校验邮箱_如何验证邮箱

    js之校验邮箱_如何验证邮箱JavaScript使用正则表达式校验邮箱有效性,方法如下:functionvalidateMail(mail){//校验邮箱if(mail!=""){varstrRegex=/^(\w-*\.*)+@(\w-?)+(\.\w{2,})+$/;if(!strRegex.test(mail)){jAlert("&lt;divid=’popup_me…

    2022年9月23日
    0
  • Android代码混淆及反编译

    Android代码混淆及反编译如果你目前还是一名学生或是没有在应用商店中上传过应用,恐怕对此的感受不深。而在企业中对Java代码的混淆却是一步很重要的步骤,从安全的角度来说,代码混淆,防止居心不良的人对代码进行恶意篡改非常重要。下面就是对Android项目进行的代码混淆和加密签名过程。

    2022年5月30日
    50
  • winscp链接linux网络错误被决绝,解决了winscp连接不上的问题

    winscp链接linux网络错误被决绝,解决了winscp连接不上的问题在windows系统和虚拟机装的linux上互传文件时,可以用winscp。第一次用winscp时,老是连接不到linux上。但是两个系统都可以上网,还能ping通。还以为是端口22被什么进程占用。我的是windows2003的,虚拟机是redhatlinux9.0的。昨天下午又试试了,就解决这个问题啦。2.把linux里的防火墙给关了。步骤:在终端输入setup,在防火墙选择处,选择“无防…

    2022年9月15日
    0
  • 搏一搏 单车变摩托,是时候捣鼓一下家中的小米电视机啦。[通俗易懂]

    搏一搏 单车变摩托,是时候捣鼓一下家中的小米电视机啦。[通俗易懂]事因因为家中有一台小米电视机,但是平时使用起来体验很差(1G内存,8G存储,CPU型号CortexA534核心1.5GHz),如今视频平台很多,Bilibili、爱奇艺、优酷、腾讯视频、芒果TV等平台。很多视频通过小米电视找不到,一部分原因是小米电视机的界面太炫丽,导致家中老人不太会操作,就是我用起来都觉得麻烦。想了一下,实在不行就干脆换系统。后来看到一些文章,可以更换界面,卸载一些不用的软件。当贝桌面,体验了一下。装完后,发现还不错,接近手机清爽的界面。装完主界面如下,系统自带的一些软件

    2022年6月27日
    32
  • android菜鸟教程_菜鸟软件下载app

    android菜鸟教程_菜鸟软件下载app相对布局是通过相对定位的方式让控件出现在布局任意位置; 在相对布局中如果不指定控件摆放的位置,那么控件都会被默认放在RelativeLayout的左上角。因此要先指定第一个控件的位置,其他控件为该位置的相对位置;RelativeLayout属性:(使用相对布局属性需要先指定控件的id,其他控件根据该控件的id,来确定相对于该控件的相对位置)示例:xmlversion=”1

    2025年6月22日
    0

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注全栈程序员社区公众号