esp-idf 4.4.4,esp32c3,有没有比 portMUX_INITIALIZER_UNLOCKED 等级还高的?
时间: 2024-03-09 15:49:59 浏览: 44
esp-idf-wifi-apsta:带有esp-idf的WIFI_MODE_APSTA示例
5星 · 资源好评率100%
在ESP-IDF中,`portMUX_INITIALIZER_UNLOCKED` 是用于创建 FreeRTOS 临界区的初始化宏,它是最常见的临界区保护方式,用于保护共享资源免受中断和其他线程的干扰。但是,如果你需要更高级别的临界区保护,可以考虑使用 `portMUX_TYPE` 类型的变量。
`portMUX_TYPE` 是一个更高级别的临界区保护方式,它可以用于保护更复杂的共享资源。它的用法与 `portENTER_CRITICAL()` 和 `portEXIT_CRITICAL()` 函数类似,但是需要手动创建和初始化 `portMUX_TYPE` 变量。下面是一个示例:
```
// 创建一个 portMUX_TYPE 类型的变量
portMUX_TYPE myMutex = portMUX_INITIALIZER_UNLOCKED;
// 在需要保护的代码块中使用 myMutex 变量保护临界区
portENTER_CRITICAL(&myMutex);
// 临界区代码
portEXIT_CRITICAL(&myMutex);
```
使用 `portMUX_TYPE` 可以为你的代码提供更高级别的保护,但是需要注意,使用不当可能会影响系统的性能和稳定性。因此,在使用时应该谨慎考虑。
阅读全文