[求助] 想请教高手IAR这些错误信息的原因与解决方法

chi80929   2015-8-27 11:07 楼主
想请问高手,这些红叉叉是甚麽意思?
螢幕快照 2015-08-27 上午10.17.59.png
我是用板上大神提供的IAR6.3破解版,
因为刚开始研究单片机而已,以前也没用过这软体,
范例程式也是照书上打的
"当外部电压小于0.5vcc时,led灯闪烁提示用户电压过低"
(16位元单片机原理及应用 基于msp430)  人民邮电出版


小弟先感激高手们了!希望这问题不会让我这单片机新手卡关


有问题的msp430x16x.h档已上传

msp430x16x.txt (85.54 KB)
(下载次数: 7, 2015-8-27 10:45 上传)


书上范例为:
#include "io430.h"
#include
#define uint unsigned int
#define uchar unsigned char
#define LED BIT1
#define delaynop {_asm nop;}

uchar flag = 0;
void int_clk()
{
  uchar i;
  BCSCTL1 &= ~XT2OFF;//打开振盪器
  BCSCTL2 |= SELM1+SELS;//MCLK 8M AND SMCLK 1M
  do
  {
    IFG1 &= ~OFIFG;//清除震盪错误标志
    for(i=0;i<100;i++)
     _NOP();//延迟等待
  }
  while ((IFG1 & OFIFG) !=0);//如果标志为1,继续等待
  IFG1 &= ~OFIFG;
}
void int_COMPARATORA()
{
  P2SEL |= 0X14;//P2.2 P2.4分别做为比较器的输出和输入
  P2DIR |= 0X04;//设置P2.2为输出
  CACTL1 &= ~CAEX;//输出取反

  CACTL1 |= CARSEL+CAREF1+CAON+CAIE+CAIES;
  //选择参考电压正接端,CA0接负端,允许中断,下降沿触发中断,参考电压为0.5VCC
  CACTL2 |= CAF+P2CA0;
  //使能输出滤波器,CA0作为比较输入功能
}
#pragma vector = COMPARATORA_VECTOR
_interrupt void COMPARATORA(void)
{
  flag = 1;//置中断标志为1
}
void dely();//软件延迟
{
  uint i,j;
  for(i=0;i<=100;i++)
    for(j=0;j<=50;j++)
    {
      delaynop;
      delaynop;
    }
}

voud main( void )
{
  uint k;
  WDTCTL = WDTPW + WDTHOLD;//关闭看门狗
  int_clk();
  delay();
  int_COMPARATORA();
  _EINT();
  while(1)
  {
    while(flag)
    {
      P1DIR |= LED;
      for(k=0;k<10;k++)
    {
      P1OUT &= ~LED;//P1.1输出低电位,LED灯亮
      delay();//调用软件延迟子程序
      p1out |= led;//P1.1输出高电位,LED灯灭
    }
    flag=0;//标志清零
  }
}
}

初入MCU世界的新手,还请高手们多多指导、包容,小弟感激不尽。。

回复评论 (9)

2推荐 sint27 

引用: chi80929 发表于 2015-8-27 11:25
谢谢!!
照着前辈们建议的去做了
也发现自己打错许多关键字
最后找呀找着的 就剩这个错误
对照书 ...

1、手打的中断函数前的下划线要2个:__
2、缺少了一个分号,
点赞  2015-8-27 13:34

2推荐 dontium 

重复定义问题。其它编译器也是会提示错误的
点赞  2015-8-27 11:13

2推荐 路飞d梦想 

重复定义了一些变量。可能是引用的头文件的问题。
点赞  2015-8-27 11:12
#include "io430.h"
#include
这两个头文件,删去第一个试试看
世间万物皆系于一键之上~
点赞  2015-8-27 11:11

32332.png
谢谢!!
照着前辈们建议的去做了
也发现自己打错许多关键字
最后找呀找着的 就剩这个错误
对照书上 也没打错
可以请前辈们再给点方向吗

初入MCU世界的新手,还请高手们多多指导、包容,小弟感激不尽。。
点赞  2015-8-27 11:25
#include "io430.h"与#include 有可能有些宏定义重复定义了。所以如果可以的话,您可以用文本对比工具,对比下试试看。我好像之前碰到过。
点赞  2015-8-28 00:18
引用: sint27 发表于 2015-8-27 13:34
1、手打的中断函数前的下划线要2个:__
2、缺少了一个分号,

请问是哪裡要加分号呢?手打的中断函数是指这段吗?

#pragma vector = COMPARATORA_VECTOR
_interrupt void COMPARATORA(void)

我刚接触单片机,很多东西还不是很懂,都自个儿照书本做实验,不料书本也会出小问题...
初入MCU世界的新手,还请高手们多多指导、包容,小弟感激不尽。。
点赞  2015-8-28 08:12
引用: huaiqiao 发表于 2015-8-28 00:18
#include "io430.h"与#include 有可能有些宏定义重复定义了。所以如果可以的话,您可以用文本对比工具,对 ...

我把#include "io430.h"这行叙述删除后就减少了大部份的错误了!
目前剩些许小问题待解决。
我会照前辈说的去比对看看哪裡不同,谢谢前辈!
初入MCU世界的新手,还请高手们多多指导、包容,小弟感激不尽。。
点赞  2015-8-28 08:17
引用: chi80929 发表于 2015-8-28 08:17
我把#include "io430.h"这行叙述删除后就减少了大部份的错误了!
目前剩些许小问题待解决。
我会照前辈 ...

你截图的程序不全,我也查看不到,
一般用鼠标双击报错的那句,界面会跳到错误的位置,就在界面跳到的上下文找找就会找到错误了
点赞  2015-8-28 11:37
电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 京公网安备 11010802033920号
    写回复