4040|18

828

帖子

8

TA的资源

一粒金砂(高级)

楼主
 

为啥定时器0的1通道开了中断,但不进中断函数呢,但中断标志TMIF01会置1 [复制链接]

本帖最后由 wugx 于 2015-8-29 11:30 编辑

为啥定时器0的1通道开了中断,但不进中断函数呢,但中断标志TMIF01会置1,而且程序会跑飞,以前还能用呢

部分代码如下
void TAU_Init(void)
{
    TAU0EN = 1;             /* Supplies input clock */
    TPS0 = 0x05;            /* CK00, fMCLK = fCLK/(2^5) = 625kHz ,fclk=20M*/   
    TMR01H = 0;             /* TPS0 setting available, only software trigger */
    TMR01L = 0;             /* Falling edge, Interval timer mode */
    TDR01H = 0xf4;          /* Interval time = (0xf423+1)/625kHz = 100ms */
    TDR01L = 0x23;
    TMIF01 = 0;
    TMMK01 = 0;             /* Enables INTTM01 interrupt */
    //TMPR101 = 0;            /* Sets INTTM01 low priority */
    //TMPR001 = 1;
}

void TAU0_Channel1_Interrupt(void)
{
    g_Cnt100ms++;
    if (g_Cnt100ms == 10)
    {
        g_Flag1s = 1;      
        g_Cnt100ms = 0;        
        P0.1=~P0.1;        
    }
    if(g_Cnt100ms==20)
    {
        g_Cnt100ms = 0;        
        P0.0=~P0.0;            
    }
}
void main(void)
{
    System_Init();              /* Initializes each module */
    P0 &= 0xc3;
    TS0 |= 0x02;                /* Starts TAU01 */
    while ( !(TE0 & 0x02) );    /* Waiting TAU01 works */
    while (1)
    {
            while (TMIF01 == 0);
        TMIF01 = 0;            /* Clears interrupt flag bit */
    }
}

最新回复

#pragma interrupt INTTM01 TAU0_Channel1_Interrupt  在头文件上面加一句中断入口啊。  详情 回复 发表于 2015-9-2 09:38
点赞 关注
个人签名人生有许多选项是灰色的、不可选的,但至少你可以选择生活的态度。。。韬光养晦,志存高远http://www.xzroad.com/

回复
举报

828

帖子

8

TA的资源

一粒金砂(高级)

推荐
 
数码小叶 发表于 2015-8-31 11:49
楼主这个问题怎么解决的?

#pragma interrupt INTTM01 TAU0_Channel1_Interrupt
这句在定时器源文件开头,容易和注释一起删了

点评

我把0和1都开了,这句改成0没问题。一写这一句就报错,还没解决  详情 回复 发表于 2015-9-1 00:19
 
个人签名人生有许多选项是灰色的、不可选的,但至少你可以选择生活的态度。。。韬光养晦,志存高远http://www.xzroad.com/
 

回复

1781

帖子

0

TA的资源

五彩晶圆(中级)

沙发
 
是不是中断函数的声明有问题啊……

点评

申明是写在头文件里的,主程序调用  详情 回复 发表于 2015-8-29 19:19
 
个人签名只有求知欲,没有求偶欲的人是植物,只有求偶欲,没有求知欲的人叫动物,既没求知欲,又没求偶欲的人是矿物。
 
 

回复

828

帖子

8

TA的资源

一粒金砂(高级)

板凳
 
申明是写在头文件里的,主程序调用
 
个人签名人生有许多选项是灰色的、不可选的,但至少你可以选择生活的态度。。。韬光养晦,志存高远http://www.xzroad.com/
 
 

回复

828

帖子

8

TA的资源

一粒金砂(高级)

4
 
wangjiafu1985 发表于 2015-8-29 19:10
是不是中断函数的声明有问题啊……

申明是写在头文件里的,主程序调用
 
个人签名人生有许多选项是灰色的、不可选的,但至少你可以选择生活的态度。。。韬光养晦,志存高远http://www.xzroad.com/
 
 

回复

1781

帖子

0

TA的资源

五彩晶圆(中级)

5
 
一般程序,如果以前好用,现在不好用了,说明你改了某个不起眼的地方,然后你自己还检查不出来,仔细对比一下声明的那句和中断函数名声是否相同,没准中间少了一个字母或者多了一个字母或者大小写或者空格什么的

