123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156 |
- /*
- * Copyright (c) 2021-2023 HPMicro
- *
- * SPDX-License-Identifier: BSD-3-Clause
- *
- */
- #ifndef HPM_WDG_H
- #define HPM_WDG_H
- typedef struct {
- __R uint8_t RESERVED0[16]; /* 0x0 - 0xF: Reserved */
- __RW uint32_t CTRL; /* 0x10: Control Register */
- __W uint32_t RESTART; /* 0x14: Restart Register */
- __W uint32_t WREN; /* 0x18: Write Protection Register */
- __W uint32_t ST; /* 0x1C: Status Register */
- } WDG_Type;
- /* Bitfield definition for register: CTRL */
- /*
- * RSTTIME (RW)
- *
- * The time interval of the reset stage:
- * 0: Clock period x 2^7
- * 1: Clock period x 2^8
- * 2: Clock period x 2^9
- * 3: Clock period x 2^10
- * 4: Clock period x 2^11
- * 5: Clock period x 2^12
- * 6: Clock period x 2^13
- * 7: Clock period x 2^14
- */
- #define WDG_CTRL_RSTTIME_MASK (0x700U)
- #define WDG_CTRL_RSTTIME_SHIFT (8U)
- #define WDG_CTRL_RSTTIME_SET(x) (((uint32_t)(x) << WDG_CTRL_RSTTIME_SHIFT) & WDG_CTRL_RSTTIME_MASK)
- #define WDG_CTRL_RSTTIME_GET(x) (((uint32_t)(x) & WDG_CTRL_RSTTIME_MASK) >> WDG_CTRL_RSTTIME_SHIFT)
- /*
- * INTTIME (RW)
- *
- * The timer interval of the interrupt stage:
- * 0: Clock period x 2^6
- * 1: Clock period x 2^8
- * 2: Clock period x 2^10
- * 3: Clock period x 2^11
- * 4: Clock period x 2^12
- * 5: Clock period x 2^13
- * 6: Clock period x 2^14
- * 7: Clock period x 2^15
- * 8: Clock period x 2^17
- * 9: Clock period x 2^19
- * 10: Clock period x 2^21
- * 11: Clock period x 2^23
- * 12: Clock period x 2^25
- * 13: Clock period x 2^27
- * 14: Clock period x 2^29
- * 15: Clock period x 2^31
- */
- #define WDG_CTRL_INTTIME_MASK (0xF0U)
- #define WDG_CTRL_INTTIME_SHIFT (4U)
- #define WDG_CTRL_INTTIME_SET(x) (((uint32_t)(x) << WDG_CTRL_INTTIME_SHIFT) & WDG_CTRL_INTTIME_MASK)
- #define WDG_CTRL_INTTIME_GET(x) (((uint32_t)(x) & WDG_CTRL_INTTIME_MASK) >> WDG_CTRL_INTTIME_SHIFT)
- /*
- * RSTEN (RW)
- *
- * Enable or disable the watchdog reset
- * 0: Disable
- * 1: Enable
- */
- #define WDG_CTRL_RSTEN_MASK (0x8U)
- #define WDG_CTRL_RSTEN_SHIFT (3U)
- #define WDG_CTRL_RSTEN_SET(x) (((uint32_t)(x) << WDG_CTRL_RSTEN_SHIFT) & WDG_CTRL_RSTEN_MASK)
- #define WDG_CTRL_RSTEN_GET(x) (((uint32_t)(x) & WDG_CTRL_RSTEN_MASK) >> WDG_CTRL_RSTEN_SHIFT)
- /*
- * INTEN (RW)
- *
- * Enable or disable the watchdog interrupt
- * 0: Disable
- * 1: Enable
- */
- #define WDG_CTRL_INTEN_MASK (0x4U)
- #define WDG_CTRL_INTEN_SHIFT (2U)
- #define WDG_CTRL_INTEN_SET(x) (((uint32_t)(x) << WDG_CTRL_INTEN_SHIFT) & WDG_CTRL_INTEN_MASK)
- #define WDG_CTRL_INTEN_GET(x) (((uint32_t)(x) & WDG_CTRL_INTEN_MASK) >> WDG_CTRL_INTEN_SHIFT)
- /*
- * CLKSEL (RW)
- *
- * Clock source of timer:
- * 0: EXTCLK
- * 1: PCLK
- */
- #define WDG_CTRL_CLKSEL_MASK (0x2U)
- #define WDG_CTRL_CLKSEL_SHIFT (1U)
- #define WDG_CTRL_CLKSEL_SET(x) (((uint32_t)(x) << WDG_CTRL_CLKSEL_SHIFT) & WDG_CTRL_CLKSEL_MASK)
- #define WDG_CTRL_CLKSEL_GET(x) (((uint32_t)(x) & WDG_CTRL_CLKSEL_MASK) >> WDG_CTRL_CLKSEL_SHIFT)
- /*
- * EN (RW)
- *
- * Enable or disable the watchdog timer
- * 0: Disable
- * 1: Enable
- */
- #define WDG_CTRL_EN_MASK (0x1U)
- #define WDG_CTRL_EN_SHIFT (0U)
- #define WDG_CTRL_EN_SET(x) (((uint32_t)(x) << WDG_CTRL_EN_SHIFT) & WDG_CTRL_EN_MASK)
- #define WDG_CTRL_EN_GET(x) (((uint32_t)(x) & WDG_CTRL_EN_MASK) >> WDG_CTRL_EN_SHIFT)
- /* Bitfield definition for register: RESTART */
- /*
- * RESTART (WO)
- *
- * Write the magic number
- * ATCWDT200_RESTART_NUM to restart the
- * watchdog timer.
- */
- #define WDG_RESTART_RESTART_MASK (0xFFFFU)
- #define WDG_RESTART_RESTART_SHIFT (0U)
- #define WDG_RESTART_RESTART_SET(x) (((uint32_t)(x) << WDG_RESTART_RESTART_SHIFT) & WDG_RESTART_RESTART_MASK)
- #define WDG_RESTART_RESTART_GET(x) (((uint32_t)(x) & WDG_RESTART_RESTART_MASK) >> WDG_RESTART_RESTART_SHIFT)
- /* Bitfield definition for register: WREN */
- /*
- * WEN (WO)
- *
- * Write the magic code to disable the write
- * protection of the Control Register and the
- * Restart Register.
- */
- #define WDG_WREN_WEN_MASK (0xFFFFU)
- #define WDG_WREN_WEN_SHIFT (0U)
- #define WDG_WREN_WEN_SET(x) (((uint32_t)(x) << WDG_WREN_WEN_SHIFT) & WDG_WREN_WEN_MASK)
- #define WDG_WREN_WEN_GET(x) (((uint32_t)(x) & WDG_WREN_WEN_MASK) >> WDG_WREN_WEN_SHIFT)
- /* Bitfield definition for register: ST */
- /*
- * INTEXPIRED (W1C)
- *
- * The status of the watchdog interrupt timer
- * 0: timer is not expired yet
- * 1: timer is expired
- */
- #define WDG_ST_INTEXPIRED_MASK (0x1U)
- #define WDG_ST_INTEXPIRED_SHIFT (0U)
- #define WDG_ST_INTEXPIRED_SET(x) (((uint32_t)(x) << WDG_ST_INTEXPIRED_SHIFT) & WDG_ST_INTEXPIRED_MASK)
- #define WDG_ST_INTEXPIRED_GET(x) (((uint32_t)(x) & WDG_ST_INTEXPIRED_MASK) >> WDG_ST_INTEXPIRED_SHIFT)
- #endif /* HPM_WDG_H */
|