这是针对键盘特性的软件库文档中所提到的"直接或间接访问元件状态数据"时所面临的问题。 为了保证精确度、即使我们触摸 BSWP 上的键盘 、如果条件(keypadSensor_E00.bTouch == true) 不满足。 此外、当我们尝试
我们想了解我们的行为是什么错的。
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.
这是针对键盘特性的软件库文档中所提到的"直接或间接访问元件状态数据"时所面临的问题。 为了保证精确度、即使我们触摸 BSWP 上的键盘 、如果条件(keypadSensor_E00.bTouch == true) 不满足。 此外、当我们尝试
尊敬的 Veer Karan Goy:
我没有看到附件。
从您上面的注释可以看出、您将传感器称为"keypadSensor"、然后称为"keypadSensor"。 确保名称一致。 不确定是不是问题所在、只是观察而已。
您的目标转换计数和转换增益设置是多少?
您的触摸阈值设置是多少?
当您在运行 GUI 时触摸传感器时、是否在条形图视图的条形下方看到 GUI 中的绿色 LED?
当您触摸按钮时、是否看到蓝条在绿线下方? 触摸与非触摸之间的增量测量值是多少。
您好、Dennis、
根据您的建议、我们观察到、 触摸时蓝色条会低于 GUI 中的绿色条。 在转换计数和增益值为500和100时、可以看到增量值134 (触摸)和0-2 (不触摸)。 我还附上了供您参考的代码。 在本例中、仅打开 LED1。
#include <msp430.h> // Generic MSP430 Device Include #include "driverlib.h" // MSPWare Driver Library #include "captivate.h" // CapTIvate Touch Software Library #include "CAPT_App.h" // CapTIvate Application Code #include "CAPT_BSP.h" // CapTIvate EVM Board Support Package tElement keypad_E00; void main(void) { // // Initialize the MCU // BSP_configureMCU() sets up the device IO and clocking // The global interrupt enable is set to allow peripherals // to wake the MCU. // WDTCTL = WDTPW | WDTHOLD; BSP_configureMCU(); __bis_SR_register(GIE); // // Start the CapTIvate application // CAPT_appStart(); // // Background Loop // while(1) { // // Run the captivate application handler. // Set LED1 while the app handler is running, // and set LED2 if proximity is detected // on any sensor. // // LED1_ON; if(CAPT_appHandler()==true){ if(keypad_E00.bTouch == true) { LED2_ON; // ILLUMINATE LED LED1_OFF; } else { LED2_OFF; // TURN LED OFF LED1_ON; } // // This is a great place to add in any // background application code. // __no_operation(); } // // End of background loop iteration // Go to sleep if there is nothing left to do // CAPT_appSleep(); } // End background loop } // End main()
您好,Veer Karan Goyal
在第6行、您需要在 tElement keypad_e00之前具有 extern;
示例
extern Element keypad_e00;
使用这种方法创建一个名为"keepad_e00"的新元素、该元素对于 main 是本地的。 当逻辑检查 keyboard_e00.bTouch 时、它始终为 false、因为编译代码时编译器集默认为 false。
添加 extern 可告知编译器 keepad_e00是项目中的其他位置、并可在 CAPT_UserConfig.c 中找到。
您好,Dennis
我们已在 CAPT_UserConfig.h 文件中使用 extern 定义了"keepad_E00"、根据您的建议、我们在 CAPT_UserCofig.c 文件中定义了它。 此外、我们再次检查了 CAPT_WAKEONPROX_ENABLE (FALSE)。 但我们无法在软件中检测到电容式触控。 为了便于参考、我们还附上了之前我们是如何定义它的图片。
这真的很奇怪。 我使用了您的代码、它在我的 BSWP EVM 上运行。 如果您在 if (keepad_e00.bTouch = true{}中的某个位置设置断点、代码会到达那里吗? 或者、在调试模式下、复位代码、在 if (keepad_E00.bTouch = true) 上设置断点、然后将手指放在 keepade_E00上并运行代码。 程序停止鼠标悬停在表达式 keepad_e00上或添加到 Expressions 窗口、然后查看其为 true 或 false。
我们尝试了您的建议、观察到"keepad_e00.bTouch"的输出为假。 我特此为整个工程提供链接、如果您可以在 BSWP EVM 上运行该工程并检查 它是否正常工作。 使用的 CCS 版本为12.6.0、GUI 版本为1.83.00.08。