5803|10

168

帖子

0

TA的资源

一粒金砂(高级)

楼主
 

收到MSP430 LaunchPad,编程出现怪现象 [复制链接]

是我晕了么。

参照“手把手教你使用TI MSP430 LaunchPad”写的LED灯驱动程序,开始是这样的

#include "io430.h"

int main( void )
{
  // Stop watchdog timer to prevent time out reset
  WDTCTL = WDTPW + WDTHOLD;
 
  P1DIR |= 1 << 0;  //Set P1.0 to output direction
  P1DIR |= 1 << 6;
 
  while(1)
  {
    volatile unsigned int i;
    P1OUT ^= 1 << 0;  //Toggle P1.0 using exclusive-OR
   
    i = 50000;  //Delay
    while(i --);
   
    P1OUT ^= 1 << 6;  //交替闪烁
  }
}

下载下来现象不对,没有交替闪烁,只有一个闪烁,后来改成


#include "io430.h"

int main( void )
{
  // Stop watchdog timer to prevent time out reset
  WDTCTL = WDTPW + WDTHOLD;
 
  P1DIR |= 1 << 0;  //Set P1.0 to output direction
  P1DIR |= 1 << 6;
 
  while(1)
  {
    volatile unsigned int i;
    P1OUT ^= 1 << 0;  //Toggle P1.0 using exclusive-OR
    P1OUT ^= 1 << 6;
   
    i = 50000;  //Delay
    while(i --);
   
  }
}
再下载调试后现象对,但代码明显不是这个意思,就把程序改成先前那个交替闪烁的,后来重新插拔了USB口,看到两个LED灯同时闪烁,然后复位,居然交替闪烁了,再复位,又同时闪烁了,如此交替,难道430的单片机存储器有什么特别设置?

真有些晕了,还没碰到过这种情况。

最新回复

看了楼主写的程序,感觉好复杂……可以写的更简单点的……  详情 回复 发表于 2012-2-14 12:46
 
点赞 关注

回复
举报

1727

帖子

0

TA的资源

五彩晶圆(初级)

沙发
 
while(1)
  {
    volatile unsigned int i;
    P1OUT ^= 1 << 0;  //Toggle P1.0 using exclusive-OR
   
    i = 50000;  //Delay
    while(i --);
   
    P1OUT ^= 1 << 6;  //交替闪烁
  i = 50000;  //Delay
    while(i --);
这样再试试看!
  }
 
 

回复

1997

帖子

24

TA的资源

五彩晶圆(高级)

板凳
 
之前看错了
#include "io430.h"
int main( void )
{
  // Stop watchdog timer to prevent time out reset
  WDTCTL = WDTPW + WDTHOLD;
  
  P1DIR |= 1 << 0;  //Set P1.0 to output direction
  P1DIR |= 1 << 6;
  P1OUT |= 0x40;
  while(1)
  {
    volatile unsigned int i;

   P1OUT ^= 0x41;  //交替闪烁
   
    i = 50000;  //Delay
    while(i --);
   

  }

[ 本帖最后由 shower.xu 于 2011-9-26 22:04 编辑 ]
 
 
 

回复

168

帖子

0

TA的资源

一粒金砂(高级)

4
 

回复 沙发 cat3902982 的帖子

这样好像不是纯粹的交替,实验结果也是,不是纯粹的交替,不过复位后,现象不变
 
 
 

回复

168

帖子

0

TA的资源

一粒金砂(高级)

5
 
差不多解决了,先初始化IO口后就没问题了,如下:
#include "io430.h"

int main( void )
{
  volatile unsigned int i;
  // Stop watchdog timer to prevent time out reset
  WDTCTL = WDTPW + WDTHOLD;
   
  P1DIR |= 1 << 0;  //Set P1.0 to output direction
  P1DIR |= 1 << 6;
   
  P1OUT |= (1 << 0) | (1 << 6);//初始化
   
  while(1)
  {
     
    P1OUT ^= 1 << 0;  //Toggle P1.0 using exclusive-OR
     
     
    i = 50000;  //Delay
    while(i --);
     
    P1OUT ^= 1 << 6;  //交替闪烁
  }
}
 
 
 

回复

168

帖子

0

TA的资源

一粒金砂(高级)

6
 

回复 板凳 shower.xu 的帖子

while(1)上再加上P1DIR &= ~(1 << 0);就可以了
 
 
 

回复

1万

帖子

16

TA的资源

版主

7
 

就是初始值没固定,楼主插拨慢点估计不会出现

 
个人签名http://shop34182318.taobao.com/
https://shop436095304.taobao.com/?spm=a230r.7195193.1997079397.37.69fe60dfT705yr
 
 

回复

91

帖子

0

TA的资源

纯净的硅(初级)

8
 
学习了,我以为只有我一个人不懂,原来好多人不懂的
 
 
 

回复

21

帖子

0

TA的资源

一粒金砂(中级)

9
 
把输出电平初始化试试
 
 
 

回复

4138

帖子

0

TA的资源

五彩晶圆(中级)

10
 
嘿嘿又学习了哈哈哈
 
 
 

回复

170

帖子

0

TA的资源

一粒金砂(中级)

11
 
看了楼主写的程序,感觉好复杂……可以写的更简单点的……
 
 
 

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

随便看看
查找数据手册?

EEWorld Datasheet 技术支持

相关文章 更多>>
关闭
站长推荐上一条 1/10 下一条
【干货上新】电源解决方案和技术第二趴 | DigiKey 应用探索站
当月好物、电源技术资源、特色活动、DigiKey在线实用工具,干货多多~

查看 »

 
EEWorld订阅号

 
EEWorld服务号

 
汽车开发圈

 
机器人开发圈

About Us 关于我们 客户服务 联系方式 器件索引 网站地图 最新更新 手机版

站点相关: 国产芯 安防电子 汽车电子 手机便携 工业控制 家用电子 医疗电子 测试测量 网络通信 物联网 10

北京市海淀区中关村大街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
快速回复 返回顶部 返回列表