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.

[参考译文] 编译器/TM4C1294NCPDT:临界区还是类似?

Guru**** 2553260 points


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

https://e2e.ti.com/support/microcontrollers/arm-based-microcontrollers-group/arm-based-microcontrollers/f/arm-based-microcontrollers-forum/953053/compiler-tm4c1294ncpdt-critical-section-or-similar

器件型号:TM4C1294NCPDT

工具/软件:TI C/C++编译器

在我的应用中、我通过 UDP 接收设置数据。 根据硬件握手中断通过 GPIO 发送到外部器件的数据。

安装程序数据通常以固定模式组织、并反复重复。 通常情况下、模式开头的两个字中可能会发生较小的变化。

在发送器发送之前、如何确保允许这些变化进入图形?

在 Windows 下、我用于关键段、互斥等、其中处理将置于待机状态、直到释放。 但在微控制器上、当时没有 x-tra 线程?

我可以在中看到一种解决方案、即接收器只是通知输出序列发生器进行更改。

还有其他选项吗?

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

    首先、不要对能够在微控制器上运行包含互斥量的多线程操作系统打折。 您可能需要查看 TI-RTOS 的功能

    但是、这对于我认为您尝试做的事情来说是不必要的。 如果我理解正确、您可以通过以太网获取数据、并根据 GPIO 中断将其发送出去。 问题是如何保留数据一致性、因为这两个事件都是由中断驱动的。 关键部分是将新数据从输入缓冲器复制到输出缓冲器时。 我建议您 通过在进入中断例程以输出数据时将一个变量、一个关键输出标志(volatile bool)设置为 true 来重新创建互斥量的函数。  然后、在关键数据已被发送后清除该标志。

    在主例程中、您将循环等待一个标志、表示您通过 UDP 拥有新数据。 然后、禁用中断并检查关键输出标志。 如果该标志为真、只需重新启用中断即可。 如果该标志为 false、则将新数据复制到输出缓冲器中、然后重新启用中断。