您尚未登录。

楼主 #1 2020-02-28 14:24:08

shaoxi2010
会员
注册时间: 2019-06-13
已发帖子: 389
积分: 338

STC15定时器模式3中断只触发了一次

大佬们,问个困惑很久的问题了,STC15说的T0定时器可以配置为NMI中断的tick时钟。但是我的测试代码只跑了一次中断就再也没有了。研究了几天了,有大老可以解释下不。我用的SDCC4.0+STC14w204s,测试代码如下。

/* 中断向量表声明 */
extern void soft_timer_in_isr(void) __interrupt (1) __using (1);

int main(void)
{

    printf("start up \r\n");
    soft_timer_init(10000);
    while(1);
}


void soft_timer_init(unsigned int us)
{
    TMOD = (TMOD & ~0x0f) | 0x03;//不可屏蔽中断无法工作
    AUXR |=  0x80;	//1T
    TL0 = (0xffff - (FOSC*us/1000000));//设置定时初值
    TH0 = (0xffff - (FOSC*us/1000000))>>8;//设置定时初值

    TF0 = 0;//清除TF0标志
    TR0 = 1;//定时器0开始计时
    ET0 = 1;//定时器T0中断允许
}

void soft_timer_in_isr(void)
{
    printf("enter\r\n");
}

运行调试输出:
start up 
enter //这个后面就再也见不到了

离线

#2 2020-02-28 15:25:21

sea18c
会员
注册时间: 2019-08-05
已发帖子: 230
积分: 222.5

Re: STC15定时器模式3中断只触发了一次

中断里面不用重新置初值吗?还有中断标志不用管了吗?

离线

楼主 #3 2020-02-28 15:28:51

shaoxi2010
会员
注册时间: 2019-06-13
已发帖子: 389
积分: 338

Re: STC15定时器模式3中断只触发了一次

按照他手册的说法是自动填装的,我也测试了下确实是自动填装。

离线

楼主 #4 2020-02-28 18:21:15

shaoxi2010
会员
注册时间: 2019-06-13
已发帖子: 389
积分: 338

Re: STC15定时器模式3中断只触发了一次

好吧,我找到问题了,还是阅读能力不行,SDCC的意思是得实现中断在main()文件内,而不是只是声明为外部就行,太坑了。。。

离线

页脚

工信部备案:粤ICP备20025096号 Powered by FluxBB

感谢为中文互联网持续输出优质内容的各位老铁们。 QQ: 516333132, 微信(wechat): whycan_cn (哇酷网/挖坑网/填坑网) service@whycan.cn