/** @defgroup wdt_defines Watchdog Defines
*
* @brief Defined Constants and Types for the SWM050 Watchdog
*
* @ingroup SWM050_defines
*
* LGPL License Terms @ref lgpl_license
*/
/*
* This file is part of the libopencm3 project.
*
* Copyright (C) 2019 Caleb Szalacinski
*
* This library is free software: you can redistribute it and/or modify
* it under the terms of the GNU Lesser General Public License as published by
* the Free Software Foundation, either version 3 of the License, or
* (at your option) any later version.
*
* This library is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU Lesser General Public License for more details.
*
* You should have received a copy of the GNU Lesser General Public License
* along with this library. If not, see .
*/
/**@{*/
#ifndef LIBOPENCM3_WDT_H
#define LIBOPENCM3_WDT_H
#include
#include
/* Watchdog mode definitions */
/** @defgroup wdt_modes Watchdog mode
@{*/
enum wdt_modes {
/** On timeout, reset the system */
WDT_MODE_RESET,
/** On timeout, generate an interrupt. If another timeout (time2) occurs without
the interrupt being cleared, reset the system. */
WDT_MODE_INT
};
/**@}*/
/** @defgroup wdt_registers Watchdog Registers
@{*/
#define WDT_CR MMIO32(WDT_BASE + 0x0)
#define WDT_TORR MMIO32(WDT_BASE + 0x04)
#define WDT_CCVR MMIO32(WDT_BASE + 0x08)
#define WDT_CRR MMIO32(WDT_BASE + 0x0C)
#define WDT_STAT MMIO32(WDT_BASE + 0x10)
#define WDT_EOI MMIO32(WDT_BASE + 0x14)
/**@}*/
BEGIN_DECLS
void wdt_setup(enum wdt_modes mode, uint8_t time1, uint8_t time2);
void wdt_enable(bool en);
void wdt_mode(enum wdt_modes mode);
void wdt_reset(void);
bool wdt_int_status(void);
void wdt_clear_int(void);
void wdt_clock_enable(bool en);
uint32_t wdt_get_value(void);
void wdt_set_time(uint8_t time1, uint8_t time2);
END_DECLS
#endif
/**@}*/