在线情况
楼主
  • 头像
  • 级别
    • 积分3
    • 经验169
    • 文章7
    • 注册2012-08-16
    新人问几个问题,关于中断的写法
    [P]问题一:[/P][P]我看有的例程里,中断有两种写法:[/P][P](1)interrupt[WDT_VECTOR] void WDT(void)[/P][P]     {[/P][P]     ...[/P][P]     }[/P][P](2)#pragma vector=WDT_VECTOR
         __interrupt void WDT(void)
         {
         ...[/P][P]     }[/P][P]这两种写法有什么不同?为什么我用第一种编译的时候,IAR会报错?[/P][P]Error[Pe077]: this declaration has no storage class or type specifier [/P][P] [/P][P] [/P][P]问题二:[/P][P]例程里有这么一句:[/P][P]_EINT();[/P][P]我在in430.h里找到了它的宏定义——#define _EINT()        __enable_interrupt()[/P][P]但是__enable_interrupt()到底执行了哪些操作?这个怎么也找不到啊。[/P]
    微控网感谢您的参与
    在线情况
    2
    • 头像
    • 级别
    • 门派
    • 职务总版主
    • 声望+9
    • 财富5
    • 积分3065
    • 经验390701
    • 文章6744
    • 注册2006-03-07
    [P]这种情况主要是你所看到的例子是基于IAR WE430早期版本的。
    也就是说出错的原因是你抄了很老旧的例子中宏定义,所以在后期的编译器中才会出错。只要不用旧例子的中断宏声明可以了。[/P][P]其至_EINT();是指开断MCU的总中断使能的意思。由于你看到是旧的代码,所以在现在的编译器所带的.h文件中才找不到。[/P]
    [COLOR=#0000ff]欢迎发贴分享设计心得、开源DIY...[/COLOR]
    在线情况
    3
    • 头像
    • 级别
      • 积分3
      • 经验169
      • 文章7
      • 注册2012-08-16
      [P]果然大神啊,在别的论坛里问问题,一直没人回,微控网回得最及时了,向总版主致敬![/P][P] [/P][P]没错,我的IAR是最新5.5的。因为找不到别的破解版本。。。[/P][P](1)是不是在新版本里,中断宏声明只有后面那一种写法了?[/P][P](2)版主可不可以提供旧版的.h文件,我想看看_EINT();里的具体内容。[/P]
      微控网感谢您的参与
      在线情况
      4
      • 头像
      • 级别
      • 门派
      • 职务总版主
      • 声望+9
      • 财富5
      • 积分3065
      • 经验390701
      • 文章6744
      • 注册2006-03-07
      [P]据我印象,采用新式中断宏关键字应该在3.多版以后全采用新的了。[/P][P]你只要在微控论坛或TI官方网站都可以下载一些例子,这些例子都是采用新式的了。所以你没必要去找什么旧的.h文件。.h文件是装有旧的WE430系统才有的。估计现在也没有人用那么老的了。[/P][P]至于_EINT()新旧都有的。其实这部分变的不多,主要是中断的关键字不同;没你想的那么复杂...。[/P]
      [COLOR=#0000ff]欢迎发贴分享设计心得、开源DIY...[/COLOR]
      在线情况
      5
      • 头像
      • 级别
        • 积分4
        • 经验527
        • 文章3
        • 注册2008-11-21
        __enable_interrupt()执行了哪些操作,是不是把所有的外围模块的中断都打开了?执行_EINT()后我用到的外围模块不用中断方式,是不是还要把对应的中断关掉?例如串口发送中断。真想看一下__enable_interrupt()的代码。
        微控网感谢您的参与
        在线情况
        6
        • 头像
        • 级别
          • 积分9
          • 经验624
          • 文章16
          • 注册2010-07-20
          [P]在《MSP430系列单片机实用C语言》中提到:[/P][P]1)对_EINT()的解释是:打开全局中断控制,使GIE=1;[/P][P]2)对__enable_interrupt()的解释是:使用NINT指令打开全局中断;[/P]
          微控网感谢您的参与
          在线情况
          7
          • 头像
          • 级别
            • 积分13
            • 经验159
            • 文章18
            • 注册2012-12-29
            学习一下
            微控网感谢您的参与
            Powered by LeadBBS 9.2 .
            Page created in 1.1719 seconds with 5 queries.