taskENTER_CRITICAL(mux),taskENTER_CRITICAL_ISR(mux),portENTER_CRITICAL(mux),portENTER_CRITICAL_ISR(mux) 都是宏定义来调用 vTaskEnterCritical() taskEXIT_CRITICAL(mux),taskEXIT_CRITICAL_ISR(mux),portEXIT_CRITICAL(mux),
taskENTER_CRITICAL(),taskEXIT_CRITICAL(): 同上,使用FreeRTOS宏。 其他辅助功能: 任务通知: vTaskNotifyGive():向任务发送通知,增加任务通知值。 vTaskNotifyGiveFromISR():从ISR中安全地向任务发送通知。 xTaskNotifyWait():等待并清除任务通知。 任务钩子函数: ...
y++){/*使用taskENTER_CRITICAL()和taskEXIT_CRITICAL()保护画点过程,禁止任务调度*/taskENTER_CRITICAL...
通常这个宏不会被直接调用,应该用taskENTER_CRITICAL()和taskEXIT_CRITICAL()来代替它。 四、taskENTER_CRITICAL()、taskEXIT_CRITICAL() API原型: void taskENTER_CRITICAL( void ); void taskEXIT_CRITICAL( void ); 1. 2. 关键部分通过调用taskENTER_CRITICAL()进入,随后通过调用taskEXIT_CRITICAL...
taskENTER_CRITICAL(&my_spinlock); /* 创建任务1,任务函数 */ xTaskCreatePinnedToCore((TaskFunction_t )music, /* 任务名称 */ (const char* )"music", /* 任务堆栈大小 */ (uint16_t )MUSIC_STK_SIZE, /* 传入给任务函数的参数 */ (void* )NULL, /* 任务优先级 */ (UBaseType_t )MUSIC_...
y++){/*使用taskENTER_CRITICAL()和taskEXIT_CRITICAL()保护画点过程,禁止任务调度*/taskENTER_CRITICAL...
在中断发送消息需要使用xQueueSendFromISR,且不支持超时设置,所以发送前要通过函数xQueueIsQueueFullFromISR检测 消息队列是否满 在中断中处理越快越好,防止低于该优先级的异常无法正常响应 最好不要在中断中处理消息队列,只发送 中断服务程序中一定要调用专用于中断的消息队列函数,即以 FromISR 结尾的函数。
taskENTER_CRITICAL(&my_spinlock); /* 创建任务1,任务函数 */ xTaskCreatePinnedToCore((TaskFunction_t )music, /* 任务名称 */ (const char* )"music", /* 任务堆栈大小 */ (uint16_t )MUSIC_STK_SIZE, /* 传入给任务函数的参数 */ (void* )NULL, /* 任务优先级 */ (UBaseTy...
#include "esp_task_wdt.h" portMUX_TYPE mmux = portMUX_INITIALIZER_UNLOCKED; void show_task(void *pvParam) { // task_list(); hc595_init(); vTaskDelay(100/portTICK_PERIOD_MS); uint32_t num = 0; while(1) { taskENTER_CRITICAL(&mmux); hc74595_display(num); num++; taskEXIT_...
(TAG, "sendMSG:%s \n",MY_TOPIC_PUBLISH_COMPONENTS); //taskENTER_CRITICAL(&mmux); msg_id = esp_mqtt_client_publish(*(esp_mqtt_client_handle_t *)pClient, MY_TOPIC_COMPONENTS, MY_TOPIC_PUBLISH_COMPONENTS, 0, 1, 0); //taskEXIT_CRITICAL(&mmux); ESP_LOGI(TAG, "sent publish ...