器件型号:MSP-CAPT-FR2633
工具/软件:Code Composer Studio
您好!
在我描述问题之前、我将解释我是如何到达那里的。 我正在开发 一款需要电容式触控的产品。 我已从电容式设计中心生成代码、以触发开发板上的 LED 作为入门。 然后、我制作了一个版本、不在 PC 上使用 UART 或 BulK_I2C、因此在触摸 CAPTIVATE-BSWP 焊盘按钮时独立打开板载 LED。 还将时钟更改为16MHz。 它检测到 while 循环中的触摸、完美!
接下来、我添加了驱动基于 WS2812的 RGB LED 条的代码软件。 它有一个计时器中断、用于对计数器进行计时。 在连续循环中、一个函数检查 定时器节拍是否大于或等于特定的量、并在 SPI 模式下通过 UCA0SIMO 的 UCA0TXBUF 向 LED 带输出一个图形。 接下来、我实现了电容式触控来触发此应用的启动、如 ON 按钮。 在 main()中,执行 RGB LED 条和 电容模块的初始化函数之后,在进入 while (1)连续循环之前,我有
CAPT_AppStart();
CAPT_appSleep ();
while (CAPT_appHandler()!= true); //等待按钮被按下以继续。
START_TIMERA2; // vector=TIMER2_A0_vector Timer 2 A2 cC0
while (1)
{
RGB_LED_Pattern (); //将图案输出到 WS2812 RGB LED 条
}
在检测到触控时、它会继续在环路中运行 LED 条形图。 我的问题是、如果我在 while (1)循环中添加电容式感应(见下文)、它将运行一次并停止。 请注意、 当我放置一个断点时、我注意到定时器中断仍在 TIMER2_A0_VECTOR ISR 中运行。
while (1)
{
if (CAPT_appHandler ()=true) //如果检测到触控
{
LED1_ON; //打开板 LED
__no_operation();
}
否则 LED1_OFF;
RGB_LED_Pattern (); //将图案输出到 WS2812 RGB LED 条
}
令人困惑的是、如果我将 LED 例程从 while 环路中取出、并且只需保持电容式触控检查、电容式触控响应和循环以保持检查。
我已经缩小了在 我在 while (1)循环中调用的 CAPT_updateUI (&g_uiApp)函数中发生的事情的范围,但我无法解决此问题,也无法理解为什么我无法在连续循环中同时运行 LED 函数和 CAPT_appHandler()检查。 这可能 是一个低功耗模式问题、这是一个简单的修复方法、我在 CapTIvate 设计中心 生成的代码中找不到这一点。 如果有人能帮我解决这个问题、我很感激。 提前感谢您!