日本高清不卡中文字幕-一起草草视频在线观看-亚洲精品一区二区三区色-国产亚洲精品免费视频

您好,歡迎進入深圳市穎特新科技有限公司官方網(wǎng)站!

您現(xiàn)在的位置:首頁 新聞資訊 >> 新聞頭條 >> N76E003系統(tǒng)時鐘
新聞資訊
NEWS INFORMATION

N76E003系統(tǒng)時鐘

關(guān)鍵字:新唐單片機 N76E003 發(fā)布時間:2019-05-22

系統(tǒng)時鐘源

N76E003共有3種系統(tǒng)時鐘源,包括: 內(nèi)部高速/低速振蕩器、外部輸入時鐘。它們每一個都可以作為N76E003的系統(tǒng)時鐘源。開啟不同的時鐘源可能會影響到多功能引腳P3.0/XIN 。

內(nèi)部振蕩器

N76E003內(nèi)部有兩個RC振蕩器,一個高速16MHz(HIRC)和一個低速10 kHz(LIRC)。它們都可被選擇用作系統(tǒng)時鐘。通過設(shè)置HIRCEN (CKEN.5)位使能HIRC,設(shè)備上電時LIRC被使能。用戶可設(shè)置OSC[1:0] (CKSWT[2:1])為[0,0]選擇HIRC作為系統(tǒng)時鐘,設(shè)置OSC[1:0](CKSWT [1:0])為[1,0]選擇LIRC作為系統(tǒng)時鐘。注意:

N76E003上電后HIRC 和 LIRC都被使能,并且系統(tǒng)默認HIRC為系統(tǒng)時鐘。當(dāng)系統(tǒng)使用內(nèi)部振蕩器作為時鐘源時,XIN 自動作為普通I/O P3.0,用來擴展普通I/O數(shù)量?梢酝ㄟ^配置P3M1和P3M2寄存器來選擇P3.0的輸出模式。

23.2 系統(tǒng)時鐘切換

N76E003可以通過軟件設(shè)置CKSWT 和 CKEN寄存器切換時鐘源。這給應(yīng)用帶來了很大方便。注意,這些特殊寄存器是寫時效訪問控制受TA保護寄存器。

在時鐘源控制下,時鐘源可以在外部時鐘、內(nèi)部時鐘,甚至內(nèi)部高速與低速之間自由的切換。

然而在切換時鐘源時,必須確保待切換時鐘源已穩(wěn)定。因此,用戶需要遵循以下設(shè)置步驟才能成功完成時鐘源切換。

用戶首先要通過配置CKEN寄存器打開目標(biāo)時鐘源,再通過查詢CKSWT寄存器中對應(yīng)的標(biāo)志位,確定時鐘源是否穩(wěn)定,并且通過寫OSC[1:0] (CKSWT[2:1])切換到目標(biāo)時鐘源。

這些步驟過后,將會成功的切換時鐘源。如果用戶關(guān)心功耗的話,可以將原先時鐘源關(guān)閉了。如果不遵守以上步驟,硬件將會采取以下一些措施來應(yīng)對這些違規(guī)的操作。

1.如果用戶試圖改變CKEN的值來關(guān)閉當(dāng)前時鐘源,設(shè)備將忽略這個操作。系統(tǒng)時鐘維持現(xiàn)狀,CKEN值不變。

2.如果用戶試圖改變OSC[1:0]的值來切換系統(tǒng)時鐘,而待切換新時鐘源未被打開,OSC[1:0]值將會被立即更新,但是系統(tǒng)時鐘保持不變,CKSWTF (CLKEN.0)會被硬件置位。

3.如果用戶切換系統(tǒng)時鐘源,但是目標(biāo)時鐘源已經(jīng)打開還沒穩(wěn)定,那么硬件會等待目標(biāo)穩(wěn)定后,再切換過去。在等待期間,設(shè)備繼續(xù)以原來時鐘源工作,并且CKSWTF會被置1。等到目標(biāo)時鐘源穩(wěn)定后,標(biāo)志位(見 CKSWT[7:3])被置位,時鐘將會成功切換,CKSWTF會被硬件自動清0。

