<dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><s id="yhprb"><strike id="yhprb"></strike></s></dfn><small id="yhprb"></small><dfn id="yhprb"></dfn><small id="yhprb"><delect id="yhprb"></delect></small><small id="yhprb"></small><small id="yhprb"></small> <delect id="yhprb"><strike id="yhprb"></strike></delect><dfn id="yhprb"></dfn><dfn id="yhprb"></dfn><s id="yhprb"><noframes id="yhprb"><small id="yhprb"><dfn id="yhprb"></dfn></small><dfn id="yhprb"><delect id="yhprb"></delect></dfn><small id="yhprb"></small><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn> <small id="yhprb"></small><delect id="yhprb"><strike id="yhprb"></strike></delect><dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"><s id="yhprb"><strike id="yhprb"></strike></s></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn>

新聞中心

EEPW首頁(yè) > 嵌入式系統 > 設計應用 > MSP430學(xué)習心得---時(shí)鐘

MSP430學(xué)習心得---時(shí)鐘

作者: 時(shí)間:2017-01-06 來(lái)源:網(wǎng)絡(luò ) 收藏

  初始化和GPIO

本文引用地址:http://dyxdggzs.com/article/201701/342564.htm

  概述:

  本實(shí)驗的目的是了解用于執行對 Value Line設備的初始化過(guò)程的步驟。在這個(gè)練習中,您將編寫(xiě)初始化代碼,并運行該設備使用各種資源。

  1、寫(xiě)初始化代碼

  2、運行CPU的MCLK的來(lái)源方式:VLO 、32768晶體、DCO

  3、主體程序部分

  4、觀(guān)察LED閃光燈速度

  

  1、在單片機中一共有三個(gè)或四個(gè)時(shí)鐘源:

  (1)LFXT1CLK,為低速/高速晶振源,通常接32.768kHz,也可以接(400kHz~16Mhz);

  (2)XT2CLK,可選高頻振蕩器,外接標準高速晶振,通常是接8Mhz,也可以接(400kHz~16Mhz);

  (3)DCOCLK,數控振蕩器,為內部晶振,由RC震蕩回路構成;

  (4)VLOCLK,內部低頻振蕩器,12kHz標準振蕩器。

  2、在MSP430單片機內部一共有三個(gè)時(shí)鐘系統:

  (1)ACLK,Auxiliary Clock,輔助時(shí)鐘,通常由LFXT1CLK或VLOCLK作為時(shí)鐘源,可以通過(guò)軟件控制更改時(shí)鐘的分頻系數;

  (2)MCLK,Master Clock,系統主時(shí)鐘單元,為系統內核提供時(shí)鐘,它可以通過(guò)軟件從四個(gè)時(shí)鐘源選擇;

  (3)SMCLK,Sub-Main Clock,系統子時(shí)鐘,也是可以由軟件選擇時(shí)鐘源。

  Basic Clock Module Registers(基礎時(shí)鐘寄存器)

  DCO control register DCOCTL

  Basic clock system control 1 BCSCTL1

  Basic clock system control 2 BCSCTL2

  Basic clock system control 3 BCSCTL3

  SFR interrupt enable register 1 IE1

  SFR interrupt flag register 1 IFG1

  3、MSP430的時(shí)鐘設置包括3個(gè)寄存器,DCOCTL、BCSCTL1、BCSCTL2、BCSCTL3

  DCOCTL,DCO控制寄存器,地址為56H,初始值為60H

  DCO2DCO1DCO0MOD4MOD3MOD2MOD1MOD0

  DCO0~DCO2: DCO Select Bit,定義了8種頻率之一,而頻率由注入直流發(fā)生器的電流定義。

  MOD0~MOD4: Modulation Bit,頻率的微調。

  一般不需要DCO的場(chǎng)合保持默認初始值就行了。

  BCSCTL1,Basic Clock System Control 1,地址為57H,初始值為84H

  XT2OFFXTSDIVA1DIVA0XT5VRSEL2RSEL1RSEL0

  RSEL0~RSEL2: 選擇某個(gè)內部電阻以決定標稱(chēng)頻率.0最低,7最高。

  XT5V: 1.

  DIVA0~DIVA1:選擇ACLK的分頻系數。DIVA=0,1,2,3,ACLK的分頻系數分別是1,2,4,8;

  XTS: 選擇LFXT1工作在低頻晶體模式(XTS=0)還是高頻晶體模式(XTS=1)。

  XT2OFF: 控制XT2振蕩器的開(kāi)啟(XT2OFF=0)與關(guān)閉(XT2OFF=1)。

  正常情況下把XT2OFF復位就可以了.

  BCSCTL2,Basic Clock System Control 2,地址為58H,初始值為00H

  SEM1SELM0DIVM1DIVM0SELSDIVS1DIVS0DCOR

  DCOR: Enable External Resistor. 0,選擇內部電阻;1,選擇外部電阻

  DIVS0~DIVS1: DIVS=0,1,2,3對應SMCLK的分頻因子為1,2,4,8

  SELS: 選擇SMCLK的時(shí)鐘源, 0:DCOCLK; 1:XT2CLK/LFXTCLK.

  DIVM0~1: 選擇MCLK的分頻因子, DIVM=0,1,2,3對應分頻因子為1,2,4,8.

  SELM0~1: 選擇MCLK的時(shí)鐘源, 0,1:DCOCLK, 2:XT2CLK, 3:LFXT1CLK

  我用的時(shí)候一般都把SMCLK與MCLK的時(shí)鐘源選擇為XT2。

  其它:

  1. LFXT1: 一次有效的PUC信號將使OSCOFF復位,允許LFXT1工作,如果LFXT1信號沒(méi)有用作SMCLK或MCLK,可軟件置OSCOFF關(guān)閉LFXT1.

  2. XT2: XT2產(chǎn)生XT2CLK時(shí)鐘信號,如果XT2CLK信號沒(méi)有用作時(shí)鐘MCLK和SMCLK,可以通過(guò)置XT2OFF關(guān)閉XT2,PUC信號后置XT2OFF,即XT2的關(guān)閉的。

  3. DCO振蕩器:振蕩器失效時(shí),DCO振蕩器會(huì )自動(dòng)被選做MCLK的時(shí)鐘源。如果DCO信號沒(méi)有用作SMCLK和MCLK時(shí)鐘信號時(shí),可置SCG0位關(guān)閉DCO直流發(fā)生器。

  4. 在PUC信號后,由DCOCLK作MCLK的時(shí)鐘信號,根據需要可將MCLK的時(shí)鐘源另外設置為L(cháng)FXT1或XT2,設置順序如下:

  (1)清OSCOFF/XT2

  (2)清OFIFG

  (3)延時(shí)等待至少50uS

  (4)再次檢查OFIFG,如果仍置位,則重復(1)-(4)步,直到OFIFG=0為止。

  (5)設置BCSCTL2的相應SELM。

  實(shí)例分析

  1、CPU運行在VLO時(shí)鐘下:

  這是最慢的時(shí)鐘,在約12千赫茲下運行。因此,我們將通過(guò)可視化的LED閃爍的紅色慢慢地在約每3秒鐘率。我們可以讓時(shí)鐘系統默認這種狀態(tài),設置專(zhuān)門(mén)來(lái)操作VLO。我們將不使用任何ALCK外設時(shí)鐘在此實(shí)驗室工作,但你應該認識到,ACLK來(lái)自VLO時(shí)鐘。

  #include

  void main(void)

  {

  WDTCTL = WDTPW + WDTHOLD; // 關(guān)閉看門(mén)狗定時(shí)器

  P1DIR = 0x40; // P1.6 配置輸出

  P1OUT = 0; // 關(guān)閉LED

  BCSCTL3 |= LFXT1S_2; // LFXT1 = VLO

  IFG1 &= ~OFIFG; // 清除OSCFault 標志

  __bis_SR_register(SCG1 + SCG0); // 關(guān)閉 DCO

  BCSCTL2 |= SELM_3 + DIVM_3; // MCLK = VLO/8

  while(1)

  {

  P1OUT = 0x40; // 開(kāi)啟LED

  _delay_cycles(100);

  P1OUT = 0; // 關(guān)閉 LED

  _delay_cycles(5000);

  }

  }

  2、CPU運行在晶振(32768Hz)時(shí)鐘下:

  晶體頻率為32768赫茲,約3倍的VLO。如果我們在前面的代碼中使用晶振,指示燈應閃爍大約每秒一次。你知道為什么32768赫茲是一個(gè)標準?這是因為這個(gè)數字是2的15次方,因此很容易用簡(jiǎn)單的數字計數電路,以每秒一次獲得率 ——手表和其他時(shí)間時(shí)基。認識到ACLK來(lái)自外部晶振時(shí)鐘。

  #include

  void main(void)

  {

  WDTCTL = WDTPW + WDTHOLD; // 關(guān)閉看門(mén)狗定時(shí)器

  P1DIR = 0x41; // P1.0 和P1.6配置輸出

  P1OUT = 0x01; // 開(kāi)啟P1.0

  BCSCTL3 |= LFXT1S_0; // LFXT1 = 32768Hz 晶振

  while(IFG1 & OFIFG)

  {

  IFG1 &= ~OFIFG; // 清除 OSCFault 標志

  _delay_cycles(100000); // 為可見(jiàn)的標志延時(shí)

  }

  P1OUT = 0; // 關(guān)閉P1

  __bis_SR_register(SCG1 + SCG0); // 關(guān)閉 DCO

  BCSCTL2 |= SELM_3 + DIVM_3; // MCLK = 32768/8

  while(1)

  {

  P1OUT = 0x40; // 開(kāi)啟 LED

  _delay_cycles(100);

  P1OUT = 0; / / 關(guān)閉LED

  _delay_cycles(5000);

  }

  }

  3、CPU運行在晶振(32768Hz)和DCO時(shí)鐘下:

  最慢的頻率,我們可以運行DCO約在1MHz(這也是默認速度)。因此,我們將開(kāi)始切換MCLK到DCO下。在大多數系統中,你會(huì )希望ACLK上運行的VLO或32768赫茲晶振。由于A(yíng)CLK在我們目前的代碼是在晶體上運行,我們會(huì )打開(kāi)DCO計算。

  #include

  void main(void)

  {

  WDTCTL = WDTPW + WDTHOLD; // 關(guān)閉看門(mén)狗定時(shí)器

  if (CALBC1_1MHZ ==0xFF || CALDCO_1MHZ == 0xFF)

  {

  while(1); // If cal const erased, 掛起

  }

  BCSCTL1 = CALBC1_1MHZ; // Set range

  DCOCTL = CALDCO_1MHZ; //設置DCO模式

  P1DIR = 0x41; // P1.0 和P1.6配置輸出

  P1OUT = 0x01; // P1.0 開(kāi)啟

  BCSCTL3 |= LFXT1S_0; // LFXT1 = 32768Hz

  while(IFG1 & OFIFG)

  {

  IFG1 &= ~OFIFG; // 清除OSCFault 標志

  _delay_cycles(100000); // 為可見(jiàn)標志延時(shí)

  _delay_cycles(100000); // 為可見(jiàn)標志延時(shí)

  }

  P1OUT = 0; // P1.6 關(guān)閉

  // __bis_SR_register(SCG1 + SCG0); // 關(guān)閉DCO

  BCSCTL2 |= SELM_0 + DIVM_3; // MCLK = DCO

  while(1)

  {

  P1OUT = 0x40; // P1.6 開(kāi)啟

  _delay_cycles(100);

  P1OUT = 0; / / P1.6 關(guān)閉

  _delay_cycles(5000);

  }

  }

  4、CPU運行在DCO時(shí)鐘下:

  最慢的頻率,我們可以運行DCO約在1MHz(這也是默認速度)。因此,我們將開(kāi)始切換MCLK到DCO下。在大多數系統中,你會(huì )希望在VLO或者是晶振下運行ACLK。由于A(yíng)CLK在我們目前的代碼是在VLO上運行,我們會(huì )打開(kāi)DCO運行。

  #include

  void main(void)

  {

  WDTCTL = WDTPW + WDTHOLD; // 關(guān)閉看門(mén)狗定時(shí)器

  if (CALBC1_1MHZ ==0xFF || CALDCO_1MHZ == 0xFF)

  {

  while(1); // If cal const erased,掛起

  }

  BCSCTL1 = CALBC1_1MHZ; // Set range

  DCOCTL = CALDCO_1MHZ; // 設置DCO模式

  P1DIR = 0x40; // P1.6 配置輸出

  P1OUT = 0; // P1關(guān)閉

  BCSCTL3 |= LFXT1S_2; // LFXT1 = VLO

  IFG1 &= ~OFIFG; // 清除 OSCFault 標志

  //__bis_SR_register(SCG1 + SCG0); // 關(guān)閉DCO

  BCSCTL2 |= SELM_0 + DIVM_3; // MCLK = DCO/8

  while(1)

  {

  P1OUT = 0x40; // P1.6 關(guān)閉

  _delay_cycles(100);

  P1OUT = 0; // P1.6 開(kāi)啟

  _delay_cycles(5000);

  }

  }



關(guān)鍵詞: MSP430 時(shí)鐘

評論


相關(guān)推薦

技術(shù)專(zhuān)區

關(guān)閉
国产精品自在自线亚洲|国产精品无圣光一区二区|国产日产欧洲无码视频|久久久一本精品99久久K精品66|欧美人与动牲交片免费播放
<dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><s id="yhprb"><strike id="yhprb"></strike></s></dfn><small id="yhprb"></small><dfn id="yhprb"></dfn><small id="yhprb"><delect id="yhprb"></delect></small><small id="yhprb"></small><small id="yhprb"></small> <delect id="yhprb"><strike id="yhprb"></strike></delect><dfn id="yhprb"></dfn><dfn id="yhprb"></dfn><s id="yhprb"><noframes id="yhprb"><small id="yhprb"><dfn id="yhprb"></dfn></small><dfn id="yhprb"><delect id="yhprb"></delect></dfn><small id="yhprb"></small><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn> <small id="yhprb"></small><delect id="yhprb"><strike id="yhprb"></strike></delect><dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"><s id="yhprb"><strike id="yhprb"></strike></s></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn>