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.
void InitializeClocks(void)
{
BCSCTL1 = CALBC1_1MHZ; // Set range
DCOCTL = CALDCO_1MHZ;
BCSCTL2 &= ~(DIVS_3); // SMCLK = DCO / 8 = 1MHz
}
这是官方下载的源代码,请问
BCSCTL1 = CALBC1_1MHZ; // Set range
DCOCTL = CALDCO_1MHZ;
DCO的频率是多少?不是1MHz?
DCO的频率近似为1MHz。
CALBC1_1MHZ和CALDCO_1MHZ是在Flash的SegmentA段中,出厂预设定的,用于校正片上的压控振荡器。可以得到一个近似的1MHz的DCO时钟信号。
那么
BCSCTL2 &= ~(DIVS_3); // SMCLK = DCO / 8 = 1MHz
注释就是写错了?
这个demo是从官方网站下载的,这叫初学者有点迷惑呀
看起来注释是错的,这句话的意思是BCSCTL2 = 0;
SMCLK的源时钟为DCO,不分频,为1MHz
MCLK的源时钟为DCO,不分频,为1MHz
假设你用的是F2xxx系列
DCO是1Mhz, MCLK=SMCLK=1Mhz。
那个注释“SMCLK = DCO / 8 = 1MHz “ 有些问题,应该是 “SMCLK = DCO = 1MHz”
”