系統(tǒng)時鐘除頻

振蕩頻率(FOSC)通過配置除頻寄存器CKDIV,整數(shù)倍(最大到1/510)除頻后,再供給系統(tǒng)作為系統(tǒng)時鐘(FSYS)。這一特征可以臨時讓MCU跑在很低的速度下來降低功耗。通過時鐘除頻,可以讓MCU在正常工作模式下,很低的速度運行,確保其及時能夠響應(yīng)中斷事件(比如空閑模式只能通過中斷事件退出)。這有可能比空閑模式還要省電。這樣,可以避免掉電模式情況下,需要等待振蕩器重新起振的時間。CKDIV的值可以在任何時間被程序改變,除了不能在中斷服務(wù)程序里改變。

系統(tǒng)時鐘輸出

N76E003提供一個CLO(P1.1)引腳可以輸出系統(tǒng)時鐘,該頻率與FSYS 頻率相同。通過設(shè)置CLOEN (CKCON.1)位打開這個功能。在掉電模式下CLO輸出會停止,因為系統(tǒng)時鐘已被關(guān)閉。注意當(dāng)有干擾問題或是功耗問題時,用戶最好關(guān)閉CLO輸出。

用戶首先要通過配置CKEN寄存器打開目標(biāo)時鐘源, 再通過查詢CKSWT寄存器中對應(yīng)的標(biāo)志位,確定時鐘源是否穩(wěn)定,并且通過寫OSC[1:0] (CKSWT[2:1])切換到目標(biāo)時鐘源。

#include "N76E003.h"
#include "SFR_Macro.h"
#include "Function_define.h"
#include "Common.h"
#include "Delay.h"

//========================================================================
//  The test process:
//    1. Power on is run as default HIRC, show LED Fsys tickle faster
//     2. toggle P3.0 to GND.
//    2. call modify Fsys code to LIRC.
//    3. LED tickle speed slowly than before.
//========================================================================
void main(void)
{

/* Note
  MCU power on system clock is HIRC (16 MHz)
    Please keep P3.0 HIGH before you want to modify Fsys to LIRC
*/
    
      Set_All_GPIO_Quasi_Mode;                       // In Common.h define
    set_CLOEN;                                                                // Also can check P1.1 CLO pin for clock to find the Fsys change.
        set_P30;
        while (P30)                                                                    // when P3.0 keep high, clock out HIRC
        {   
                clr_GPIO1;                                                            // Check LED output tickle time
        Timer0_Delay1ms(200);
        set_GPIO1;
        Timer0_Delay1ms(200);
        }
    
////------------------------------------------------------------------------------------------------------
///*********************************** Change system closk source ***************************************/
////------------------------------------------------------------------------------------------------------
              
////***** HIRC enable part *****               
//        set_HIRCEN;                                                //step1: enable HIRC clock source run
//        while((CKSWT&SET_BIT5)==0);                //step2: check ready
//        clr_OSC1;                                                    //step3: switching system clock source if needed
//        clr_OSC0;
//        while((CKEN&SET_BIT0)==1);                //step4: check system clock switching OK or NG
//
////***** LIRC enable part*****
////** Since LIRC is always enable, switch to LIRC directly
        set_OSC1;                                                    //step3: switching system clock source if needed
        clr_OSC0;  
        while((CKEN&SET_BIT0)==1);                //step4: check system clock switching OK or NG     
        clr_HIRCEN;
   
////--------------------------------------------------------------------------------------------------------
    
/*
  Now Fsys = LIRC , LED tickle slowly.
*/
    while(1)
    {
                clr_GPIO1;                                                            // Check LED output tickle time
        clr_P00;
        set_GPIO1;
        set_P00;
    }
/* =================== */
}

#define set_CLOEN   CKCON   |= SET_BIT1

set_CLOEN;

