問題: 為什麼XT2時鐘無法作用於MCLK時鐘源
void main(void)
{
WDTCTL = WDTPW +WDTHOLD;
DCOCTL = DCO0 + DCO2;
BCSCTL1 = RSEL0 + RSEL2;
BCSCTL2 |= SELM_2 ;
P5DIR |= BIT4+BIT5+BIT6;
P5SEL |= BIT4+BIT5+BIT6;
while(1);
}
1. 我按附件方式測試由I/O輸出 ACLK , SMCLK , MCLK三種頻率
2. ACLK , SMCLK , MCLK三種頻率來源
ACLK: 時鐘來源為XT1 =32.768K
SMCLK: 時鐘來源為DCO=1.5M
MCLK: 時鐘來源為XT2 =4.19M
3. 測試程式如上,但我用示波器測量MCLK卻與SMCLK頻率一樣為1.5M,我有檢查寄存器XT2OFF=0,表示XT2有開啟.
4. 另外我有測試將BCSCTL2改為下面這段,SMCLK時鐘來源改為XT2,用示波器測量結果約為4.19M,所以表示XT2是起振有效的,那XT2為什麼無法作用於MCLK時鐘源
BCSCTL2 |= SELS +SELM_2 ;
以上請大家看一下 ,幫忙看一下這是為什麼? 謝謝
灰小子:
不要忘了: BCSCTL1 &= ~XT2OFF; // XT2= HF XTAL
xyz549040622:
1.你是否开启了省电模式呢
2.你供电电压是多少,这个和供电电压也是有关系的
Van1:
回复 灰小子:
您好:
void main(void){ WDTCTL = WDTPW +WDTHOLD; DCOCTL = DCO0 + DCO2; BCSCTL1 = RSEL0 + RSEL2; BCSCTL2 |= SELM_2 ; P5DIR |= BIT4+BIT5+BIT6; P5SEL |= BIT4+BIT5+BIT6; while(1);}
我測試上述程式 , 我這段程式 BCSCTL1 = RSEL0 + RSEL2; , 將RSEL0 + RSEL2的值設定給BCSCTL1 , 其XT2OFF給值為" 0 " , 我有檢查IAR 寄存器狀態XT2OFF位確實為" 0 "(請看一下附件), 另外BCSCTL2 |= SELM_2 ; 這段程式將MCLK時鐘源設為XT2 .
請您看一下我是不是有什麼設定是錯的 , 或是我忽略了什麼呢?再麻煩您看一下 ,謝謝
Van1:
回复 xyz549040622:
您好:
我沒有進入省電模式 , 我供電電壓為3.0V , 請您看一下是不是我有那裡沒注意到?謝謝