msp430學習筆記-時鍾及延時函數


引用:http://blog.chinaunix.net/uid-24343357-id-3271380.html

MCLK默認時鍾源是DCOCLK,SMCLK默認時鍾源也是DCOCLK,DCOCLK默認約為1.1MHZ(1126.4KHz),ACLK默認為32768HZ

系統復位后MCLK和SMCLK的頻率在0.8MHz~1.5MHz,即819.2KHz~1536KHz。系統啟動后,可以調整RSELx(基本時鍾系統控制寄存器1BCSCTL1前3位)、DCOx(DCO控制器DCOCTL前5位)、MODx(DCO控制器DCOCTL后3位)的值得到合適的頻率

MSP430基礎時鍾模塊包含以下3個時鍾輸入源。

一、4個時鍾振盪源

   1、LFXT1CLK:  外部晶振或時鍾1 低頻時鍾源 低頻模式:32768Hz 高頻模式:(400KHz-16MHz)

   2、XT2CLK:    外部晶振或時鍾2 高頻時鍾源(400KHz-16MHz)
   3、DCOCLK:    內部數字RC振盪器,復位值1.1MHz
   4、VLOCLK:    內部低功耗振盪器 12KHz

   注:MSP430x20xx: LFXT1 不支持 HF 模式, XT2 不支持, ROSC 不支持.

  (1)LFXT1CLK 低頻時鍾源:由LFXT1振盪器產生(如圖2所示)。通過軟件將狀態寄存器中OSCOff復位后,LFXT1開始工作,即系統采用低頻工作。如果LFXT1CLK沒有用作SMCLK或MCLK信號,則可以用軟件將OSCOff置位,禁止LFXT1工作。

  (2)XT2CLK高頻時鍾源:由XT2振盪器產生。它產生時鍾信號XT2CLK,其工作特性與LFXT1振盪器工作在高頻模式時類似。可簡單地通過軟件設置XT2振盪器是否工作,當XT2CLK沒有用作SMCLK或MCLK信號時,關閉XT2,選擇其他時鍾源。

  (3)DCOCLK 數字控制RC振盪器。由集成在時鍾模塊中的DCO振盪器產生。DCO振盪器是一個RC振盪器,頻率可以通過軟件調節,其控制邏輯如圖3所示。當振盪器LFXT1、XT2被禁止或失效時,DCO振盪器被自動選作MCLK的時鍾源。因此由振盪器失效引起的系統中斷請求可以得到響應,甚至在CPU關閉的情況下也能得到處理。

    由基礎時鍾模塊可以提供系統所需的3種時鍾信號,即:ACLK、MCLK、SMCLK。其中輔助時鍾ACLK是LFXT1CLK信號經1、2、4、8分頻后得到的。ACLK可由軟件選作各個外圍模塊的時鍾信號,一般用於低速外設;系統主時鍾MCLK可由軟件選擇來自LFXT1CLK、XT2CLK、DCOCLK三者之一,然后經1、2、4、8分頻得到。MCLK主要用於CPU和系統。子系統時鍾SMCLK可由軟件選擇來自LFXT1CLK和DCOCLK,或者XT2CLK和DCOCLK,然后經1、2、4、8分頻得到,主要用於高速外設模塊。

這個是哪個DCO設置,與之對應的震盪頻率。
時鍾模塊的相關寄存器,具體含義,請看datasheet。
ACLK=LFXT1=32768HZ, MCLK=DCOCLK(大約8MHZ,從上面圖片上看), SMCLK=XT2,
LFXT1是低速晶振輸入,XT2是高速晶振輸入。
一般來說我們的代碼,在時鍾初始化的時候,會先使用DCO時鍾來啟動,然后切換主時鍾到XT2。
如果切換時鍾,要查詢一下時鍾有效位  while ((IFG1 & OFIFG));    //晶振失效標志仍然存在?
這是TI提供的一段關於時鍾設置的例程,注釋解釋的很清楚了,我不多說,
例程中用的一些宏定義,都是定義在這個頭文件里面了,這個頭文件很有用的,要好好看看,可以方便在程序里面設置,使得程序簡單明了

延時函數

#define CPU_F                               ((double)8000000) 
#define delay_us(x)                       __delay_cycles((long)(CPU_F*(double)x/1000000.0)) 
#define delay_ms(x)                      __delay_cycles((long)(CPU_F*(double)x/1000.0)) 

在 #define CPU_F              ((double)8000000) 語句里 8000000 修改成你當前MSP430 CPU的主頻頻率,即CPU的MCLK

直接調用,如:__delay_cycles(100),就延時100個時鍾周期

只能是常數,因為編譯器會重新編譯為匯編代碼

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM