这次提交基于FreeRTOS能正常运行。

还存在微小问题,由于CO2传感器必须通过看门狗重启一次后才能正常,这个问题还没解决。(喂狗只在CO2函数内,保证能重启RP2040)
This commit is contained in:
2024-08-11 22:11:50 +08:00
parent 60542be965
commit f4bd30a4dc
10 changed files with 74 additions and 139 deletions

View File

@@ -49,7 +49,7 @@ void Led_Blinky(void *pvParameters)
// 处理接收到的数据
printf("%f\n", TEMPERATURE);
}
//_printTaskStackHighWaterMark("Led_Blinky");
_printTaskStackHighWaterMark("Led_Blinky");
}
}
@@ -61,7 +61,7 @@ void CPU(void *pvParameters)
adc_set_temp_sensor_enabled(true);
adc_select_input(4); // Input 4 is the onboard temperature sensor.
//_printTaskStackHighWaterMark("Read_Onboard_Temperature");
_printTaskStackHighWaterMark("CPU_");
while (1) {
const float conversionFactor = 3.3f / (1 << 12);
@@ -70,8 +70,13 @@ void CPU(void *pvParameters)
float tempC = 27.0f - (adc - 0.706f) / 0.001721f;
printf("CPU temperature %.02f°C %.02f°F\n", tempC, (tempC * 9 / 5 + 32));
char ONBOARD_TEMPERATURE_TEMP[BUFER] = { 0 };
sprintf(ONBOARD_TEMPERATURE_TEMP, "Onboard temperature %.02f°C %.02f°F\n", tempC, (tempC * 9 / 5 + 32));
_HC_12(ONBOARD_TEMPERATURE_TEMP);
//_printTaskStackHighWaterMark("Read_Onboard_Temperature");
_printTaskStackHighWaterMark("CPU_");
vTaskDelay(pdMS_TO_TICKS(3000)); // 非阻塞延时
}
@@ -89,7 +94,7 @@ int main(void)
printf("Clean boot\n");
}
watchdog_enable(8300, 1); // 8秒检测是否重新加载看门狗计数器. (不更新计数器则重启硬件, 最高8秒)
watchdog_start_tick(12);
//watchdog_start_tick(12);
// 创建队列
xQueue = xQueueCreate(10, sizeof(long));
@@ -104,7 +109,7 @@ int main(void)
TaskHandle_t CH4_xHandle = NULL;
TaskHandle_t CO_xHandle = NULL;
TaskHandle_t CO2_xHandle = NULL;
// 板载CPU温度
xReturned = xTaskCreate(CPU, "CPU task", 512, NULL, tskIDLE_PRIORITY, &CPU_xHandle);
@@ -125,22 +130,23 @@ int main(void)
}
// CH4
xReturned = xTaskCreate(CH4, "CH4 task", 1024, NULL, tskIDLE_PRIORITY, &CH4_xHandle);
xReturned = xTaskCreate(CH4, "CH4 task", 2048, NULL, tskIDLE_PRIORITY, &CH4_xHandle);
if (xReturned == errCOULD_NOT_ALLOCATE_REQUIRED_MEMORY) {
printf("CH4() Task Error!");
}
// CO
xReturned = xTaskCreate(CO, "CO task", 2048, NULL, tskIDLE_PRIORITY, &CO_xHandle);
if (xReturned == errCOULD_NOT_ALLOCATE_REQUIRED_MEMORY) {
printf("CO() Task Error!");
}
// CO2
xReturned = xTaskCreate(CO2, "CO2 task", 1024, NULL, tskIDLE_PRIORITY, &CO2_xHandle);
xReturned = xTaskCreate(CO2, "CO2 task", 2048, NULL, tskIDLE_PRIORITY, &CO2_xHandle);
if (xReturned == errCOULD_NOT_ALLOCATE_REQUIRED_MEMORY) {
printf("CO2() Task Error!");
}
vTaskStartScheduler();
while (1) {};