Fix infinite loop on STM32F103

When trying to read temperature from a DHT11 when the sensor was
disconnected, the program would encounter an infinite loop in
DHT::expectPulse, because count would keep overflowing.
This commit is contained in:
Ondřej Sluka 2022-06-25 19:46:56 +02:00
parent ce31485de7
commit 2470b8a3a1
1 changed files with 3 additions and 1 deletions

View File

@ -360,7 +360,9 @@ bool DHT::read(bool force) {
// in the very latest IDE versions):
// https://github.com/arduino/Arduino/blob/master/hardware/arduino/avr/cores/arduino/wiring_pulse.c
uint32_t DHT::expectPulse(bool level) {
#if (F_CPU > 16000000L)
// F_CPU is not be known at compile time on platforms such as STM32F103.
// The preprocessor seems to evaluate it to zero in that case.
#if (F_CPU > 16000000L) || (F_CPU == 0L)
uint32_t count = 0;
#else
uint16_t count = 0; // To work fast enough on slower AVR boards