?? sysclock.c
字號:
#define __SYSCLOCK_H__
#include "Config.h"
/********************************************************************************************************
**函數名稱:SDelay
**函數功能:時鐘切換的延時
**入口參數:無
**出口參數:無
********************************************************************************************************/
void SDelay(uchar T)
{
uchar i;
for(; T > 0; T --)
for(i = 5000; i > 0; i --);
}
/********************************************************************************************************
**函數名稱:SysClockInit
**函數功能:初始化時的時鐘設置
**輸 入:無
**輸 出:無
********************************************************************************************************/
void SysClockInit(void)
{
DEVCLKCFG1 &= 0xF0; //屏蔽時鐘分頻位
DEVCLKCFG1 |= (CLKDIV & 0x0F); //設置分頻值
DEVCLKCFG1 |= BIT5; //使能時鐘分頻器
//--------------------------------------------------------
//外部晶體到內部振蕩器的切換
//--------------------------------------------------------
#if (SYSCLKSOURCE == INTEROSC) //使用內部振蕩器
DEVCLKCFG2 |= BIT6; //使能內部OSC,同時保持外部OSC
SDelay(100); //等待振蕩器穩定
DEVCLKCFG1 |= BIT6; //選擇內部時鐘源
//SDelay(100); //可選的穩定時間
DEVCLKCFG2 &= ~BIT7; //禁止外部時鐘源
//--------------------------------------------------------
//內部振蕩器到外部晶體的切換
//--------------------------------------------------------
#elif(SYSCLKSOURCE == EXTEROSC)
DEVCLKCFG2 = (BIT7 | BIT6 | BIT2); //使能外部晶振,時鐘范圍4M-25M,同時保持內部振蕩器
//SDelay(100); //等待外部晶體振蕩器穩定100ms@40MHz
DEVCLKCFG1 &= ~BIT6; //選擇使用外部振蕩源
//SDelay(100); //可選的延時時間
DEVCLKCFG2 &= ~BIT6; //禁止內部振蕩源
#endif
}
/********************************************************************************************************
**函數名稱:SysClockSet
**函數功能:選擇系統的時鐘函數,注意改變時鐘后,相應的波特率也變化了
**輸 入:無
**輸 出:無
********************************************************************************************************/
/*
void SysClockSet(uchar Source, uchar DIV)
{
//先切換時鐘源再設置分頻
switch(Source)
{
case INTEROSC:
DEVCLKCFG2 = BIT7 | BIT6; //使能內部振蕩器,同時保持外部振蕩器使能
SwitchDelay(10); //等待內振蕩器穩定100ms@40MHz
DEVCLKCFG1 |= BIT6; //選擇使用內部振蕩源
SwitchDelay(10); //可選的延時時間
DEVCLKCFG2 &= ~BIT7; //禁止外部振蕩器
break;
case EXTEROSC:
DEVCLKCFG2 = (BIT7 | BIT6 | BIT2); //使能外部晶振,時鐘范圍4M-25M,同時保持內部振蕩器
SwitchDelay(10); //等待外部晶體振蕩器穩定100ms@40MHz
DEVCLKCFG1 &= ~BIT6; //選擇使用外部振蕩源
SwitchDelay(10); //可選的延時時間
DEVCLKCFG2 &= ~BIT6; //禁止內部振蕩源
break;
default:
break;
}
DEVCLKCFG1 &= 0xF0; //設置分頻值
DEVCLKCFG1 |= (DIV & 0x0F); //
}
*/
?? 快捷鍵說明
復制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號
Ctrl + =
減小字號
Ctrl + -