68精品久久久久久欧美,最近中文字幕完整在线看一,久久亚洲男人天堂,最近中文字幕完整视频高清1

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

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

N76E003系統(tǒng)時(shí)鐘

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

系統(tǒng)時(shí)鐘源

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

內(nèi)部振蕩器

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

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

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

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

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

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

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

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

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

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

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

系統(tǒng)時(shí)鐘除頻

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

系統(tǒng)時(shí)鐘輸出

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

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

#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)時(shí)鐘源
#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  
確定時(shí)鐘源是否穩(wěn)定

并且通過寫OSC[1:0] (CKSWT[2:1])切換到目標(biāo)時(shí)鐘源
        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

清徐县| 若羌县| 汤原县| 雷州市| 清远市| 苏尼特右旗| 新昌县| 遂川县| 嘉义县| 个旧市| 焦作市| 望江县| 永登县| 济宁市| 布尔津县| 宾阳县| 交口县| 楚雄市| 讷河市| 东平县| 长顺县| 昌都县| 萝北县| 民县| 江孜县| 平凉市| 读书| 康平县| 淮北市| 绍兴县| 涡阳县| 正定县| 绥芬河市| 酒泉市| 临高县| 光泽县| 五大连池市| 邹城市| 泽州县| 金沙县| 乌鲁木齐县|