Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/jsf-2/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Freertos ESP32任务vTaskDelay:预期一个循环执行一次,但得到多个_Freertos_Esp32 - Fatal编程技术网

Freertos ESP32任务vTaskDelay:预期一个循环执行一次,但得到多个

Freertos ESP32任务vTaskDelay:预期一个循环执行一次,但得到多个,freertos,esp32,Freertos,Esp32,我试图在ESP32上处理任务 loop(){ xTaskCreatePinnedToCore(SendCanBusMessageToCharger, "SendCanBusMessageToCharger", 1000, NULL, 3, NULL, 0); } void SendCanBusMessageToCharger(void *pvParameters) { CAN_frame_t tx_frame; tx_frame.FIR.B.FF = CAN_fram

我试图在ESP32上处理任务

loop(){
xTaskCreatePinnedToCore(SendCanBusMessageToCharger, "SendCanBusMessageToCharger", 1000, NULL, 3, NULL, 0);

  }

  void SendCanBusMessageToCharger(void *pvParameters) {
    CAN_frame_t tx_frame;
    tx_frame.FIR.B.FF = CAN_frame_ext;
    tx_frame.MsgID = 0x1806E5F4;
    tx_frame.FIR.B.DLC = 8;
    tx_frame.data.u8[4] = 0x00;
    tx_frame.data.u8[5] = 0x00;
    tx_frame.data.u8[6] = 0x00;
    tx_frame.data.u8[7] = 0x00;

    while(true) {
      tx_frame.data.u8[0] = highByte(outputvoltage);
      tx_frame.data.u8[1] = lowByte(outputvoltage);
      tx_frame.data.u8[2] = highByte(outputcurrent);
      tx_frame.data.u8[3] = lowByte(outputcurrent);
      ESP32Can.CANWriteFrame(&tx_frame);
      Serial.println("CAN message sent to charger");
      vTaskDelay(1000);
    }
我希望在串行端口上每秒收到一条“CAN消息发送至充电器”消息,但我得到:

12:11:15.866 -> CAN message sent to charger
12:11:15.866 -> CAN message sent to charger
12:11:15.866 -> CAN message sent to charger
12:11:15.866 -> CAN message sent to charger
12:11:15.866 -> CAN message sent to charger
12:11:15.866 -> CAN message sent to charger
12:11:15.866 -> CAN message sent to charger
12:11:15.866 -> CAN message sent to charger
12:11:15.899 -> CAN message sent to charger
12:11:15.899 -> CAN message sent to charger
12:11:15.899 -> CAN message sent to charger
12:11:15.899 -> CAN message sent to charger
12:11:15.899 -> CAN message sent to charger
12:11:15.899 -> CAN message sent to charger
12:11:15.899 -> CAN message sent to charger
12:11:15.899 -> CAN message sent to charger
12:11:15.899 -> CAN message sent to charger
12:11:15.899 -> CAN message sent to charger
12:11:15.899 -> CAN message sent to charger

大约每秒8条信息。还尝试了vTaskDelay(pdMS_到_TICKS(1000)),但结果相同。我真的不知道我做错了什么。。。使用最新的Arduino IDE和ESP板定义构建。谢谢

是的,那太愚蠢了。。。。我将任务创建放在循环中,而不是设置中,并且盯着代码看了很长时间,我再也看不到它了。

您的问题是,vTaskDelay等待的是滴答声,而不是毫秒,并且您没有正确地转换它。 解决方案: vTaskDelay(1000/端口周期)