引用: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分頻得到,主要用於高速外設模塊。
延時函數
#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個時鍾周期
只能是常數,因為編譯器會重新編譯為匯編代碼