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.

[参考译文] CC3220MODA:在引脚中断上运行阻止任务时出现问题

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

https://e2e.ti.com/support/wireless-connectivity/wi-fi-group/wifi/f/wi-fi-forum/985692/cc3220moda-issue-to-run-blocking-task-on-pin-interrupt

器件型号:CC3220MODA

您好 TI 团队

我正在开发 CC3220MODA 芯片和 portableNative 示例项目。

我的应用设计是将系统置于睡眠模式、仅在 GPIO 中断时唤醒、执行一些阻止执行并返回睡眠模式。

我尝试了以下操作:

1、系统在 GPIO 中断时唤醒、但如果我通过 ISR 回调运行一些阻塞操作(播放音频文件或 SPI 操作)、则系统在唤醒后无法正常工作(我同意此结果)。

接收到 GPIO 回调后、它应该唤醒"consoleThread"线程、这样我就可以从该线程而不是回调函数运行阻塞操作、但是"consoleThread"不会被唤醒以执行阻塞操作。

以下是我的问题:

-如何通过回调函数创建运行时线程?

-从创建的运行时线程执行阻塞操作后,如何将其终止?

我们将感谢您的任何帮助。

谢谢

Raj

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

    有多种不同的方法可以在中断和线程上下文之间同步。

    您可以使用一个将等待 信号量/互斥量或消息队列的线程-请检查 SDK 以查看示例。 此类线程可在启动时使用如下所示的代码创建一次:

    while(1) {
    
       - Wait on Mutex/Sem/MQ ;
    
       - Do something
    
    }
    
    

    如果您想创建一个线程并退出该线程 -可以完成该操作、但效率较低。

    创建线程时使用"分离"标志(请参阅下面的 SDK 示例中的内容),因此当调用 pthread_exit()时,线程资源将被释放。

    int detachState = PTHREAD_CREATE_DETACHED;
    retc = pthread_attr_setdetachstate(&pAttrs, detachState);

    确保阻塞调用不会导致器件进入 LPDS (在 LPDS 中、只能将一个 GPIO 设置为唤醒源)。

      

    BR、

    Kobi