12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970 |
- /*
- * Copyright (c) 2021 HPMicro
- *
- * SPDX-License-Identifier: BSD-3-Clause
- *
- */
- #ifndef HPM_MCHTMR_DRV_H
- #define HPM_MCHTMR_DRV_H
- #include "hpm_common.h"
- #include "hpm_mchtmr_regs.h"
- /**
- * @brief MCHTMR driver APIs
- * @defgroup mchtmr_interface MCHTMR driver APIs
- * @ingroup io_interfaces
- * @{
- */
- #ifdef __cplusplus
- extern "C" {
- #endif
- /**
- * @brief mchtmr get counter value
- *
- * @param [in] ptr MCHTMR base address
- */
- static inline uint64_t mchtmr_get_count(MCHTMR_Type *ptr)
- {
- return (ptr->MTIME & MCHTMR_MTIME_MTIME_MASK) >> MCHTMR_MTIME_MTIME_SHIFT;
- }
- /**
- * @brief mchtmr set comparator value
- *
- * @param [in] ptr MCHTMR base address
- * @param [in] target comparator target value
- */
- static inline void mchtmr_set_compare_value(MCHTMR_Type *ptr, uint64_t target)
- {
- ptr->MTIMECMP = MCHTMR_MTIMECMP_MTIMECMP_SET(target);
- }
- /**
- * @brief mchtmr set delay value
- *
- * @param [in] ptr MCHTMR base address
- * @param [in] delay delay cycles
- */
- static inline void mchtmr_delay(MCHTMR_Type *ptr, uint64_t delay)
- {
- mchtmr_set_compare_value(ptr, mchtmr_get_count(ptr) + delay);
- }
- /**
- * @brief initialize mchtmr counter
- *
- * @param [in] ptr MCHTMR base address
- * @param [in] v value to be set
- */
- void mchtmr_init_counter(MCHTMR_Type *ptr, uint64_t v);
- /**
- * @}
- */
- #ifdef __cplusplus
- }
- #endif
- #endif /* HPM_MCHTMR_DRV_H */
|