首页 | 新闻 | 新品 | 文库 | 方案 | 视频 | 下载 | 商城 | 开发板 | 数据中心 | 座谈新版 | 培训 | 工具 | 博客 | 论坛 | 百科 | GEC | 活动 | 主题月 | 电子展
返回列表 回复 发帖

[求助]奇怪,为啥中断都不好使???

只是中断不正常,其他功能正确吗?
海纳百川  有容乃大
定时器时钟选择的问题?
海纳百川  有容乃大
把你的project发给我看看吧。
海纳百川  有容乃大
我就是用USBMULTILINKBDM和DP256的EVB板。
海纳百川  有容乃大
strongchen_free@yahoo.com.cn
海纳百川  有容乃大
好像有时候连不上,有时又好了。
海纳百川  有容乃大
你发给我之后要发个帖子说一声,我不是一直去看那个信箱的。我试试看,然后再告诉你结果。
海纳百川  有容乃大
我看过了你的程序。主要问题是对TOF清零应该是对TFLG2_TOF写1,而不是写0;另外,对TCNT的写操作是无效的。我把改过的程序下载到DP256的EVB上,可以看到程序可以正确运行,LED在闪烁。由于电路板的原因,我将LED口改为了PORTB_BIT0。下面是我修改过的程序:

#pragma CODE_SEG __NEAR_SEG NON_BANKED

interrupt void Int_TimerOverFlow(void){

TFLG2_TOF = 1; //clear timer overflow flag
time_count++;
if (time_count>2) {time_count=0;flag=~flag;}
}

#pragma CODE_SEG DEFAULT

void PORT_Init(void){
DDRB=0x01;
PORTB_BIT0=0; //µÆÁÁ
}

void ECT_Init(void)
{
COPCTL_CR=0;//¹Ø±Õ¿´ÃŹ·.COP(×ÔÓÉÔËÐп´ÃŹ·¶¨Ê±Æ÷)¿ØÖƼĴæÆ÷

TSCR1_TEN=0; //Í£Ö¹¶¨Ê±Æ÷
// TSCR2_TCRE=1;//¶¨Ê±Æ÷¸´Î»
TSCR2_PR = 4; //prescale factor is 16, bus clock/128=8Mhz/8
TSCR2_TOI = 1; //timer overflow interrupt enable
//TCNT = 0x0040;
TSCR1_TEN = 1; //timer enable

}

void main(void) {

PORT_Init();

ECT_Init();
EnableInterrupts;


while(1){

if(flag==0){
DDRB=0x01;
PORTB_BIT0=0;//µÆÁÁ
}
else{
DDRB=0x01;
PORTB_BIT0=1;//µÆÃð
}

}

}
海纳百川  有容乃大
检查一下外部中断的引脚。也可以写一个外部中断的中断服务程序,看看程序是否跳入了外部中断。
海纳百川  有容乃大
你只有一块板子吗?有没有把我的程序下载到你的板子上试过?
海纳百川  有容乃大
返回列表