这次提交基于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

@@ -1,5 +1,6 @@
#include "ZC13.hpp"
#include "common.hpp"
#include "HC-12.hpp"
int ZC13_INIT()
{
@@ -33,7 +34,7 @@ int ZC13_PIO_UART_RX_DATA(PIO pio, uint sm, uint8_t * DATA, int DATA_LEN)
if (uart_rx_program_available(pio, sm)) {
c = uart_rx_program_getc(pio, sm);
DATA[received_count++] = c;
//printf("0x%X ", c);
printf("0x%X ", c);
if (c == '\n') {
// 接收到换行符,停止接收数据
break;
@@ -66,8 +67,8 @@ int ZC13(const char *model)
// 接收指令
CH4_DATA_LEN = ZC13_PIO_UART_RX_DATA(ZC13_PIO, ZC13_PIO_SM_RX, CH4_DATA, 9);
//printf("\n");
// printf("%d\n", CH4_DATA_LEN);
printf("\n");
printf("%d\n", CH4_DATA_LEN);
uint8_t highByte = CH4_DATA[2]; // 假设这是气体浓度高位字节
uint8_t lowByte = CH4_DATA[3]; // 假设这是气体浓度高位字节
@@ -104,13 +105,19 @@ int ZC13(const char *model)
void CH4(void *pvParameters)
{
ZC13_INIT();
_printTaskStackHighWaterMark("ZC13");
_printTaskStackHighWaterMark("CH4");
while (1) {
ZC13("ZC05");
//_printTaskStackHighWaterMark("ZC13");
watchdog_update(); // 喂狗
while (1)
{
char CH4_DATA[BUFER] = { 0 };
sprintf(CH4_DATA, "CH4 Concentration: %d\n", ZC13("ZC05"));
_HC_12(CH4_DATA);
//_printTaskStackHighWaterMark("CH4");
//watchdog_update(); // 喂狗
vTaskDelay(pdMS_TO_TICKS(3000)); // 非阻塞延时
}
return ;
}