当前位置:网站首页>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
边栏推荐
- Tianlong Babu TLBB series - about items dropped from packages
- CSDN always jumps to other positions when editing articles_ CSDN sends articles without moving the mouse
- Completion report of communication software development and Application
- Workmanager learning 1
- Customize the left sliding button in the line in the applet, which is similar to the QQ and Wx message interface
- La vue latérale du cycle affiche cinq demi - écrans en dessous de cinq distributions moyennes
- How do programmers live as they like?
- 钉钉、企微、飞书学会赚钱了吗?
- 面试:List 如何根据对象的属性去重?
- 自动化规范检查软件如何发展而来?
猜你喜欢

Learning note 4 -- Key Technologies of high-precision map (Part 2)

How to plan the career of a programmer?

ByteDance Interviewer: how to calculate the memory size occupied by a picture

isEmpty 和 isBlank 的用法区别

Idea create a new sprintboot project

重磅:国产IDE发布,由阿里研发,完全开源!

到底谁才是“良心”国产品牌?

Learning Note 6 - satellite positioning technology (Part 1)

How to write high-quality code?

Advanced opencv:bgr pixel intensity map
随机推荐
La vue latérale du cycle affiche cinq demi - écrans en dessous de cinq distributions moyennes
QT implements JSON parsing
@SerializedName注解使用
How to judge that the thread pool has completed all tasks?
NCP1342芯片替代料PN8213 65W氮化镓充电器方案
Fluent generates icon prompt logo widget
IDEA新建sprintboot项目
Livedata interview question bank and answers -- 7 consecutive questions in livedata interview~
Learning notes 5 - high precision map solution
Dedecms website building tutorial
《微信小程序-基础篇》小程序中的事件与冒泡
Tianlong Babu TLBB series - questions about skill cooling and the number of attack ranges
Uni app running to wechat development tool cannot Preview
【JS】数组降维
Workmanager Learning one
SLAM 01.人类识别环境&路径的模型建立
5G NR系统架构
@Jsonadapter annotation usage
A high density 256 channel electrode cap for dry EEG
到底谁才是“良心”国产品牌?