搜索

关于Launchpad应用

[复制链接]
1574|5
| 2012-8-10 15:45 | 显示全部楼层
IAR6.3的都出来了?这升级太快了吧,

使用特权

评论回复
 楼主 | 2012-8-10 17:42 | 显示全部楼层
没看仔细看Launchpad的规格书,把R32,R33看成了P3口;原来LED是接在P1口上的;
#include<msp430g2553.h>
    #define uchar unsigned char
    #define uint unsigned int
    void main(void)
    {
      uint i=50000;   
      WDTCTL=WDTPW+WDTHOLD;
      P1DIR|=BIT6;
      P1DIR|=BIT3;
      P3OUT=BIT2;
      while(1)
      {
       while(i--);
       i=50000;
       P1OUT^=BIT6;
      }
    }

使用特权

评论回复
| 2012-8-11 08:51 | 显示全部楼层
IAR都6.3啦?是5.3吧。在驱动管理器里是显示msp430 uart,这肯定没有错。

使用特权

评论回复
 楼主 | 2012-8-22 11:47 | 显示全部楼层
写一个键控LED亮灭程序,没看规格书,还以为Launchpad坏了,用手一摸键控区域,LED就亮;
没办法,翻翻规格书,原来电容触摸原理,尽管没怎么整明白;打开上拉电阻就能正常键控了;
#include <msp430g2553.h>
#define uint unsigned int
#define uchar unsigned char
void Delay_ms(uint ms)
{
  uint i,j;
  for(i=ms;i>0;i--)
  {
    for(j=0;j<143;j++)
    {;}
  }
}
void main(void)
{
  WDTCTL=WDTPW+WDTHOLD;
  P1DIR|=0x41;//p1.6,p1.0 set outpin
  P1REN|=BIT3;
  P1OUT|=0x09;//p1.3,p1.1 set hight
  while(1)
  {
    if(!(0x08&P1IN))
    {
      Delay_ms(20);
      if(!(0x08&P1IN))
      {  
        P1OUT=0x08;Delay_ms(500);//p1.6 set hight  
      }
    }   
    else P1OUT=0x48;
  }
}

星期天无聊翻了翻MSP430G系列的数据手册,找了半天没找到CPU的时序图;想想该实现定时器的基本操作了;
一个按键按一下2HZ输出,不按1HZ输出,2分钟后无操作转入低功耗模式;
还很菜啊,智力有限,高级的都还不会用;
#include <msp430g2553.h>
#define uint unsigned int
#define uchar unsigned char
uchar TimeS_count=0;uchar TimeM_count=0;
uchar Key_value=0;uchar Min_flag=0;
void Delay_ms(uint time)
{
  uint i,j;
  for(i=time;i>0;i--)
  {
    for(j=250;j>0;j--)
    {;}
  }
}
void main(void)
{
  WDTCTL=WDTPW+WDTHOLD;
  IE1|=WDTIE;
  P1DIR=BIT6+BIT0;
  P1OUT|=BIT3;
  P1REN|=BIT3;
  WDTCTL=WDT_MDLY_32;
  _EINT();
  while(1)
  {
    if(Min_flag==2)LPM4;
    if(!(0x08&P1IN))
    {
      Delay_ms(20);
      if(!(0x08&P1IN))
      {
        Key_value++;
        Min_flag=0;
        TimeS_count=0;TimeM_count=0;
        if(Key_value==2)
        {
          Key_value=0;
          Min_flag=0;//Min_flag++;
        }
      }
    }
  }
}
#pragma vector=WDT_VECTOR
__interrupt void watchdog_time(void)
{
  
  TimeS_count++;
  switch(Key_value)
  {
   case 0:
    {
      if(TimeS_count==15)//500ms interrupt
      {
        TimeS_count=0;
        P1OUT^=BIT0;
        TimeM_count++;
        if(TimeM_count==120)//60s interrupt
        {
          TimeM_count=0;
          P1OUT^=BIT6;
          Min_flag++;
        }
      }
     }break;
  case 1:
    {
      if(TimeS_count==7)//250ms interrupt
      {
        TimeS_count=0;
        P1OUT^=BIT0;
        TimeM_count++;
        if(TimeM_count==240)//60s interrupt
        {
          TimeM_count=0;
          P1OUT^=BIT6;
          Min_flag++;
        }
      }
    }break;
  default:break;
  }
}

使用特权

评论回复
| 2012-8-23 17:04 | 显示全部楼层
用的IAR5.30 还好用 支持MSP430G系列的

使用特权

评论回复
扫描二维码,随时随地手机跟帖
您需要登录后才可以回帖 登录 | 注册

本版积分规则

我要发帖 我要提问 投诉建议 申请版主

快速回复

您需要登录后才可以回帖
登录 | 注册
高级模式

论坛热帖

在线客服 快速回复 返回顶部 返回列表