This thread has been locked.
If you have a related question, please click the "Ask a related question" button in the top right corner. The newly created question will be automatically linked to this question.
#include <msp430g2553.h>
unsigned char s;
void delay(void);
void main(void)
{
WDTCTL = WDTPW +WDTHOLD; // Stop Watchdog Timer
BCSCTL2=SELM_3+DIVM_0+DIVS_0;
BCSCTL3 |= LFXT1S_2; // LFXT1 = VLO
if(CALBC1_16MHZ!=0xff)
{
delay();
DCOCTL = 0;
BCSCTL1 = CALBC1_16MHZ;
DCOCTL = CALDCO_16MHZ;
}
//SMCLK Sub-System Main Clk, ACLK和SMCLK可以通过复用引脚输出,MCLK不能直接输出体现, MCLK可以配置为VLO或者DCO
//振荡频率是时钟频率的12倍~~~!!!!!
P1DIR |= 0x31; // P1.0,5 and P1.4 outputs
P1SEL |= 0x11; // P1.0,4 ACLK/VLO, SMCLK/DCO output
while(1)
{ P1OUT |= 0x20;
P1OUT &= ~0x20;//20;
// P1.5 = 1, 通过开关P1.5来体现MCLK,这两条指令的周期大概为SMCLK的1/12
}
}
void delay(void)
{
volatile unsigned int i;
for (i=10;i>0;i--);
}
你好,我现在用的是MSP430G2553的开发板,刚学,上面是我改的一个例程。
请问1、ACLK从P1.0口输出的VLO频率是否与SMCLK有关?2、为什么测试中上述程序我P1.0ACLK我测的是17KHZ,SMCLK是8MHZ,而我把DCO部分注释掉后,ACLK才变成正常值12KHZ,而SMCLK却变成900KHZ?3、怎么才能让ACLK输出VLO12KHZ又能让SMCLK输出8MHZ?
1.VLO不受DCO影响,但是VLO不是很准确,其受到温度,供电电压等影响很大。
2.DCO补偿这一段写得不是很合适,建议换成如下写法
if (CALBC1_8MHZ ==0xFF || CALDCO_8MHZ == 0xFF)
{
while(1); // If calibration constants erased
// do not load, trap CPU!!
}
//8Mhz
BCSCTL1 = CALBC1_8MHZ; // Set range
DCOCTL = CALDCO_8MHZ; // Set DCO step + modulation */
3.这两条指令的周期大概为SMCLK的1/12,不理解,能够解释一下?