发现无法进入定时器中断

[复制链接]
775|15
手机看帖
扫描二维码
随时随地手机跟帖
wyjie| | 2018-11-6 17:21 | 显示全部楼层
用仿真器单步调试

使用特权

评论回复
spark周|  楼主 | 2018-11-6 17:28 | 显示全部楼层
发现运行到BCSCTL2 |=SELM_2+SELS; 就无法继续执行,绿颜色的提示行消失

使用特权

评论回复
jlyuan| | 2018-11-6 17:31 | 显示全部楼层
什么意思?不是很明白你说的什么,能再解释一下这个现象吗

使用特权

评论回复
spark周|  楼主 | 2018-11-6 17:33 | 显示全部楼层
下面debug log也没有报错。XIN--XOUT 接的是8MHZ的

使用特权

评论回复
yszong| | 2018-11-6 17:36 | 显示全部楼层
楼主程序可以公开吗?贴程序看下吧,这么说看不出什么原因

使用特权

评论回复
spark周|  楼主 | 2018-11-6 17:39 | 显示全部楼层
#include <msp430f122.h>
int count=0;

int main( void )
{
  int j;   
    WDTCTL = WDTPW + WDTHOLD;       //关闭看门狗  
    BCSCTL2 |=SELM_2+SELS;
    CCTL0 = CCIE;                   //使能CCR0中断
    CCR0 = 40000;                    //设定周期               
    TACTL = TASSEL_1 + ID_3 + MC_1; //定时器A的时钟源选择ACLK,增计数模式
    P2DIR = 0xff;                   //设置P2口方向为输出
    P2OUT = 0xff;

    __enable_interrupt();                        //使能全局中断
    while(1)
    {
      j=count;
    }
}

/*******************************************
函数名称:Timer_A
功    能:定时器A的中断服务函数
参    数:无
返回值  :无
********************************************/
#pragma vector = TIMERA0_VECTOR
__interrupt void Timer_A (void)
{  
  if(count==50)
  {
    count=0;
    P2OUT ^= 0xff;                  //P2口输出取反  
  }
  else
  {
    count++;
  }
}

使用特权

评论回复
dengdc| | 2018-11-6 17:45 | 显示全部楼层
查找下使能下定时器的吧

使用特权

评论回复
heweibig| | 2018-11-6 17:49 | 显示全部楼层

在BCSCTL2 |=SELM_2+SELS操作之前,要先判断8M晶振是否已经起振。

使用特权

评论回复
wuhany| | 2018-11-6 17:52 | 显示全部楼层
另外,貌似MSP430F122不支持XT2

使用特权

评论回复
yszong| | 2018-11-6 17:56 | 显示全部楼层
ACLK使用的是外部晶振哦,你要看一下你的板子上面有没有外接晶振哦,不然时钟没有,肯定不会进入中断的

使用特权

评论回复
jiahy| | 2018-11-6 18:00 | 显示全部楼层
表示我用的430FR5969板子是没有这个外部晶振的,所以我的ACLK是用不了的,我一直用的都是DCO产生的时钟源,SMCLK作为时钟的

使用特权

评论回复
lizye| | 2018-11-6 18:02 | 显示全部楼层
你可以尝试使用一下其他的时钟,试一下可不可以

使用特权

评论回复
yszong| | 2018-11-6 18:06 | 显示全部楼层
系统时钟配置好没有

使用特权

评论回复
shimx| | 2018-11-6 18:11 | 显示全部楼层
外部晶振的需要多条件选择的,注意温漂的

使用特权

评论回复
jiaxw| | 2018-11-6 18:15 | 显示全部楼层
板子上面有没有外接晶振

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

821

主题

10121

帖子

4

粉丝