亚洲综合图片区自拍_思思91精品国产综合在线观看_一区二区三区欧美_欧美黑人又粗又大_亚洲人成精品久久久久桥本

MSP430FR6989單片機(jī)學(xué)習(xí)之系統(tǒng)時鐘-環(huán)球新動態(tài)

2023-06-26 15:25:18 來源:LemonTechnology

今天繼續(xù)跟大家分享MSP430FR6989系列教程的系統(tǒng)時鐘

教程用到的硬件平臺:TI官方的MSP430FR6989 LaunchPad

編譯器:IAR ForMSP430。


(相關(guān)資料圖)

1,系統(tǒng)時鐘源的種類

MSP430FR6989有五個時鐘源,分別如下:

LFXTCLK:低頻振蕩器,例如32.768kHz晶振??梢酝ㄟ^軟件配置由外部方波信號驅(qū)動。HFXTCLK:高頻振蕩器, 4 MHz - 24 MHz 范圍內(nèi)晶振使用??梢酝ㄟ^軟件配置由外部方波信號驅(qū)動。DCOCLK:具有可選頻率的內(nèi)部數(shù)控振蕩器 (DCO)VLOCLK:典型頻率為 10 kHz 的內(nèi)部超低功耗低頻振蕩器MODCLK:典型頻率為 5 MHz 的內(nèi)部低功耗振蕩器。

大家可以根據(jù)項目的需求配置時鐘源,在LaunchPad開發(fā)板中外部時鐘使用LFXTCLK外接32.768k的晶振,原理圖如下:

2,系統(tǒng)時鐘信號

對于MSP430FR6989單片機(jī),一共有五種時鐘信號,如下所示:

ACLK: 輔助時鐘。 一般用于低速外設(shè)。MCLK: 主時鐘。 用于CPU和系統(tǒng)使用。SMCLK: 子系統(tǒng)主時鐘。 一般用于高速外設(shè)。MODCLK:模塊時鐘。 一般用于低功耗下高速外設(shè)模塊使用。VLOCLK: VLO 時鐘。 一般用于低功耗下低速外設(shè)模塊使用。

3,寄存器配置IO口實現(xiàn)外部時鐘輸入

LFXTCLK時鐘連接到PJ4、PJ5上,我們需要將PJ4、PJ5配置為主功能模式,可以通過PxSEL1和PxSEL0配置IO口的功能,如下圖所示:

實現(xiàn)主功能,只需要將PxSEL1配置為0,PxSEL0配置為1即可,代碼如下:

/* 外部引腳32.768k使能 */ PJSEL0 |= BIT4;    PJSEL1 &= ~BIT4;PJSEL0 |= BIT5;    PJSEL1 &= ~BIT5;

4,配置DCO時鐘以及配置時鐘源

接下來我們需要配置內(nèi)部DCO時鐘供以MCLK和SMCLK使用,在配置時鐘之前,我們需要先進(jìn)行時鐘配置的解鎖,通過寄存器CSCTL0配置,如下:

CSCTL0寄存器的高位要寫入A5h才可以進(jìn)行配置,配置如下:

/* 使能時鐘寄存器設(shè)置 */     CSCTL0_H = CSKEY_H;    // 將寄存器的高8位,配置為A5h

我們找到頭文件中定義CSKEY_H可以看到,CSKEY_H即為A5h,頭文件中已經(jīng)定義好了,方便程序的編寫以及后續(xù)對于程序的閱讀。如下所示:

當(dāng)然,程序也可以如下編寫,是跟上面的是一樣的 :

/* 使能時鐘寄存器設(shè)置 */ CSCTL0 = CSKEY;      // 將寄存器的高8位,配置為A5h

解鎖完成之后,我們就要進(jìn)行DCO的頻率配置,這里我們選擇8M時鐘,配置寄存器CSCTL1選擇頻率,配置DCOFSEL位為6,即為選擇8M時鐘,如下:

代碼配置如下:

CSCTL1 = DCOFSEL_6;              // DCO = 8M

當(dāng)我們選擇更高的頻率時,比如16M頻率,那么我們需要將DCORSEL位置1,然后在選擇DCOFSEL為第四位即可,即:

CSCTL1 = DCORSEL + DCOFSEL_4;              // DCO = 16M

接下來就是為系統(tǒng)時鐘分配時鐘源,我們ACLK選擇LFXTCLK,SMCLK選擇DCOCLK,MCLK選擇DCOCLK,直接通過CSCTL2寄存器進(jìn)行配置即可,寄存器介紹如下:

代碼的編寫就要簡單的多,而且一眼就可以看懂,如下所示:

/* ACLK = LFXT ,SMCLK和MCLK=DCO */    CSCTL2 = SELA__LFXTCLK + SELS__DCOCLK + SELM__DCOCLK;

然后就是關(guān)于系統(tǒng)時鐘的分頻,比如說8MHz頻率,經(jīng)過2分頻后就是4MHz用于系統(tǒng)分頻的寄存器是CSCTL3,如下圖所示:

這里我們不進(jìn)行分頻,直接CSCTL3 = 0;即可。

比如SMCLK要進(jìn)行2分頻的話,代碼的編寫如下:

CSCTL3 = DIVS_1;     // ACLK/MCLK 分頻=1   SMCLK 分頻=2

最后,我們要選擇時鐘源的開關(guān),比如我們沒有用到HFXTCLK和VLOCLK,我們將其關(guān)閉,對于使用到的LFXTCLK,我們需要配置一下驅(qū)動電流,這里我們沒有調(diào)試低功耗,可以先將其設(shè)置為最大強(qiáng)度的驅(qū)動電流。如下:

當(dāng)然最后不能忘記,鎖定寄存器,只要不是A5h即可。代碼如下:

CSCTL4 = HFXTOFF + VLOOFF + LFXTDRIVE_3;   // 關(guān)閉HFXT VLO ,打開LFX

5,代碼實現(xiàn)

void Initial_Clock(void){    /* 外部32.768k使能 */     PJSEL0 |= BIT4;        PJSEL1 &= ~BIT4;    PJSEL0 |= BIT5;        PJSEL1 &= ~BIT5;    /* 使配置完成的IO口生效,從LPMx.5退出 */    PM5CTL0 &= ~LOCKLPM5;  /* 使能時鐘寄存器設(shè)置 */     CSCTL0_H = CSKEY_H;      CSCTL1 = DCOFSEL_6;                                     // DCO = 8M    CSCTL2 = SELA__LFXTCLK + SELS__DCOCLK + SELM__DCOCLK;   // ACLK = LFXT ,SMCLK和MCLK=DCO    CSCTL3 = 0;                                             // ACLK/SMCLK/MCLK 分頻=1    CSCTL4 = HFXTOFF + VLOOFF + LFXTDRIVE_3;                // 關(guān)閉HFXT VLO ,打開LFXT  /* 禁止時鐘寄存器設(shè)置 */     CSCTL0_H = 0;       }

標(biāo)簽:

上一篇:ADC模數(shù)轉(zhuǎn)換器介紹
下一篇:最后一頁