点评

那他应该报错啊  详情 回复 发表于 2015-8-29 19:31
 
个人签名只有求知欲,没有求偶欲的人是植物,只有求偶欲,没有求知欲的人叫动物,既没求知欲,又没求偶欲的人是矿物。
 
 

回复

828

帖子

8

TA的资源

一粒金砂(高级)

6
 
wangjiafu1985 发表于 2015-8-29 19:25
一般程序,如果以前好用,现在不好用了,说明你改了某个不起眼的地方,然后你自己还检查不出来,仔细对比一 ...

那他应该报错啊

点评

如果声明的时候把中断函数声明成了别的定时器中断就不会报错,而且跑飞也解释得通  详情 回复 发表于 2015-8-29 19:54
 
个人签名人生有许多选项是灰色的、不可选的,但至少你可以选择生活的态度。。。韬光养晦,志存高远http://www.xzroad.com/
 
 

回复

1781

帖子

0

TA的资源

五彩晶圆(中级)

7
 
wugx 发表于 2015-8-29 19:31
那他应该报错啊

如果声明的时候把中断函数声明成了别的定时器中断就不会报错,而且跑飞也解释得通

点评

楼主对的,果然把最重要的一句删了  详情 回复 发表于 2015-8-29 23:18
那你这个函数不申明也会报错的啊, 申明: #ifndef _TAU_ #define _TAU_ /****************************************************************************** Exported global variables and functions (to b  详情 回复 发表于 2015-8-29 20:41
 
个人签名只有求知欲,没有求偶欲的人是植物,只有求偶欲,没有求知欲的人叫动物,既没求知欲,又没求偶欲的人是矿物。
 
 

回复

828

帖子

8

TA的资源

一粒金砂(高级)

8
 
wangjiafu1985 发表于 2015-8-29 19:54
如果声明的时候把中断函数声明成了别的定时器中断就不会报错,而且跑飞也解释得通

那你这个函数不申明也会报错的啊,
申明:
#ifndef _TAU_
#define _TAU_

/******************************************************************************
Exported global variables and functions (to be accessed by other files)
******************************************************************************/
void TAU_Init(void);
__interrupt void TAU0_Channel1_Interrupt(void);

#endif

调用

void TAU0_Channel1_Interrupt(void)
{
    g_Cnt100ms++;
    if (g_Cnt100ms == 10)
    {
        g_Flag1s = 1;      
        g_Cnt100ms = 0;       
        P0.1=~P0.1;       
    }
    if(g_Cnt100ms==20)
    {
        g_Cnt100ms = 0;       
        P0.0=~P0.0;           
    }
}
 
个人签名人生有许多选项是灰色的、不可选的,但至少你可以选择生活的态度。。。韬光养晦,志存高远http://www.xzroad.com/
 
 

回复

140

帖子

0

TA的资源

版主

9
 
你中断函数貌似和例程不一样
例程中ADC中断:
#pragma interrupt INTAD Adc_Interrupt

__interrupt void Adc_Interrupt(void)
{
。。。。。
}

点评

楼主对的,我看见瑞萨前面的注释太难看了,就删来着,结果把一句删了 #pragma interrupt INTTM01 TAU0_Channel1_Interrupt  详情 回复 发表于 2015-8-29 23:16
#pragma sfr 就把所有特殊功能寄存器的申明定义放在里面了  详情 回复 发表于 2015-8-29 22:40
但定时器里的是这个啊  详情 回复 发表于 2015-8-29 22:08
 
 
 

回复

828

帖子

8

TA的资源

一粒金砂(高级)

10
 
bkn1860 发表于 2015-8-29 21:26
你中断函数貌似和例程不一样
例程中ADC中断:
#pragma interrupt INTAD Adc_Interrupt

__interrupt vo ...

但定时器里的是这个啊
 
个人签名人生有许多选项是灰色的、不可选的,但至少你可以选择生活的态度。。。韬光养晦,志存高远http://www.xzroad.com/
 
 

回复

828

帖子

8

TA的资源

一粒金砂(高级)

11
 
bkn1860 发表于 2015-8-29 21:26
你中断函数貌似和例程不一样
例程中ADC中断:
#pragma interrupt INTAD Adc_Interrupt

