9303|9

71

帖子

0

TA的资源

一粒金砂(初级)

楼主
 

哪位大侠帮忙看看这是什么问题 [复制链接]

你们帮忙看看这个中断函数出了什么问题.

#include <msp430x16x.h>


void main(void)
{
WDTCTL=WDTPW+WDTTMSEL; //看门狗设为定时器模式
IE1 |=WDTIE;
P1DIR |=BIT0; //P1.0为输出
_EINT();
while(1);
}

interupt [WDT_VECTOR] void WDT_interrupt(void)
{
P1OUT^=BIT0
}

报以下错误
Building configuration: WDT定时器 - Debug
Updating build tree...
main.c
Error[Pe077]: this declaration has no storage class or type specifier E:\孟的文档\main.c 13
Error[Pe065]: expected a ";" E:\孟的文档\main.c 13
Warning[Pe001]: last line of file ends without a newline E:\孟的文档\main.c 16
Warning[Pe012]: parsing restarts here after previous syntax error E:\孟的文档\main.c 16

Total number of errors: 2
Total number of warnings: 2

最新回复

你用得那个关键字是老版本的,我以前也遇到过这个问题。 用#pragma vector=TIMERA1_VECTOR就OK了!  详情 回复 发表于 2009-3-14 02:17
 
点赞 关注

回复
举报

74

帖子

0

TA的资源

一粒金砂(初级)

沙发
 
interupt [WDT_VECTOR] void WDT_interrupt(void)
{
P1OUT^=BIT0
}
缺个“;”^_^
 
 

回复

74

帖子

0

TA的资源

一粒金砂(中级)

板凳
 
谢谢大侠的指点,不过那只是我的疏呼,在其它有中断子程序的程序中,也出现这种问题,显示的错误也一样.我重新发一个,还请大侠再指点一下.


#include <msp430x14x.h>
int main( void )
{
WDTCTL=WDTPW+WDTHOLD; //关闭看门狗定时器
TACTL=TASSEL0+TACLR; //ACLK,清TAR
CCTL0=CCIE; //CCR0中断允许
CCR0=16384; //设定中断间隔
P1DIR |=0X01;
TACTL |=MC0;
_EINT();
while(1);

}


interrupt[TIMERA0_VECTOR] void Timer_A(void)
{
P1OUT ^=BIT0;
}

报错如下:
Building configuration: OU1 - Debug
Updating build tree...
main.c
Error[Pe077]: this declaration has no storage class or type specifier E:\MPS430\OU\main.c 16
Error[Pe065]: expected a ";" E:\MPS430\OU\main.c 16
Warning[Pe001]: last line of file ends without a newline E:\MPS430\OU\main.c 19
Warning[Pe012]: parsing restarts here after previous syntax error E:\MPS430\OU\main.c 19

Total number of errors: 2
Total number of warnings: 2
 
 
 

回复

78

帖子

0

TA的资源

一粒金砂(初级)

4
 
改成这样试一下
可能你的IAR版本有关
#pragma vector=TIMERA1_VECTOR
__interrupt void Timer_A (void)
{
P1OUT ^=BIT0;
}
 
 
 

回复

81

帖子

0

TA的资源

一粒金砂(初级)

5
 
还有就是以后工程最好保存在英文路径下面
 
 
 

回复

64

帖子

0

TA的资源

一粒金砂(初级)

6
 
谢谢了.
 
 
 

回复

81

帖子

0

TA的资源

一粒金砂(初级)

7
 
#pragma vector=TIMERA1_VECTOR
__interrupt void Timer_A (void)
{
P1OUT ^=BIT0;
}
确实版本问题,注意interrupt前面是两个_
 
 
 

回复

64

帖子

0

TA的资源

宇宙尘埃

8
 
可以用下面方式来定义中断服务函数:
例:
#ifdef __IAR_SYSTEMS_ICC__
#if __VER__ >= 200
#pragma vector=USART0RX_VECTOR __interrupt void SPI0_rx (void) #else
interrupt[USART0RX_VECTOR] void SPI0_rx (void)
#endif
#else
interrupt[USART0RX_VECTOR] void SPI0_rx (void)
#endif
{
}

这样既可用于IAR的1.26版及2.XX以后版,又可用于AQ430
 
 
 

回复

91

帖子

0

TA的资源

一粒金砂(初级)

9
 
感觉和版本有关
 
 
 

回复

68

帖子

0

TA的资源

一粒金砂(初级)

10
 
你用得那个关键字是老版本的,我以前也遇到过这个问题。
用#pragma vector=TIMERA1_VECTOR就OK了!
 
 
 

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

随便看看
查找数据手册?

EEWorld Datasheet 技术支持

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

 
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
快速回复 返回顶部 返回列表