This thread has been locked.

If you have a related question, please click the "Ask a related question" button in the top right corner. The newly created question will be automatically linked to this question.

[参考译文] CCS/MSP430FR2633:函数调用无返回值

Guru**** 2595800 points


请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

https://e2e.ti.com/support/microcontrollers/msp-low-power-microcontrollers-group/msp430/f/msp-low-power-microcontroller-forum/671615/ccs-msp430fr2633-function-call-no-return-value

器件型号:MSP430FR2633
主题中讨论的其他器件:MSPWARE

工具/软件:Code Composer Studio

大家好、

如果有任何建议、我们都会很感激!

问题:CAPT_getDominantButton (&BTN00)无返回 值。

名称:keynum
   默认值:。
   十六进制:0x00
   十进制:0
   八进制:00
   二进制:00000000b (从 CCS MSP430@FR2633复制值)

,描述问题代码已重块化、如下所示:

#include                      //通用 MSP430器件包括
#include "driverlib.h"                  // MSPWare 驱动程序库
#include "captate.h"                  // CapTIvate 触控软件库
#include "CAPT_App.h"                   // CapTIvate 应用程序代码
#include "CAPT_BSP.h"                   // CapTIvate EVM 板级支持包

uint8_t keynum;



uint8_t updateLED (keynum)

   uint8_t dominantElement;

   if ((BTN00.bSensorTouch=true)&&(BTN00.bSensorPrevTouch=false))
   {
       DominantElement = CAPT_getDominantButton (&BTN00);
       if (dominantElement =0)
       {
           LED1_OFF;
           LED2_OFF;
       }
       否则(dominantElement =1)
       {
           LED1_ON;
           LED2_OFF;
       }
       否则(dominantElement == 2)
       {
           LED1_OFF;
           LED2_ON;
       }
       否则(dominantElement == 3)
       {
           LED1_ON;
           LED2_ON;
       }
       keynum=dominantElement;
   }

   返回 keynum;


//
void main (void)

   //
   //初始化 MCU
   // bsp_configureMCU()设置器件 IO 和计时
   //全局中断使能被设置为允许外设
   //唤醒 MCU。
   //
   WDTCTL = WDTPW | WDTHOLD;
   bsp_configureMCU();
   _bis_SR_register (GIE);

   //
   //启动 CapTIvate 应用程序
   //
   CAPT_AppStart();
   updateLEDs (keynum);
   //updateLEDs();
   //
   //后台循环
   //
   while (1)
   {
      //
      //运行 captate 应用程序处理程序。
      //在应用处理程序运行时设置 LED1,
      //并在检测到接近时设置 LED2
      //在任何传感器上。
      //
      //LED1_ON;
      //if (CAPT_appHandler ()=true)
         //LED2_ON;
      //else
         //LED2_OFF;
      //LED1_OFF;

      //
      //这是一个很好的地方,可以添加任何内容
      //后台应用程序代码。
      //
      __no_operation();

      //
      //后台循环迭代结束
      //如果没有剩余的操作,则进入睡眠状态
      //
      CAPT_appSleep ();
      
   }//结束后台循环
}//结束 main()

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    您好、Matt、

    您似乎没有通过"回调"机制调用函数。

    CapTIvate 库的工作方式是在测量每个传感器之后、让它通过注册的回调调用您的函数。

    有关详细信息、请参阅 CapTIvate 文档软件一章。

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    尊敬的 Dennis:

    感谢您的回复! 您是对的、没有注册回调。

    但我仍然不明白。

    回调 函数 格式为 void如何回调 uint8_t CAPT_getDominantButton (TSENSOR *pButtonGroup)?

    很明显,以下情况是错误的

    void CAPT_getDominantButton (TSENSOR* pSensor)

    {//执行某些操作...}

    map_CAPT_registerCallback (&BTN0000、&CAPT_getDominantButton ());

    如何注册 CAPT_getDominantButton ()?

    请帮助

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    您好、Matt、

    必须将传感器名称和回调函数的名称指定为回调函数中的参数。 例如,如果我有一个名为“updated_LEDs”的回调,根据按下的按钮更新我的 LED,并且按钮是名为“键盘”的按钮组,那么我将按如下方式进行注册:

    map_CAPT_registerCallback (&keypad、&update_LEDs);

    在回调中、您可以使用传感器指针来取消对传感器的引用、并使用显性按钮函数来了解按下哪个按钮、并在逻辑中使用它来打开/关闭相应的 LED。