【发布时间】:2022-01-21 21:12:18
【问题描述】:
我在 ArduinoIDE 中使用 ESP32 和 TFP625A 指纹传感器工作。传感器连接到 UART2 并由 FPM 库使用 HardwareSerial 提供服务。在以编程方式重新启动之前一切正常 - ESP.restart()。执行此命令后,微控制器重新启动并停留在传感器初始化位置。我在HardwareSerial源代码文件中插入了一些Serial.print(),看到HardwareSerial::begin()函数中,代码并没有超出这个地方
_uart = uartBegin(_uart_nr, baud ? baud : 9600, config, rxPin, txPin, 256, invert);
据我了解,重新启动微控制器后,有关先前配置的 UART2 的信息仍保留在其寄存器中。在重新启动微控制器之前尝试将 UART 归零并不能纠正这种情况。如果我通过重置按钮让硬件重新启动微控制器,那么一切正常。
如何克服 ESP32 卡顿?
代码片段:
#include <HardwareSerial.h>
#include <FPM.h>
HardwareSerial mySerial(2);
FPM fpm(&mySerial);
...
void freeFPM()
{
fpm = 0;
mySerial.end();
mySerial = 0;
}
bool fpm_setup()
{
freeFPM();
mySerial = HardwareSerial(2);
finger = FPM(&mySerial);
mySerial.begin(57600);
fpm.begin(0);
}
void restartESP()
{
freeFPM();
ESP.restart();
}
【问题讨论】:
标签: serial-port esp32 uart fingerprint arduino-esp32