当前位置:网站首页>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
边栏推荐
- Glide conclusion
- 程序员如何活成自己喜欢的模样?
- @Jsonadapter annotation usage
- Blockbuster: the domestic IDE is released, developed by Alibaba, and is completely open source!
- > Could not create task ‘:app:MyTest. main()‘. > SourceSet with name ‘main‘ not found. Problem repair
- AtCoder Beginner Contest 258「ABCDEFG」
- 《微信小程序-基础篇》小程序中的事件与冒泡
- 伪类元素--before和after
- Workmanager learning 1
- Dedecms website building tutorial
猜你喜欢
5G NR系统架构
“军备竞赛”时期的对比学习
5g NR system architecture
> Could not create task ‘:app:MyTest. main()‘. > SourceSet with name ‘main‘ not found. Problem repair
钉钉、企微、飞书学会赚钱了吗?
Idea create a new sprintboot project
> Could not create task ‘:app:MyTest.main()‘. > SourceSet with name ‘main‘ not found.问题修复
驱动制造业产业升级新思路的领域知识网络,什么来头?
isEmpty 和 isBlank 的用法区别
@Serializedname annotation use
随机推荐
Design and Simulation of fuzzy PID control system for liquid level of double tank (matlab/simulink)
5G NR系统架构
C language QQ chat room small project [complete source code]
How to write high-quality code?
驱动制造业产业升级新思路的领域知识网络,什么来头?
B站大量虚拟主播被集体强制退款:收入蒸发,还倒欠B站;乔布斯被追授美国总统自由勋章;Grafana 9 发布|极客头条...
Cerebral cortex: directed brain connection recognition widespread functional network abnormalities in Parkinson's disease
Implementation of wechat applet bottom loading and pull-down refresh
“军备竞赛”时期的对比学习
到底谁才是“良心”国产品牌?
pytorch输出tensor张量时有省略号的解决方案(将tensor完整输出)
学习笔记4--高精度地图关键技术(下)
Advanced opencv:bgr pixel intensity map
Constrained layout flow
[tips] get the x-axis and y-axis values of cdfplot function in MATLAB
vscode的快捷键
C语言实现QQ聊天室小项目 [完整源码]
Interview: is bitmap pixel memory allocated in heap memory or native
[observation] with the rise of the "independent station" model of cross-border e-commerce, how to seize the next dividend explosion era?
程序员如何活成自己喜欢的模样?