OpenEdv-开源电子网

 找回密码
 立即注册
正点原子全套STM32/Linux/FPGA开发资料,上千讲STM32视频教程免费下载...
查看: 4267|回复: 6

最近想这学一下msp430了,写个程序结果没作用,很是头疼,求各位看看

[复制链接]

2

主题

8

帖子

0

精华

新手上路

积分
36
金钱
36
注册时间
2013-5-7
在线时间
0 小时
发表于 2013-5-15 19:56:24 | 显示全部楼层 |阅读模式
利用看门狗中断,实现小灯闪烁,但是小灯居然没动静,哎,苦逼了


#include <msp430x14x.h>

#define uchar unsigned char
#define uint  unsigned int

uchar temp = 0;

void main()
{  
  WDTCTL=WDTPW+WDTHOLD;
  
  BCSCTL1 |= XTS;
  
  do
  {
    IFG1 &= ~OFIFG;
    
    for(uchar temp=0xFF;temp>0;temp--);
  }
  while((IFG1&OFIFG)!=0);
  
  WDTCTL = WDT_ADLY_1000;
  
  IE1 |= WDTIE;
  
  P2DIR = 0xFF;
  P2OUT = temp;
  
  _EINT();
  
  while(1)
  {
    LPM3;
    
    _NOP();
  }  
  
}

#pragma vector = WDT_VECTOR
__interrupt void watchdog()
{
   temp = ~temp;
  P2OUT =  temp;
}


正点原子逻辑分析仪DL16劲爆上市
回复

使用道具 举报

0

主题

17

帖子

0

精华

新手上路

积分
37
金钱
37
注册时间
2013-4-22
在线时间
0 小时
发表于 2013-6-10 10:38:44 | 显示全部楼层
回复 支持 1 反对 0

使用道具 举报

558

主题

11万

帖子

34

精华

管理员

Rank: 12Rank: 12Rank: 12

积分
164897
金钱
164897
注册时间
2010-12-1
在线时间
2100 小时
发表于 2013-5-15 20:37:51 | 显示全部楼层
帮顶,呵呵。
我是开源电子网www.openedv.com站长,有关站务问题请与我联系。
正点原子STM32开发板购买店铺http://openedv.taobao.com
正点原子官方微信公众平台,点击这里关注“正点原子”
回复 支持 反对

使用道具 举报

2

主题

8

帖子

0

精华

新手上路

积分
36
金钱
36
注册时间
2013-5-7
在线时间
0 小时
 楼主| 发表于 2013-5-15 20:52:04 | 显示全部楼层
回复【2楼】正点原子:
---------------------------------
原子啊,你这坏银,你就不能伸手帮下么
回复 支持 反对

使用道具 举报

10

主题

40

帖子

0

精华

初级会员

Rank: 2

积分
100
金钱
100
注册时间
2013-4-26
在线时间
0 小时
发表于 2013-5-15 21:54:20 | 显示全部楼层
我觉得你在对P2OUT状态取反时不要用你上面写的那种形式,可以这样写:P2OUT ^= 0XFF;因为你在这用到temp变量,而在之前判断标志位时又用temp变量,所以,你可以试试上述的办法......
I think: Impossible is equal that i'm possible!!!
回复 支持 反对

使用道具 举报

2

主题

8

帖子

0

精华

新手上路

积分
36
金钱
36
注册时间
2013-5-7
在线时间
0 小时
 楼主| 发表于 2013-5-15 22:29:17 | 显示全部楼层
回复【4楼】Anenn:
---------------------------------
我还真去试了一下,结果还是没动静

难道是电路板设计之初  有冲突什么的  
 不行,我的要看看历程了    
还是谢谢 大哥你了
回复 支持 反对

使用道具 举报

2

主题

8

帖子

0

精华

新手上路

积分
36
金钱
36
注册时间
2013-5-7
在线时间
0 小时
 楼主| 发表于 2013-5-16 07:57:22 | 显示全部楼层
回复【4楼】Anenn:
---------------------------------
还有   非常喜欢你的  2OUT ^= 0XFF;风格,你所说的temp 问题 我也听懂了,其实是这样的,main中的temp是局部变量   不能在中断函数中使用
而我之后的一来就定义了一个全局的temp   那也就是在中断中使用的temp
于是我还是把程序按你说的改成这样,虽然依旧没有效果,但我决定还是把问题先放一放,以后再回过头来钻这个牛角尖儿,嘻嘻
#include <msp430x14x.h>

#define uchar unsigned char
#define uint  unsigned int


void main()
{  
  uchar temp = 0;
  
  WDTCTL=WDTPW+WDTHOLD;
  
  BCSCTL1 |= XTS;
  
  do
  {
    IFG1 &= ~OFIFG;
    
    for(temp=0xFF;temp>0;temp--);
  }
  while((IFG1&OFIFG)!=0);
  
  WDTCTL = WDT_ADLY_1000;
  
  IE1 |= WDTIE;
  
  2DIR = 0xFF;
  2OUT = 0x00;
  
  _EINT();
  
  while(1)
  {
    LPM3;
    
    _NOP();
  }  
  
}

#pragma vector = WDT_VECTOR
__interrupt void watchdog()
{
  2OUT ^=  0xFF;
}
回复 支持 反对

使用道具 举报

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

本版积分规则



关闭

原子哥极力推荐上一条 /2 下一条

正点原子公众号

QQ|手机版|OpenEdv-开源电子网 ( 粤ICP备12000418号-1 )

GMT+8, 2024-6-9 18:35

Powered by OpenEdv-开源电子网

© 2001-2030 OpenEdv-开源电子网

快速回复 返回顶部 返回列表