#define set_P30     P30      = 1
#define clr_P30     P30      = 0
////***** HIRC enable part *****               
//        set_HIRCEN;                                                //step1: enable HIRC clock source run
//        while((CKSWT&SET_BIT5)==0);                //step2: check ready
//        clr_OSC1;                                                    //step3: switching system clock source if needed
//        clr_OSC0;
//        while((CKEN&SET_BIT0)==1);                //step4: check system clock switching OK or NG
//
////***** LIRC enable part*****
////** Since LIRC is always enable, switch to LIRC directly
        set_OSC1;                                                    //step3: switching system clock source if needed
        clr_OSC0;  
        while((CKEN&SET_BIT0)==1);                //step4: check system clock switching OK or NG     
        clr_HIRCEN;
 set_HIRCEN; 
用戶首先要通過配置CKEN寄存器打開目標(biāo)時鐘源
#define set_HIRCEN  BIT_TMP=EA;EA=0;TA=0xAA;TA=0x55;CKEN|=SET_BIT5;EA=BIT_TMP;

 

  

while((CKEN&SET_BIT0)==1);                //step4: check system clock switching OK or NG  
確定時鐘源是否穩(wěn)定

并且通過寫OSC[1:0] (CKSWT[2:1])切換到目標(biāo)時鐘源
        set_OSC1;                                                    //step3: switching system clock source if needed
        clr_OSC0;  
#define set_HIRCST  BIT_TMP=EA;EA=0;TA=0xAA;TA=0x55;CKSWT|=SET_BIT5;EA=BIT_TMP;
#define set_LIRCST  BIT_TMP=EA;EA=0;TA=0xAA;TA=0x55;CKSWT|=SET_BIT4;EA=BIT_TMP;
#define set_ECLKST  BIT_TMP=EA;EA=0;TA=0xAA;TA=0x55;CKSWT|=SET_BIT3;EA=BIT_TMP;
#define set_OSC1    BIT_TMP=EA;EA=0;TA=0xAA;TA=0x55;CKSWT|=SET_BIT2;EA=BIT_TMP;
#define set_OSC0    BIT_TMP=EA;EA=0;TA=0xAA;TA=0x55;CKSWT|=SET_BIT1;EA=BIT_TMP;

#define clr_HIRCST  BIT_TMP=EA;EA=0;TA=0xAA;TA=0x55;CKSWT&=~SET_BIT5;EA=BIT_TMP;
#define clr_LIRCST  BIT_TMP=EA;EA=0;TA=0xAA;TA=0x55;CKSWT&=~SET_BIT4;EA=BIT_TMP;
#define clr_ECLKST  BIT_TMP=EA;EA=0;TA=0xAA;TA=0x55;CKSWT&=~SET_BIT3;EA=BIT_TMP;
#define clr_OSC1    BIT_TMP=EA;EA=0;TA=0xAA;TA=0x55;CKSWT&=~SET_BIT2;EA=BIT_TMP;
#define clr_OSC0    BIT_TMP=EA;EA=0;TA=0xAA;TA=0x55;CKSWT&=~SET_BIT1;EA=BIT_TMP;



 while((CKEN&SET_BIT0)==1);                //step4: check system clock switching OK or NG 
判斷是否穩(wěn)定


聯(lián)系方式0755-82591179

傳真:0755-82591176

郵箱:vicky@yingtexin.net

地址:深圳市龍華區(qū)民治街道民治大道973萬眾潤豐創(chuàng)業(yè)園A棟2樓A08

闻喜县| 银川市| 通州市| 讷河市| 贵阳市| 屏东市| 邢台县| 九江县| 南平市| 尚志市| 明水县| 扎兰屯市| 色达县| 奉节县| 阳谷县| 淮南市| 竹北市| 黑河市| 天水市| 金华市| 柞水县| 额尔古纳市| 蒙城县| 亚东县| 临江市| 神农架林区| 莎车县| 五原县| 霸州市| 高邑县| 石景山区| 通城县| 德格县| 延长县| 甘德县| 库车县| 铜川市| 增城市| 龙山县| 无为县| 白银市|