打印

新手求助!!想了好久都没发现该怎么改?

[复制链接]
928|4
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
FChaos|  楼主 | 2014-8-1 16:12 | 只看该作者 |只看大图 回帖奖励 |倒序浏览 |阅读模式
#include <msp430g2553.h>

/*
* main.c
*/
void GPIO_Init();
void P1_IODect();
void P13_Onclick();

void main(void)
{
    WDTCTL = WDTPW | WDTHOLD;   // Stop watchdog timer
    GPIO_Init();//初始化GPIO
    _enable_interrupts();//等同于——ENIT,使能总中断
    while (1)
      {
        _delay_cycles(100000);//与CPU时钟相关的长延时
        P1OUT^=BIT0;//LED亮灭状态改变
      }
}
/***********************************************************************************************
*名称:                   GPIO_Init()
* 功能:                  设定按键和LED控制IO的方向,启用按键IO的上啦电阻
* 入口参数:            无
* 出口参数:           无
* 说明:                  无
* 范例:                  无
***********************************************************************************************/
void GPIO_Init()
{
  //设定P1.0和P1.6的输出初始值
  P1DIR |= BIT0;
  P1OUT |= BIT0;
  //配合机械按键,启用内部上拉电阻
  P1REN |= BIT3;
  P1OUT |= BIT3;
  //配置P1.3中断参数
  P1DIR &= ~BIT3;
  P1IES |= BIT3;
  P1IE |= BIT3;
  }
/*******************************************************************************************************************
/*名称:           PORT1_ISR()
* 功能:          响应P1口的外部中断函数服务
* 入口参数:   无
* 出口参数:   无
* 说明:          P1.0~P1.8共用了PORT1中断,所以在PORT_ISR()中必须查询标志位P1IFG才能知道具体是哪个
*                      IO引发了外部中断。P1IFG必须手动清除,否则将持续引发PORT1中断。
* 范例:          无
*
*******************************************************************************************************************/
#pragma vector = PORT1_VECTOR
__interrupt void PORT1_ISR(void)//注:前面的下划线有两ge
{
  //启用Port1事件监测函数
  P1_IODect();//监测通过,则会调用事件处理函数
  P1IFG=0;     //退出中断钱必须手动清除IO口中断标志
  }
/********************************************************************************************************/
/*名称:           P1_IODect()
* 功能:          判断具体引发中断的IO,并调用响应的IO的中断事件处理函数
* 入口函数:   无
* 出口函数:   无
* 说明:          该函数兼容所有8个IO的监测,请根据实际输入IO激活“监测代码”。在本例中,
*                      仅有P1.3被用作输入IO,所以其他7个IO的监测代码没有被激活。
*范例:           无
********************************************************************************************************/
void P1_IODect()
{
    unsigned int Push_Key=0;
    //排除输出IO口的干扰后,锁定唯一被触发的中断标志位
    Push_Key=P1IFG&(~P1DIR);
    //延时一段时间,避开机械抖动区域
    __delay_cycles(10000);//消抖延时
    //判断按键状态是否与延时前一致
    if ((P1IN&Push_Key)==0)
      {
        //判断具体哪个IO被按下,调用该IO的事件处理函数
        switch(Push_Key)
        {
       // case BIT0:      P10_Onclick();          break;
       // case BIT1:       P11_Onclick();           break;
       // case BIT2:      P12_Onclick();          break;
        case BIT3:      P13_Onclick();          break;
        //case BIT4:      P14_Onclick();          break;
        //case BIT5:      P15_Onclick();          break;
        //case BIT6:      P16_Onclick();          break;
        //case BIT7:      P17_Onclick();          break;
        default :                                       break; //任何情况下都应加上default
        }
      }
  }

/*名称:           P13_Onclick()
* 功能:          P13的中断事件处理函数,即当P1.3键被按下后,下一步该干什么
* 入口参数:   无
* 出口参数:    无
* 说明:          使用事件处理函数的形式,可以增强代码的移植性和可读性
* 范例:          无
*/

void P13_Onclick()
{
  //Freq仅在P13_Onclick()中使用,但是又需要退出函数时不被清除
  static unsigned int Freq=0;//静态全局变量的典型应用场合
  Freq++;
  if (Freq>3)           Freq=0;
  //根据Freq 的值,改变DCO设定频率
  switch (Freq){
  case 0:               DCOCTL = CALDCO_1MHZ;           BCSCTL1 = CALBC1_1MHZ;           break;
  case 1:               DCOCTL = CALDCO_8MHZ;           BCSCTL1 = CALBC1_8MHZ;          break;
  case 2:               DCOCTL = CALDCO_12MHZ;          BCSCTL1= CALBC1_12MHZ;          break;
  case 3:               DCOCTL=CALDCO_16MHZ;            BCSCTL1= CALBC1_16MHZ;          break;
  default:              break;
  }
  }
本来只有4个错误,后来越改错误越多,简直摸不着头脑!请懂的朋友帮忙!!
错误已经截图上传!

QQ截图20140801160706.png (29.86 KB )

QQ截图20140801160706.png

相关帖子

沙发
dirtwillfly| | 2014-8-2 22:07 | 只看该作者
本帖最后由 dirtwillfly 于 2014-8-2 22:10 编辑

一般这个提示的意思是,有函数使用时未进行声明或定义。
看你的代码上,已经声明过了啊。
你用的什么开发软件?

使用特权

评论回复
评分
参与人数 1威望 +1 收起 理由
FChaos + 1 赞一个!
板凳
数码小叶| | 2014-8-3 11:36 | 只看该作者
CCS环境下未报错,就1个警告啊

使用特权

评论回复
评分
参与人数 1威望 +1 收起 理由
FChaos + 1 赞一个!
地板
FChaos|  楼主 | 2014-8-5 14:48 | 只看该作者
dirtwillfly 发表于 2014-8-2 22:07
一般这个提示的意思是,有函数使用时未进行声明或定义。
看你的代码上,已经声明过了啊。
你用的什么开发软 ...

感觉是CCS5.4有点抽风,把几个子函数提到main前就没问题了,而且,我第二次写也没有报错。

使用特权

评论回复
5
FChaos|  楼主 | 2014-8-5 14:50 | 只看该作者
数码小叶 发表于 2014-8-3 11:36
CCS环境下未报错,就1个警告啊

嗯,解决了,谢谢。

使用特权

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

本版积分规则

2

主题

5

帖子

0

粉丝