当前位置:网站首页>dsPIC33EP 时钟初始化程序
dsPIC33EP 时钟初始化程序
2022-07-05 10:13:00 【全栈程序员站长】
//文件名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.cn/109983.html原文链接:https://javaforall.cn
边栏推荐
- 《剑来》语句摘录(七)
- 学习笔记5--高精地图解决方案
- C语言实现QQ聊天室小项目 [完整源码]
- 程序员如何活成自己喜欢的模样?
- How do programmers live as they like?
- 如何写出高质量的代码?
- 微信小程序触底加载与下拉刷新的实现
- Interview: is bitmap pixel memory allocated in heap memory or native
- CSDN always jumps to other positions when editing articles_ CSDN sends articles without moving the mouse
- 报错:Module not found: Error: Can‘t resolve ‘XXX‘ in ‘XXXX‘
猜你喜欢
【Vite】1371- 手把手开发 Vite 插件
Unity particle special effects series - the poison spray preform is ready, and the unitypackage package can be used directly - next
Universal double button or single button pop-up
5g NR system architecture
Advanced opencv:bgr pixel intensity map
IDEA新建sprintboot项目
[tips] get the x-axis and y-axis values of cdfplot function in MATLAB
AtCoder Beginner Contest 254「E bfs」「F st表维护差分数组gcd」
“军备竞赛”时期的对比学习
pytorch输出tensor张量时有省略号的解决方案(将tensor完整输出)
随机推荐
Secteur non technique, comment participer à devops?
如何写出高质量的代码?
Error: module not found: error: can't resolve 'xxx' in 'XXXX‘
How do programmers live as they like?
驱动制造业产业升级新思路的领域知识网络,什么来头?
Today in history: the first e-book came out; The inventor of magnetic stripe card was born; The pioneer of handheld computer was born
C#函数返回多个值方法
Customize the left sliding button in the line in the applet, which is similar to the QQ and Wx message interface
Unity particle special effects series - the poison spray preform is ready, and the unitypackage package is directly used - on
Qt实现json解析
"Everyday Mathematics" serial 58: February 27
Idea create a new sprintboot project
Go项目实战—参数绑定,类型转换
微信小程序触底加载与下拉刷新的实现
Universal double button or single button pop-up
Energy momentum: how to achieve carbon neutralization in the power industry?
Advanced opencv:bgr pixel intensity map
ConstraintLayout官方提供圆角ImageFilterView
非技術部門,如何參與 DevOps?
Who is the "conscience" domestic brand?