__interrupt vo ...

#pragma sfr 就把所有特殊功能寄存器的申明定义放在里面了
 
个人签名人生有许多选项是灰色的、不可选的,但至少你可以选择生活的态度。。。韬光养晦,志存高远http://www.xzroad.com/
 
 

回复

828

帖子

8

TA的资源

一粒金砂(高级)

12
 
bkn1860 发表于 2015-8-29 21:26
你中断函数貌似和例程不一样
例程中ADC中断:
#pragma interrupt INTAD Adc_Interrupt

__interrupt vo ...

楼主对的,我看见瑞萨前面的注释太难看了,就删来着,结果把一句删了

#pragma interrupt INTTM01 TAU0_Channel1_Interrupt
 
个人签名人生有许多选项是灰色的、不可选的,但至少你可以选择生活的态度。。。韬光养晦,志存高远http://www.xzroad.com/
 
 

回复

828

帖子

8

TA的资源

一粒金砂(高级)

13
 
wangjiafu1985 发表于 2015-8-29 19:54
如果声明的时候把中断函数声明成了别的定时器中断就不会报错,而且跑飞也解释得通

楼主对的,果然把最重要的一句删了
 
个人签名人生有许多选项是灰色的、不可选的,但至少你可以选择生活的态度。。。韬光养晦,志存高远http://www.xzroad.com/
 
 

回复

2549

帖子

0

TA的资源

五彩晶圆(初级)

14
 
楼主这个问题怎么解决的?

点评

#pragma interrupt INTTM01 TAU0_Channel1_Interrupt 这句在定时器源文件开头,容易和注释一起删了  详情 回复 发表于 2015-8-31 22:05
 
 
 

回复

2549

帖子

0

TA的资源

五彩晶圆(初级)

16
 
wugx 发表于 2015-8-31 22:05
#pragma interrupt INTTM01 TAU0_Channel1_Interrupt
这句在定时器源文件开头,容易和注释一起删了

我把0和1都开了,这句改成0没问题。一写这一句就报错,还没解决

点评

在要仔细看看吧,不行就把原来的例程再贴回来,坚持  详情 回复 发表于 2015-9-3 16:51
 
 
 

回复

286

帖子

1

TA的资源

一粒金砂(中级)

17
 
#pragma interrupt INTTM01 TAU0_Channel1_Interrupt  在头文件上面加一句中断入口啊。

点评

恩,改过了,好了  详情 回复 发表于 2015-9-3 16:52
 
个人签名

失恋中。。。

 
 

回复

828

帖子

8

TA的资源

一粒金砂(高级)

18
 
数码小叶 发表于 2015-9-1 00:19
我把0和1都开了,这句改成0没问题。一写这一句就报错,还没解决

在要仔细看看吧,不行就把原来的例程再贴回来,坚持
 
个人签名人生有许多选项是灰色的、不可选的,但至少你可以选择生活的态度。。。韬光养晦,志存高远http://www.xzroad.com/
 
 

回复

828

帖子

8

TA的资源

一粒金砂(高级)

19
 
liaoyuanhong 发表于 2015-9-2 09:38
#pragma interrupt INTTM01 TAU0_Channel1_Interrupt  在头文件上面加一句中断入口啊。

恩,改过了,好了
 
个人签名人生有许多选项是灰色的、不可选的,但至少你可以选择生活的态度。。。韬光养晦,志存高远http://www.xzroad.com/
 
 

回复
您需要登录后才可以回帖 登录 | 注册

查找数据手册?

EEWorld Datasheet 技术支持

相关文章 更多>>
关闭
站长推荐上一条 1/9 下一条

 
EEWorld订阅号

 
EEWorld服务号

 
汽车开发圈

About Us 关于我们 客户服务 联系方式 器件索引 网站地图 最新更新 手机版

站点相关: 国产芯 安防电子 汽车电子 手机便携 工业控制 家用电子 医疗电子 测试测量 网络通信 物联网

北京市海淀区中关村大街18号B座15层1530室 电话:(010)82350740 邮编:100190

电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 电信业务审批[2006]字第258号函 京公网安备 11010802033920号 Copyright © 2005-2025 EEWORLD.com.cn, Inc. All rights reserved
快速回复 返回顶部 返回列表