我想定期读出RS232数据。为此,我制造了一个中断。但是,我的RS232函数需要信号量。我发现不能在中断中执行TX(线程X)函数。要使我的TX功能在中断中工作,我必须做些什么?
发布于 2022-05-11 12:37:12
如果您的RTOS提供了一种方法来实现它,那么就使用它。如果没有,那么还有其他一些选择:
在变量访问过程中禁用来自后台程序的特定中断。如果在您的MCU上中断不可中断,则可以实现此处描述的“可怜人的互斥”:https://electronics.stackexchange.com/questions/409545/using-volatile-in-embedded-c-development/409570#409570
还有一个非常糟糕的主意/最后的办法,那就是切换全局中断掩码。
发布于 2022-05-11 16:00:37
首先,确保在ISR开始和结束时分别调用_tx_thread_context_save和_tx_thread_context_restore。有关更多信息,请参见这里:https://learn.microsoft.com/en-us/azure/rtos/threadx/chapter3#isr-template第二,您不能在中断中创建信号量,所以请确保在其他地方创建它。
https://stackoverflow.com/questions/72200459
复制相似问题