msp430 8M晶振问题
刚学430没多久遇到个问题不明白,听说这个网站很好。在这里发帖问问大师们。以下程序是实验msp430单片机在8M下使P2.0口输出方波。但是烧进单片机里发现P2.0口频率很低(接led ;可以看见led在那里闪)。照理P2.0口输出频率很高才对啊50000/8M=0.00625 秒才对啊 ; 还有如果改BCSCTL2|=SELM_2+DIVM_3;led闪烁根本就没有分频
那位高手帮我分析下为什么啊。
#include<msp430x14x.h>
#include"BoardConfig.h"
void main(void)
{
unsigned int i;
WDTCTL=WDTPW+WDTHOLD; //停止看门狗
BoardConfig(0xf0);
P2DIR|=0xFF; //P5.4输出
P2OUT|=0xFF; //P5.4用作MCLK输出
BCSCTL1&=~XT2OFF; //XT2有效
do
{
IFG1&=~OFIFG; //清除振荡器失效标志
for(i=0xFF;i>0;i--); //稳定时间
}
while((IFG1&OFIFG)!=0); //如果振荡器失效标志存在
BCSCTL2|=SELM_2; //MCLK=XT2 +DIVM_3
TACTL=TASSEL_2+TACLR;
CCTL0=CCIE;
CCR0=50000;
TACTL|=MC0;
_EINT();
for(;;)
{
}
}
#pragma vector=TIMERA0_VECTOR
__interrupt void Timer_A (void)
{
P2OUT^=0x01;
} 你给定时器A的时钟比较低,#define TASSEL_2 (2*0x100u) /* Timer A clock source select: 2 - SMCLK */;这说明了你给定时器A的频率来自SMCLK ,而不是MCLK,而你的SMCLK 是使用DCOCLK,你可以这样设置试试看 BCSCTL2 |= SELM_2 + SELS ; // MCLK= SMCLK = XT2= (safe)
希望对你有帮助 F:\123.jpg非常感谢你的回答看了你回答我终于知道为什么了。 原来是我写程序时看书寄存器写的而书上是错误的书上是说TASSEL_2是系统主时钟看了你回答在去看头文件果然是错的。 嗨 害我研究了一整天啊。写错书也会害死人的 。 本帖最后由 何逸 于 2012-4-29 23:28 编辑
这本书是北京航空航天大学出版社的。 msp430单片机原理与应用实例详解146页特此告诉大家希望大家别走我之路啊 最好是看TI提供的user guide和datasheet
页:
[1]