各位好:
我现在在用430的5172做一款控制器,使用的板子为自己设计的电路板,编译器采用IAR5.30在XP的操作系统上面,
板子XT1的晶振为8M,目前在调试中发现的问题是:
在XT1焊接为8M的晶振时,程序设计用的定时器发现定出来的时间不准确,想问问大家是不是我的时钟设置有问题,想请大家帮忙解答,谢谢。
现在把时钟设置程序贴出来:
void clock_init()
{
PJSEL |= BIT4+BIT5; // Port select XT1
UCSCTL6 &= ~(XT1OFF); // XT1 On
UCSCTL3 |= SELREF_2; //FLL reference select UCSCTL6 |= XTS; UCSCTL6 |= XT1DRIVE_1; //8M~16M
do
{
UCSCTL7 &= ~(XT1LFOFFG + XT1HFOFFG + DCOFFG); // Clear XT1,DCO fault flags
SFRIFG1 &= ~OFIFG; // Clear fault flags
}while (SFRIFG1&OFIFG);
UCSCTL4 |= SELA_0; // ACLK = LFTX1 (by default)
UCSCTL4 = SELS__XT1CLK + SELM__XT1CLK; //MCLK=8M
UCSCTL5 |=DIVS__8+DIVA__32; //SMCLK1/8分频 SMCLK=1M ACLK=0.25M
}
kqian0327:
你好,
下面是两种解决措施:
1.XT1改用32768HZ主频,尝试定时器是否准确,我印象中XT1不支持4M HZ以上高速晶振。
2.在普通GPIO上输出MCLK或者SUBCLK,用示波器测试波形频率。
3.晶振外挂的电容是否是22pf?是不是手册推荐的电容值。