打印

关于430低功耗程序编译出错,高手来指点下吧

[复制链接]
2910|11
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
duanleiyadang|  楼主 | 2012-3-27 08:06 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
用的IRA5.20,代码很简单如下

#include "io430.h"

void main(void)
{
  BCSCTL1 |= DIVA_2;                        // ACLK/4
  WDTCTL = WDT_ADLY_1000;                   // WDT 1s/4 interval timer
  IE1 |= WDTIE;                             // Enable WDT interrupt
  P1DIR = 0xFF;                             // All P1.x outputs
  P1OUT = 0;                                // All P1.x reset
  P2DIR = 0xFF;                             // All P2.x outputs
  P2OUT = 0;                                // All P2.x reset
  P3DIR = 0xFF;                             // All P3.x outputs
  P3OUT = 0;                                // All P3.x reset
  P4DIR = 0xFF;                             // All P4.x outputs
  P4OUT = 0;                                // All P4.x reset
  P5DIR = 0xFF;                             // All P5.x outputs
  P5OUT = 0;                                // All P5.x reset
  P6DIR = 0xFF;                             // All P6.x outputs
  P6OUT = 0;                                // All P6.x reset

  while(1)
  {
    int i;
    LPM3;                                   // Enter LPM3
    P1OUT |= 0x01;                          // Set P1.0 LED on
    for (i = 5000; i>0; i--);               // Delay
    P1OUT &= ~0x01;                         // Clear P1.0 LED off
  }
}

#pragma vector=WDT_VECTOR
__interrupt void watchdog_timer (void)
{
    LPM3_EXIT;                              // Clear LPM3 bits from 0(SR)
}

编译时出错了
Error[e46]: Undefined external "_BIS_SR" referred in main ( E:\msp430\prjtestcode430\lpm3\Debug\Obj\main.r43 )
Error[e46]: Undefined external "_BIC_SR_IRQ" referred in main ( E:\msp430\prjtestcode430\lpm3\Debug\Obj\main.r43 )
应该是没有定义这两个,不知道怎么设置才OK,用过的高手来指点指点吧

额,另外还想问下,设置低功耗之后再有中断时,执行完中断推出后,程序会自动进入低功耗模式吗?

相关帖子

沙发
梅花望青竹| | 2012-3-27 09:08 | 只看该作者
没有用过的,希望楼主解决后能够分享一下心得与体会!

使用特权

评论回复
板凳
鸵鸟蝈蝈| | 2012-3-27 16:13 | 只看该作者
LPM3_EXIT改成__bic_SR_register_on_exit(LPM3_bits);

使用特权

评论回复
地板
duanleiyadang|  楼主 | 2012-3-27 20:54 | 只看该作者
用的f149,该头文件不行的。io430这个头会根据你的工程设置识别你用的单片机型号。另外四楼的方法我试了下,还是不行

使用特权

评论回复
5
duanleiyadang|  楼主 | 2012-3-27 22:10 | 只看该作者
问题解决了,更改了头文件,换成这个就ok了#include <msp430f149.h>
如果使用#include<msp430.h>这个头文件时要在设置里面选好芯片型号,这样可以
另外说下,下面这些头文件都是不行的
#include "io430.h"
#include  <msp430x14x.h>

使用特权

评论回复
6
vivisa| | 2012-3-28 10:21 | 只看该作者
学习了。

使用特权

评论回复
7
modernthink| | 2012-3-28 11:19 | 只看该作者
楼主在IAR建立project的时候没有在option里选择器件?若做了选择,生产的main函数会自动inlcude你选择器件的头文件的。

使用特权

评论回复
8
modernthink| | 2012-3-28 11:22 | 只看该作者
另外,现在不太推荐用LPM3,和LPM3_exit的写法,若希望程序随着编译器的升级还能继续maintain,还是用
__bic_SR_register_on_exit(LPM3_bits);
__bis_SR_register(LPM3_bits);
进入和退出低功耗模式比较好。

使用特权

评论回复
9
duanleiyadang|  楼主 | 2012-3-29 08:06 | 只看该作者
楼上高手,虚心受教

使用特权

评论回复
10
TI_MCU| | 2012-3-31 10:52 | 只看该作者
三楼正解:
__bic_SR_register_on_exit(LPM3_bits);

使用特权

评论回复
11
peter_zheng| | 2012-3-31 17:01 | 只看该作者
1# duanleiyadang 如果在中断处理函数里没有退出低功耗模式,那么执行完中断处理函数,继续进入低功耗模式

使用特权

评论回复
12
huangfeng33| | 2012-4-3 22:58 | 只看该作者
进来学习学习,受教了,谢谢各位,谢谢21i

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

个人签名:活着就是一种幸福,不信你死一次试试

0

主题

7

帖子

1

粉丝