lonerzf 发表于 2010-12-4 09:40:23

430学习时遇到两个不懂的地方。恳求前辈们解答。

各位前辈,我最近新学的的430,看用户指南时范县有两个地方搞不明白,恳求前辈们解答。谢谢.

一、定时器A的四个时钟输入源中,TACLK和INCLK是什么?查了数据手册,看到好像都是外部时钟信号输入,是吗?那这两个有什么区别啊?

二、在做定时器定时中断时,发现一个小问题,好久没闹明白。不知道是不是哪里没设置好。希望能得到前辈们的解答。

    当使用TACTL   |=TASSEL_1+MC_1+ID_1;发现仿真时中断是连续的,LED亮灭循环,但是
    当使用TACTL   |=TASSEL_2+MC_1+ID_1;发现仿真时全速运行中断是只有一次,LED只工作一次,即每次全速运行 后P 1.4 亮暗相反.
    我的目标板是 F149的,IAR 是 4.20 版本。
#include "io430.h"
#include "in430.h"
int main( void )
{
unsigned char i;
// Stop watchdog timer to prevent time out reset
WDTCTL = WDTPW + WDTHOLD;


BCSCTL1 &=~XT2OFF;//使用XT2
BCSCTL1 |=DIVA_3; //8分频
do
{
    IFG1 &=~OFIFG;
    for(i=0XFF;i>0;i--);//delay;
}
while(IFG1 & OFIFG);

BCSCTL2 |=SELM_2+SELS;
for(i=0XFF;i>0;i--);//delay;

TACCR0   =0X0424;//top val
/**************问题*********************/
TACTL   |=TASSEL_2+MC_1+ID_1; // 与TACTL|=TASSEL_1+MC_1+ID_1;现象不一致

TACCTL0 |=CCIE;
P1DIR =BIT4;//led
P1OUT =BIT4;
_EINT(); //GIE 打开
//LPM3; //TACTL   |=TASSEL_2+MC_1+ID_1;时不可用LPM3模式

}

#pragma vector=TIMERA0_VECTOR
__interrupt void timer_a(void)
{
   P1OUT ^=BIT4;
}

lonerzf 发表于 2010-12-5 22:33:49

终于解决了。要在中断里加一个计数器就正常了。可能是频率被分得过低。没发2在有限时间内看到效果。
页: [1]
查看完整版本: 430学习时遇到两个不懂的地方。恳求前辈们解答。