esp-idf 4.3.5,esp32c3,关闭全局中断
时间: 2024-03-07 07:49:19 浏览: 70
esp32用到的esp-idf工具
你可以使用以下代码关闭全局中断:
```c
// 关闭全局中断
portMUX_TYPE global_int_mux = portMUX_INITIALIZER_UNLOCKED;
portENTER_CRITICAL(&global_int_mux);
// 你的代码
// 打开全局中断
portEXIT_CRITICAL(&global_int_mux);
```
在这个例子中,`portMUX_TYPE` 是 FreeRTOS 提供的一个互斥锁类型。在代码开始时,你需要先定义一个 `portMUX_TYPE` 类型的变量 `global_int_mux`,并初始化为 `portMUX_INITIALIZER_UNLOCKED`。这个变量用于保护一些关键区域,以避免多个任务同时访问共享资源。`portENTER_CRITICAL()` 宏会获取这个互斥锁,并禁止所有中断。你可以在这个宏内部执行你的代码。`portEXIT_CRITICAL()` 宏会释放这个互斥锁,从而允许中断再次触发。
需要注意的是,在调用 `portENTER_CRITICAL()` 宏后,你应该尽快执行你的代码,并尽可能减少中断的禁用时间,以避免系统的稳定性问题。
阅读全文