42 lines
1017 B
C++
42 lines
1017 B
C++
#ifdef USE_RP2040
|
|
|
|
#include "core.h"
|
|
#include "esphome/core/defines.h"
|
|
#include "esphome/core/hal.h"
|
|
#ifdef USE_RP2040_CRASH_HANDLER
|
|
#include "crash_handler.h"
|
|
#endif
|
|
|
|
#include "hardware/watchdog.h"
|
|
|
|
// Empty rp2040 namespace block to satisfy ci-custom's lint_namespace check.
|
|
// HAL functions live in namespace esphome (root) — they are not part of the
|
|
// rp2040 component's API.
|
|
namespace esphome::rp2040 {} // namespace esphome::rp2040
|
|
|
|
namespace esphome {
|
|
|
|
// yield(), delay(), micros(), millis(), millis_64(), delayMicroseconds(),
|
|
// arch_feed_wdt(), arch_get_cpu_cycle_count() inlined in components/rp2040/hal.h.
|
|
void arch_restart() {
|
|
watchdog_reboot(0, 0, 10);
|
|
while (1) {
|
|
continue;
|
|
}
|
|
}
|
|
|
|
void arch_init() {
|
|
#ifdef USE_RP2040_CRASH_HANDLER
|
|
rp2040::crash_handler_read_and_clear();
|
|
#endif
|
|
#if USE_RP2040_WATCHDOG_TIMEOUT > 0
|
|
watchdog_enable(USE_RP2040_WATCHDOG_TIMEOUT, false);
|
|
#endif
|
|
}
|
|
|
|
uint32_t arch_get_cpu_freq_hz() { return RP2040::f_cpu(); }
|
|
|
|
} // namespace esphome
|
|
|
|
#endif // USE_RP2040
|