The official Mbed 2 C/C++ SDK provides the software platform and libraries to build your applications.

Dependents:   hello SerialTestv11 SerialTestv12 Sierpinski ... more

mbed 2

This is the mbed 2 library. If you'd like to learn about Mbed OS please see the mbed-os docs.

Committer:
AnnaBridge
Date:
Wed Feb 20 20:53:29 2019 +0000
Revision:
172:65be27845400
mbed library release version 165

Who changed what in which revision?

UserRevisionLine numberNew contents of line
AnnaBridge 172:65be27845400 1 /*
AnnaBridge 172:65be27845400 2 * Copyright (c) 2016-2018 Arm Limited
AnnaBridge 172:65be27845400 3 *
AnnaBridge 172:65be27845400 4 * Licensed under the Apache License, Version 2.0 (the "License");
AnnaBridge 172:65be27845400 5 * you may not use this file except in compliance with the License.
AnnaBridge 172:65be27845400 6 * You may obtain a copy of the License at
AnnaBridge 172:65be27845400 7 *
AnnaBridge 172:65be27845400 8 * http://www.apache.org/licenses/LICENSE-2.0
AnnaBridge 172:65be27845400 9 *
AnnaBridge 172:65be27845400 10 * Unless required by applicable law or agreed to in writing, software
AnnaBridge 172:65be27845400 11 * distributed under the License is distributed on an "AS IS" BASIS,
AnnaBridge 172:65be27845400 12 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
AnnaBridge 172:65be27845400 13 * See the License for the specific language governing permissions and
AnnaBridge 172:65be27845400 14 * limitations under the License.
AnnaBridge 172:65be27845400 15 */
AnnaBridge 172:65be27845400 16
AnnaBridge 172:65be27845400 17 /**
AnnaBridge 172:65be27845400 18 * \file dualtimer_cmsdk_drv.h
AnnaBridge 172:65be27845400 19 * \brief Generic driver for ARM CMSDK Dualtimers.
AnnaBridge 172:65be27845400 20 */
AnnaBridge 172:65be27845400 21
AnnaBridge 172:65be27845400 22 #ifndef __DUALTIMER_CMSDK_DRV_H__
AnnaBridge 172:65be27845400 23 #define __DUALTIMER_CMSDK_DRV_H__
AnnaBridge 172:65be27845400 24
AnnaBridge 172:65be27845400 25 #include <stdint.h>
AnnaBridge 172:65be27845400 26 #include <stdbool.h>
AnnaBridge 172:65be27845400 27
AnnaBridge 172:65be27845400 28 #ifdef __cplusplus
AnnaBridge 172:65be27845400 29 extern "C" {
AnnaBridge 172:65be27845400 30 #endif
AnnaBridge 172:65be27845400 31
AnnaBridge 172:65be27845400 32 /* Dualtimer default reload value */
AnnaBridge 172:65be27845400 33 #define DUALTIMER_CMSDK_DEF_32BIT_RELOAD UINT32_MAX
AnnaBridge 172:65be27845400 34 #define DUALTIMER_CMSDK_DEF_16BIT_RELOAD UINT16_MAX
AnnaBridge 172:65be27845400 35
AnnaBridge 172:65be27845400 36 /* Dualtimer device configuration structure */
AnnaBridge 172:65be27845400 37 struct dualtimer_cmsdk_dev_cfg_t {
AnnaBridge 172:65be27845400 38 const uint32_t base; /*!< Dualtimer base address */
AnnaBridge 172:65be27845400 39 };
AnnaBridge 172:65be27845400 40
AnnaBridge 172:65be27845400 41 /* Dualtimer device data structure */
AnnaBridge 172:65be27845400 42 struct dualtimer_cmsdk_dev_data_t {
AnnaBridge 172:65be27845400 43 uint32_t is_initialized; /*!< Indicates if the timer is initialized */
AnnaBridge 172:65be27845400 44 };
AnnaBridge 172:65be27845400 45
AnnaBridge 172:65be27845400 46 /* Dualtimer device structure */
AnnaBridge 172:65be27845400 47 struct dualtimer_cmsdk_dev_t {
AnnaBridge 172:65be27845400 48 const struct dualtimer_cmsdk_dev_cfg_t* const cfg; /*!< Dualtimer
AnnaBridge 172:65be27845400 49 configuration */
AnnaBridge 172:65be27845400 50 struct dualtimer_cmsdk_dev_data_t* const data; /*!< Dualtimer data */
AnnaBridge 172:65be27845400 51 };
AnnaBridge 172:65be27845400 52
AnnaBridge 172:65be27845400 53 /* Dualtimer enumeration types */
AnnaBridge 172:65be27845400 54 enum dualtimer_cmsdk_error_t {
AnnaBridge 172:65be27845400 55 DUALTIMER_CMSDK_ERR_NONE = 0u, /*!< No error */
AnnaBridge 172:65be27845400 56 DUALTIMER_CMSDK_ERR_NOT_INIT, /*!< Error dualtimer is not initialized */
AnnaBridge 172:65be27845400 57 DUALTIMER_CMSDK_ERR_NOT_ENABLE, /*!< Error timer is not enabled */
AnnaBridge 172:65be27845400 58 DUALTIMER_CMSDK_ERR_OVERFLOW
AnnaBridge 172:65be27845400 59 };
AnnaBridge 172:65be27845400 60
AnnaBridge 172:65be27845400 61 enum dualtimer_cmsdk_size_t {
AnnaBridge 172:65be27845400 62 DUALTIMER_CMSDK_SIZE_16BIT = 0u, /*!< Timer is set as 16 Bit */
AnnaBridge 172:65be27845400 63 DUALTIMER_CMSDK_SIZE_32BIT = 1u /*!< Timer is set as 32 Bit */
AnnaBridge 172:65be27845400 64 };
AnnaBridge 172:65be27845400 65
AnnaBridge 172:65be27845400 66 enum dualtimer_cmsdk_prescale_t {
AnnaBridge 172:65be27845400 67 DUALTIMER_CMSDK_CLOCK_DIV1 = 0u, /*!< Timer pre-scale is clock/1 */
AnnaBridge 172:65be27845400 68 DUALTIMER_CMSDK_CLOCK_DIV16 = 1u, /*!< Timer pre-scale is clock/16 */
AnnaBridge 172:65be27845400 69 DUALTIMER_CMSDK_CLOCK_DIV256 = 2u, /*!< Timer pre-scale is clock/256 */
AnnaBridge 172:65be27845400 70 };
AnnaBridge 172:65be27845400 71
AnnaBridge 172:65be27845400 72 enum dualtimer_cmsdk_oneshot_t {
AnnaBridge 172:65be27845400 73 DUALTIMER_CMSDK_WRAPPING = 0u, /*!< Timer wraps around */
AnnaBridge 172:65be27845400 74 DUALTIMER_CMSDK_ONE_SHOT = 1u /*!< Timer will halt when reaching 0 */
AnnaBridge 172:65be27845400 75 };
AnnaBridge 172:65be27845400 76
AnnaBridge 172:65be27845400 77 enum dualtimer_cmsdk_mode_t {
AnnaBridge 172:65be27845400 78 DUALTIMER_CMSDK_FREE_RUNNING = 0u, /*!< Timer counts from UINT32_MAX */
AnnaBridge 172:65be27845400 79 DUALTIMER_CMSDK_PERIODIC = 1u /*!< Timer counts from load value */
AnnaBridge 172:65be27845400 80 };
AnnaBridge 172:65be27845400 81
AnnaBridge 172:65be27845400 82 /**
AnnaBridge 172:65be27845400 83 * \brief Initializes a dualtimer hardware.
AnnaBridge 172:65be27845400 84 *
AnnaBridge 172:65be27845400 85 * \param[in] dev Dualtimer device structure \ref dualtimer_cmsdk_dev_t
AnnaBridge 172:65be27845400 86 *
AnnaBridge 172:65be27845400 87 * \note This function doesn't check if dev is NULL.
AnnaBridge 172:65be27845400 88 * \note Init should be called prior to any other process.
AnnaBridge 172:65be27845400 89 */
AnnaBridge 172:65be27845400 90 void dualtimer_cmsdk_init(const struct dualtimer_cmsdk_dev_t* dev);
AnnaBridge 172:65be27845400 91
AnnaBridge 172:65be27845400 92 /**
AnnaBridge 172:65be27845400 93 * \brief Frees up a dualtimer hardware, so it could be reinitalized.
AnnaBridge 172:65be27845400 94 *
AnnaBridge 172:65be27845400 95 * \param[in] dev Dualtimer device structure \ref dualtimer_cmsdk_dev_t
AnnaBridge 172:65be27845400 96 *
AnnaBridge 172:65be27845400 97 * \note This function doesn't check if dev is NULL.
AnnaBridge 172:65be27845400 98 * \note Init should be called prior to any other process.
AnnaBridge 172:65be27845400 99 */
AnnaBridge 172:65be27845400 100 void dualtimer_cmsdk_free(const struct dualtimer_cmsdk_dev_t* dev);
AnnaBridge 172:65be27845400 101
AnnaBridge 172:65be27845400 102 /**
AnnaBridge 172:65be27845400 103 * \brief Enables single timer 1 included in dualtimer hardware.
AnnaBridge 172:65be27845400 104 *
AnnaBridge 172:65be27845400 105 * \param[in] dev Dualtimer device structure \ref dualtimer_cmsdk_dev_t
AnnaBridge 172:65be27845400 106 *
AnnaBridge 172:65be27845400 107 * \note This function doesn't check if dev is NULL.
AnnaBridge 172:65be27845400 108 * \note This function doesn't check if dualtimer has been initialized.
AnnaBridge 172:65be27845400 109 */
AnnaBridge 172:65be27845400 110 void dualtimer_cmsdk_enable_timer1(const struct dualtimer_cmsdk_dev_t* dev);
AnnaBridge 172:65be27845400 111
AnnaBridge 172:65be27845400 112 /**
AnnaBridge 172:65be27845400 113 * \brief Enables single timer 2 included in dualtimer hardware.
AnnaBridge 172:65be27845400 114 *
AnnaBridge 172:65be27845400 115 * \param[in] dev Dualtimer device structure \ref dualtimer_cmsdk_dev_t
AnnaBridge 172:65be27845400 116 *
AnnaBridge 172:65be27845400 117 * \note This function doesn't check if dev is NULL.
AnnaBridge 172:65be27845400 118 * \note This function doesn't check if dualtimer has been initialized.
AnnaBridge 172:65be27845400 119 */
AnnaBridge 172:65be27845400 120 void dualtimer_cmsdk_enable_timer2(const struct dualtimer_cmsdk_dev_t* dev);
AnnaBridge 172:65be27845400 121
AnnaBridge 172:65be27845400 122 /**
AnnaBridge 172:65be27845400 123 * \brief Enables both timer 1&2 included in dualtimer hardware.
AnnaBridge 172:65be27845400 124 *
AnnaBridge 172:65be27845400 125 * \param[in] dev Dualtimer device structure \ref dualtimer_cmsdk_dev_t
AnnaBridge 172:65be27845400 126 *
AnnaBridge 172:65be27845400 127 * \note This function doesn't check if dev is NULL.
AnnaBridge 172:65be27845400 128 * \note This function doesn't check if dualtimer has been initialized.
AnnaBridge 172:65be27845400 129 */
AnnaBridge 172:65be27845400 130 void dualtimer_cmsdk_enable_both_timers(
AnnaBridge 172:65be27845400 131 const struct dualtimer_cmsdk_dev_t* dev);
AnnaBridge 172:65be27845400 132
AnnaBridge 172:65be27845400 133
AnnaBridge 172:65be27845400 134 /**
AnnaBridge 172:65be27845400 135 * \brief Disables timer 1 included in dualtimer hardware.
AnnaBridge 172:65be27845400 136 *
AnnaBridge 172:65be27845400 137 * \param[in] dev Dualtimer device structure \ref dualtimer_cmsdk_dev_t
AnnaBridge 172:65be27845400 138 *
AnnaBridge 172:65be27845400 139 * \note This function doesn't check if dev is NULL.
AnnaBridge 172:65be27845400 140 * \note This function doesn't check if dualtimer has been initialized.
AnnaBridge 172:65be27845400 141 */
AnnaBridge 172:65be27845400 142 void dualtimer_cmsdk_disable_timer1(
AnnaBridge 172:65be27845400 143 const struct dualtimer_cmsdk_dev_t* dev);
AnnaBridge 172:65be27845400 144
AnnaBridge 172:65be27845400 145 /**
AnnaBridge 172:65be27845400 146 * \brief Disables timer 2 included in dualtimer hardware.
AnnaBridge 172:65be27845400 147 *
AnnaBridge 172:65be27845400 148 * \param[in] dev Dualtimer device structure \ref dualtimer_cmsdk_dev_t
AnnaBridge 172:65be27845400 149 *
AnnaBridge 172:65be27845400 150 * \note This function doesn't check if dev is NULL.
AnnaBridge 172:65be27845400 151 * \note This function doesn't check if dualtimer has been initialized.
AnnaBridge 172:65be27845400 152 */
AnnaBridge 172:65be27845400 153 void dualtimer_cmsdk_disable_timer2(const struct dualtimer_cmsdk_dev_t* dev);
AnnaBridge 172:65be27845400 154
AnnaBridge 172:65be27845400 155 /**
AnnaBridge 172:65be27845400 156 * \brief Disables both timers 1&2 included in dualtimer hardware.
AnnaBridge 172:65be27845400 157 *
AnnaBridge 172:65be27845400 158 * \param[in] dev Dualtimer device structure \ref dualtimer_cmsdk_dev_t
AnnaBridge 172:65be27845400 159 *
AnnaBridge 172:65be27845400 160 * \note This function doesn't check if dev is NULL.
AnnaBridge 172:65be27845400 161 * \note This function doesn't check if dualtimer has been initialized.
AnnaBridge 172:65be27845400 162 */
AnnaBridge 172:65be27845400 163 void dualtimer_cmsdk_disable_both_timers(
AnnaBridge 172:65be27845400 164 const struct dualtimer_cmsdk_dev_t* dev);
AnnaBridge 172:65be27845400 165
AnnaBridge 172:65be27845400 166 /**
AnnaBridge 172:65be27845400 167 * \brief Sets one shot count for timer 1 included in dualtimer hardware.
AnnaBridge 172:65be27845400 168 *
AnnaBridge 172:65be27845400 169 * When timer reaches zero if one-shot is set it will wait there until user
AnnaBridge 172:65be27845400 170 * does one of the following:
AnnaBridge 172:65be27845400 171 * - Write a new value to load register.
AnnaBridge 172:65be27845400 172 * - Clear one shot setting the timers to WRAPPING mode.
AnnaBridge 172:65be27845400 173 *
AnnaBridge 172:65be27845400 174 * \param[in] dev Dualtimer device structure \ref dualtimer_cmsdk_dev_t
AnnaBridge 172:65be27845400 175 * \param[in] mode enum dualtimer_cmsdk_oneshot_t WRAPPING/ONE_SHOT
AnnaBridge 172:65be27845400 176 *
AnnaBridge 172:65be27845400 177 * \note This function doesn't check if dev is NULL.
AnnaBridge 172:65be27845400 178 * \note This function doesn't check if dualtimer has been initialized.
AnnaBridge 172:65be27845400 179 */
AnnaBridge 172:65be27845400 180 void dualtimer_cmsdk_set_oneshot_count_timer1(
AnnaBridge 172:65be27845400 181 const struct dualtimer_cmsdk_dev_t* dev,
AnnaBridge 172:65be27845400 182 enum dualtimer_cmsdk_oneshot_t mode);
AnnaBridge 172:65be27845400 183
AnnaBridge 172:65be27845400 184 /**
AnnaBridge 172:65be27845400 185 * \brief Sets one shot count for timer 2 included in dualtimer hardware.
AnnaBridge 172:65be27845400 186 *
AnnaBridge 172:65be27845400 187 * When timer reaches zero if one-shot is set it will wait there until user
AnnaBridge 172:65be27845400 188 * does one of the following:
AnnaBridge 172:65be27845400 189 * - Write a new value to load register.
AnnaBridge 172:65be27845400 190 * - Clear one shot setting the timers to WRAPPING mode.
AnnaBridge 172:65be27845400 191 *
AnnaBridge 172:65be27845400 192 * \param[in] dev Dualtimer device structure \ref dualtimer_cmsdk_dev_t
AnnaBridge 172:65be27845400 193 * \param[in] mode enum dualtimer_cmsdk_oneshot_t WRAPING/ONE_SHOT
AnnaBridge 172:65be27845400 194 *
AnnaBridge 172:65be27845400 195 * \note This function doesn't check if dev is NULL.
AnnaBridge 172:65be27845400 196 * \note This function doesn't check if dualtimer has been initialized.
AnnaBridge 172:65be27845400 197 */
AnnaBridge 172:65be27845400 198 void dualtimer_cmsdk_set_oneshot_count_timer2(
AnnaBridge 172:65be27845400 199 const struct dualtimer_cmsdk_dev_t* dev,
AnnaBridge 172:65be27845400 200 enum dualtimer_cmsdk_oneshot_t mode);
AnnaBridge 172:65be27845400 201
AnnaBridge 172:65be27845400 202 /**
AnnaBridge 172:65be27845400 203 * \brief Sets one shot count for timers 1&2 included in dualtimer hardware.
AnnaBridge 172:65be27845400 204 *
AnnaBridge 172:65be27845400 205 * When timer reaches zero if one-shot is set it will wait there until user
AnnaBridge 172:65be27845400 206 * does one of the following:
AnnaBridge 172:65be27845400 207 * - Write a new value to load register.
AnnaBridge 172:65be27845400 208 * - Clear one shot setting the timers to WRAPPING mode.
AnnaBridge 172:65be27845400 209 *
AnnaBridge 172:65be27845400 210 * \param[in] dev Dualtimer device structure \ref dualtimer_cmsdk_dev_t
AnnaBridge 172:65be27845400 211 * \param[in] mode enum dualtimer_cmsdk_oneshot_t WRAPING/ONE_SHOT
AnnaBridge 172:65be27845400 212 *
AnnaBridge 172:65be27845400 213 * \note This function doesn't check if dev is NULL.
AnnaBridge 172:65be27845400 214 * \note This function doesn't check if dualtimer has been initialized.
AnnaBridge 172:65be27845400 215 */
AnnaBridge 172:65be27845400 216 void dualtimer_cmsdk_set_oneshot_count_both_timers(
AnnaBridge 172:65be27845400 217 const struct dualtimer_cmsdk_dev_t* dev,
AnnaBridge 172:65be27845400 218 enum dualtimer_cmsdk_oneshot_t mode);
AnnaBridge 172:65be27845400 219
AnnaBridge 172:65be27845400 220 /**
AnnaBridge 172:65be27845400 221 * \brief Sets the size of timer 1 included in dualtimer hardware.
AnnaBridge 172:65be27845400 222 *
AnnaBridge 172:65be27845400 223 *
AnnaBridge 172:65be27845400 224 * \param[in] dev Dualtimer device structure \ref dualtimer_cmsdk_dev_t
AnnaBridge 172:65be27845400 225 * \param[in] bit_size enum dualtimer_cmsdk_oneshot_t SIZE_16BIT/SIZE_32BIT
AnnaBridge 172:65be27845400 226 *
AnnaBridge 172:65be27845400 227 * \note This function doesn't check if dev is NULL.
AnnaBridge 172:65be27845400 228 * \note This function doesn't check if dualtimer has been initialized.
AnnaBridge 172:65be27845400 229 */
AnnaBridge 172:65be27845400 230 void dualtimer_cmsdk_set_size_timer1(
AnnaBridge 172:65be27845400 231 const struct dualtimer_cmsdk_dev_t* dev,
AnnaBridge 172:65be27845400 232 enum dualtimer_cmsdk_size_t bit_size);
AnnaBridge 172:65be27845400 233
AnnaBridge 172:65be27845400 234 /**
AnnaBridge 172:65be27845400 235 * \brief Sets the size of timer 2 included in dualtimer hardware.
AnnaBridge 172:65be27845400 236 *
AnnaBridge 172:65be27845400 237 *
AnnaBridge 172:65be27845400 238 * \param[in] dev Dualtimer device structure \ref dualtimer_cmsdk_dev_t
AnnaBridge 172:65be27845400 239 * \param[in] bit_size enum dualtimer_cmsdk_oneshot_t SIZE_16BIT/SIZE_32BIT
AnnaBridge 172:65be27845400 240 *
AnnaBridge 172:65be27845400 241 * \note This function doesn't check if dev is NULL.
AnnaBridge 172:65be27845400 242 * \note This function doesn't check if dualtimer has been initialized.
AnnaBridge 172:65be27845400 243 */
AnnaBridge 172:65be27845400 244 void dualtimer_cmsdk_set_size_timer2(
AnnaBridge 172:65be27845400 245 const struct dualtimer_cmsdk_dev_t* dev,
AnnaBridge 172:65be27845400 246 enum dualtimer_cmsdk_size_t bit_size);
AnnaBridge 172:65be27845400 247
AnnaBridge 172:65be27845400 248 /**
AnnaBridge 172:65be27845400 249 * \brief Sets the size of timers 1&2 included in dualtimer hardware.
AnnaBridge 172:65be27845400 250 *
AnnaBridge 172:65be27845400 251 *
AnnaBridge 172:65be27845400 252 * \param[in] dev Dualtimer device structure \ref dualtimer_cmsdk_dev_t
AnnaBridge 172:65be27845400 253 * \param[in] bit_size enum dualtimer_cmsdk_oneshot_t SIZE_16BIT/SIZE_32BIT
AnnaBridge 172:65be27845400 254 *
AnnaBridge 172:65be27845400 255 * \note This function doesn't check if dev is NULL.
AnnaBridge 172:65be27845400 256 * \note This function doesn't check if dualtimer has been initialized.
AnnaBridge 172:65be27845400 257 */
AnnaBridge 172:65be27845400 258 void dualtimer_cmsdk_set_size_both_timers(
AnnaBridge 172:65be27845400 259 const struct dualtimer_cmsdk_dev_t* dev,
AnnaBridge 172:65be27845400 260 enum dualtimer_cmsdk_size_t bit_size);
AnnaBridge 172:65be27845400 261
AnnaBridge 172:65be27845400 262 /**
AnnaBridge 172:65be27845400 263 * \brief Gets the size of timer 1 included in dualtimer hardware.
AnnaBridge 172:65be27845400 264 *
AnnaBridge 172:65be27845400 265 * \param[in] dev Dualtimer device structure \ref dualtimer_cmsdk_dev_t
AnnaBridge 172:65be27845400 266 *
AnnaBridge 172:65be27845400 267 * \return enum dualtimer_cmsdk_oneshot_t SIZE_16BIT/SIZE_32BIT
AnnaBridge 172:65be27845400 268 *
AnnaBridge 172:65be27845400 269 * \note This function doesn't check if dev is NULL.
AnnaBridge 172:65be27845400 270 * \note This function doesn't check if dualtimer has been initialized.
AnnaBridge 172:65be27845400 271 */
AnnaBridge 172:65be27845400 272 enum dualtimer_cmsdk_size_t dualtimer_cmsdk_get_size_timer1(
AnnaBridge 172:65be27845400 273 const struct dualtimer_cmsdk_dev_t* dev);
AnnaBridge 172:65be27845400 274
AnnaBridge 172:65be27845400 275 /**
AnnaBridge 172:65be27845400 276 * \brief Gets the size of timer 2 included in dualtimer hardware.
AnnaBridge 172:65be27845400 277 *
AnnaBridge 172:65be27845400 278 * \param[in] dev Dualtimer device structure \ref dualtimer_cmsdk_dev_t
AnnaBridge 172:65be27845400 279 *
AnnaBridge 172:65be27845400 280 * \return enum dualtimer_cmsdk_oneshot_t SIZE_16BIT/SIZE_32BIT
AnnaBridge 172:65be27845400 281 *
AnnaBridge 172:65be27845400 282 * \note This function doesn't check if dev is NULL.
AnnaBridge 172:65be27845400 283 * \note This function doesn't check if dualtimer has been initialized.
AnnaBridge 172:65be27845400 284 */
AnnaBridge 172:65be27845400 285 enum dualtimer_cmsdk_size_t dualtimer_cmsdk_get_size_timer2(
AnnaBridge 172:65be27845400 286 const struct dualtimer_cmsdk_dev_t* dev);
AnnaBridge 172:65be27845400 287
AnnaBridge 172:65be27845400 288 /**
AnnaBridge 172:65be27845400 289 * \brief Sets the clock divider for timer 1 included in dualtimer hardware.
AnnaBridge 172:65be27845400 290 *
AnnaBridge 172:65be27845400 291 *
AnnaBridge 172:65be27845400 292 * \param[in] dev Dualtimer device structure \ref dualtimer_cmsdk_dev_t
AnnaBridge 172:65be27845400 293 * \param[in] enum dualtimer_cmsdk_prescale_t prescale CLOCK_DIV1/16/256
AnnaBridge 172:65be27845400 294 *
AnnaBridge 172:65be27845400 295 * \note This function doesn't check if dev is NULL.
AnnaBridge 172:65be27845400 296 * \note This function doesn't check if dualtimer has been initialized.
AnnaBridge 172:65be27845400 297 */
AnnaBridge 172:65be27845400 298 void dualtimer_cmsdk_set_prescale_timer1(
AnnaBridge 172:65be27845400 299 const struct dualtimer_cmsdk_dev_t* dev,
AnnaBridge 172:65be27845400 300 enum dualtimer_cmsdk_prescale_t prescale);
AnnaBridge 172:65be27845400 301
AnnaBridge 172:65be27845400 302 /**
AnnaBridge 172:65be27845400 303 * \brief Sets the clock divider for timer 2 included in dualtimer hardware.
AnnaBridge 172:65be27845400 304 *
AnnaBridge 172:65be27845400 305 *
AnnaBridge 172:65be27845400 306 * \param[in] dev Dualtimer device structure \ref dualtimer_cmsdk_dev_t
AnnaBridge 172:65be27845400 307 * \param[in] enum dualtimer_cmsdk_prescale_t prescale CLOCK_DIV1/16/256
AnnaBridge 172:65be27845400 308 *
AnnaBridge 172:65be27845400 309 * \note This function doesn't check if dev is NULL.
AnnaBridge 172:65be27845400 310 * \note This function doesn't check if dualtimer has been initialized.
AnnaBridge 172:65be27845400 311 */
AnnaBridge 172:65be27845400 312 void dualtimer_cmsdk_set_prescale_timer2(
AnnaBridge 172:65be27845400 313 const struct dualtimer_cmsdk_dev_t* dev,
AnnaBridge 172:65be27845400 314 enum dualtimer_cmsdk_prescale_t prescale);
AnnaBridge 172:65be27845400 315
AnnaBridge 172:65be27845400 316 /**
AnnaBridge 172:65be27845400 317 * \brief Sets the clock divider for timers 1&2 included in dualtimer hardware.
AnnaBridge 172:65be27845400 318 *
AnnaBridge 172:65be27845400 319 *
AnnaBridge 172:65be27845400 320 * \param[in] dev Dualtimer device structure \ref dualtimer_cmsdk_dev_t
AnnaBridge 172:65be27845400 321 * \param[in] enum dualtimer_cmsdk_prescale_t prescale CLOCK_DIV1/16/256
AnnaBridge 172:65be27845400 322 *
AnnaBridge 172:65be27845400 323 * \note This function doesn't check if dev is NULL.
AnnaBridge 172:65be27845400 324 * \note This function doesn't check if dualtimer has been initialized.
AnnaBridge 172:65be27845400 325 */
AnnaBridge 172:65be27845400 326 void dualtimer_cmsdk_set_prescale_both_timers(
AnnaBridge 172:65be27845400 327 const struct dualtimer_cmsdk_dev_t* dev,
AnnaBridge 172:65be27845400 328 enum dualtimer_cmsdk_prescale_t prescale);
AnnaBridge 172:65be27845400 329
AnnaBridge 172:65be27845400 330 /**
AnnaBridge 172:65be27845400 331 * \brief Gets the current set prescale value for timer 1.
AnnaBridge 172:65be27845400 332 *
AnnaBridge 172:65be27845400 333 * \param[in] dev Dualtimer device structure \ref dualtimer_cmsdk_dev_t
AnnaBridge 172:65be27845400 334 *
AnnaBridge 172:65be27845400 335 * \return enum dualtimer_cmsdk_prescale_t prescale CLOCK_DIV1/16/256
AnnaBridge 172:65be27845400 336 *
AnnaBridge 172:65be27845400 337 * \note This function doesn't check if dev is NULL.
AnnaBridge 172:65be27845400 338 * \note This function doesn't check if dualtimer has been initialized.
AnnaBridge 172:65be27845400 339 */
AnnaBridge 172:65be27845400 340 enum dualtimer_cmsdk_prescale_t dualtimer_cmsdk_get_prescale_timer1(
AnnaBridge 172:65be27845400 341 const struct dualtimer_cmsdk_dev_t* dev);
AnnaBridge 172:65be27845400 342
AnnaBridge 172:65be27845400 343
AnnaBridge 172:65be27845400 344 /**
AnnaBridge 172:65be27845400 345 * \brief Gets the current set prescale value for timer 2.
AnnaBridge 172:65be27845400 346 *
AnnaBridge 172:65be27845400 347 * \param[in] dev Dualtimer device structure \ref dualtimer_cmsdk_dev_t
AnnaBridge 172:65be27845400 348 *
AnnaBridge 172:65be27845400 349 * \return enum dualtimer_cmsdk_prescale_t prescale CLOCK_DIV1/16/256
AnnaBridge 172:65be27845400 350 *
AnnaBridge 172:65be27845400 351 * \note This function doesn't check if dev is NULL.
AnnaBridge 172:65be27845400 352 * \note This function doesn't check if dualtimer has been initialized.
AnnaBridge 172:65be27845400 353 */
AnnaBridge 172:65be27845400 354 enum dualtimer_cmsdk_prescale_t dualtimer_cmsdk_get_prescale_timer2(
AnnaBridge 172:65be27845400 355 const struct dualtimer_cmsdk_dev_t* dev);
AnnaBridge 172:65be27845400 356
AnnaBridge 172:65be27845400 357 /**
AnnaBridge 172:65be27845400 358 * \brief Sets the run mode for timer1 1 included in dualtimer hardware.
AnnaBridge 172:65be27845400 359 *
AnnaBridge 172:65be27845400 360 * \param[in] dev Dualtimer device structure \ref dualtimer_cmsdk_dev_t
AnnaBridge 172:65be27845400 361 * \param[in] enum dualtimer_cmsdk_mode_t mode FREE_RUNNING/PERIODIC
AnnaBridge 172:65be27845400 362 *
AnnaBridge 172:65be27845400 363 * \note This function doesn't check if dev is NULL.
AnnaBridge 172:65be27845400 364 * \note This function doesn't check if dualtimer has been initialized.
AnnaBridge 172:65be27845400 365 */
AnnaBridge 172:65be27845400 366 void dualtimer_cmsdk_set_mode_timer1(const struct dualtimer_cmsdk_dev_t* dev,
AnnaBridge 172:65be27845400 367 enum dualtimer_cmsdk_mode_t mode);
AnnaBridge 172:65be27845400 368
AnnaBridge 172:65be27845400 369 /**
AnnaBridge 172:65be27845400 370 * \brief Sets the run mode for timer 2 included in dualtimer hardware.
AnnaBridge 172:65be27845400 371 *
AnnaBridge 172:65be27845400 372 * \param[in] dev Dualtimer device structure \ref dualtimer_cmsdk_dev_t
AnnaBridge 172:65be27845400 373 * \param[in] enum dualtimer_cmsdk_mode_t mode FREE_RUNNING/PERIODIC
AnnaBridge 172:65be27845400 374 *
AnnaBridge 172:65be27845400 375 * \note This function doesn't check if dev is NULL.
AnnaBridge 172:65be27845400 376 * \note This function doesn't check if dualtimer has been initialized.
AnnaBridge 172:65be27845400 377 */
AnnaBridge 172:65be27845400 378 void dualtimer_cmsdk_set_mode_timer2(const struct dualtimer_cmsdk_dev_t* dev,
AnnaBridge 172:65be27845400 379 enum dualtimer_cmsdk_mode_t mode);
AnnaBridge 172:65be27845400 380
AnnaBridge 172:65be27845400 381 /**
AnnaBridge 172:65be27845400 382 * \brief Sets the run mode for timers 1&2 included in dualtimer hardware.
AnnaBridge 172:65be27845400 383 *
AnnaBridge 172:65be27845400 384 * \param[in] dev Dualtimer device structure \ref dualtimer_cmsdk_dev_t
AnnaBridge 172:65be27845400 385 * \param[in] enum dualtimer_cmsdk_mode_t mode FREE_RUNNING/PERIODIC
AnnaBridge 172:65be27845400 386 *
AnnaBridge 172:65be27845400 387 * \note This function doesn't check if dev is NULL.
AnnaBridge 172:65be27845400 388 * \note This function doesn't check if dualtimer has been initialized.
AnnaBridge 172:65be27845400 389 */
AnnaBridge 172:65be27845400 390 void dualtimer_cmsdk_set_mode_both_timers(
AnnaBridge 172:65be27845400 391 const struct dualtimer_cmsdk_dev_t* dev,
AnnaBridge 172:65be27845400 392 enum dualtimer_cmsdk_mode_t mode);
AnnaBridge 172:65be27845400 393
AnnaBridge 172:65be27845400 394 /**
AnnaBridge 172:65be27845400 395 * \brief Gets the run mode for timer 1 included in dualtimer hardware.
AnnaBridge 172:65be27845400 396 *
AnnaBridge 172:65be27845400 397 * \param[in] dev Dualtimer device structure \ref dualtimer_cmsdk_dev_t
AnnaBridge 172:65be27845400 398 *
AnnaBridge 172:65be27845400 399 * \return enum dualtimer_cmsdk_mode_t mode FREE_RUNNING/PERIODIC
AnnaBridge 172:65be27845400 400 *
AnnaBridge 172:65be27845400 401 * \note This function doesn't check if dev is NULL.
AnnaBridge 172:65be27845400 402 * \note This function doesn't check if dualtimer has been initialized.
AnnaBridge 172:65be27845400 403 */
AnnaBridge 172:65be27845400 404 enum dualtimer_cmsdk_mode_t dualtimer_cmsdk_get_mode_timer1(
AnnaBridge 172:65be27845400 405 const struct dualtimer_cmsdk_dev_t* dev);
AnnaBridge 172:65be27845400 406
AnnaBridge 172:65be27845400 407 /**
AnnaBridge 172:65be27845400 408 * \brief Gets the run mode for timer 2 included in dualtimer hardware.
AnnaBridge 172:65be27845400 409 *
AnnaBridge 172:65be27845400 410 * \param[in] dev Dualtimer device structure \ref dualtimer_cmsdk_dev_t
AnnaBridge 172:65be27845400 411 *
AnnaBridge 172:65be27845400 412 * \return enum dualtimer_cmsdk_mode_t mode FREE_RUNNING/PERIODIC
AnnaBridge 172:65be27845400 413 *
AnnaBridge 172:65be27845400 414 * \note This function doesn't check if dev is NULL.
AnnaBridge 172:65be27845400 415 * \note This function doesn't check if dualtimer has been initialized.
AnnaBridge 172:65be27845400 416 */
AnnaBridge 172:65be27845400 417 enum dualtimer_cmsdk_mode_t dualtimer_cmsdk_get_mode_timer2(
AnnaBridge 172:65be27845400 418 const struct dualtimer_cmsdk_dev_t* dev);
AnnaBridge 172:65be27845400 419
AnnaBridge 172:65be27845400 420 /**
AnnaBridge 172:65be27845400 421 * \brief Enables the interrupt for timer 1 included in dualtimer hardware.
AnnaBridge 172:65be27845400 422 *
AnnaBridge 172:65be27845400 423 * \param[in] dev Dualtimer device structure \ref dualtimer_cmsdk_dev_t
AnnaBridge 172:65be27845400 424 *
AnnaBridge 172:65be27845400 425 * \note This function doesn't check if dev is NULL.
AnnaBridge 172:65be27845400 426 * \note This function doesn't check if dualtimer has been initialized.
AnnaBridge 172:65be27845400 427 * \note This function only enables the hardware irq, use NVIC for handler setup.
AnnaBridge 172:65be27845400 428 */
AnnaBridge 172:65be27845400 429 void dualtimer_cmsdk_enable_interrupt_timer1(
AnnaBridge 172:65be27845400 430 const struct dualtimer_cmsdk_dev_t* dev);
AnnaBridge 172:65be27845400 431
AnnaBridge 172:65be27845400 432 /**
AnnaBridge 172:65be27845400 433 * \brief Enables the interrupt for timer 2 included in dualtimer hardware.
AnnaBridge 172:65be27845400 434 *
AnnaBridge 172:65be27845400 435 * \param[in] dev Dualtimer device structure \ref dualtimer_cmsdk_dev_t
AnnaBridge 172:65be27845400 436 *
AnnaBridge 172:65be27845400 437 * \note This function doesn't check if dev is NULL.
AnnaBridge 172:65be27845400 438 * \note This function doesn't check if dualtimer has been initialized.
AnnaBridge 172:65be27845400 439 * \note This function only enables the hardware irq, use NVIC for handler setup.
AnnaBridge 172:65be27845400 440 */
AnnaBridge 172:65be27845400 441 void dualtimer_cmsdk_enable_interrupt_timer2(
AnnaBridge 172:65be27845400 442 const struct dualtimer_cmsdk_dev_t* dev);
AnnaBridge 172:65be27845400 443
AnnaBridge 172:65be27845400 444 /**
AnnaBridge 172:65be27845400 445 * \brief Enables the interrupt for timer 1&2 included in dualtimer hardware.
AnnaBridge 172:65be27845400 446 *
AnnaBridge 172:65be27845400 447 * \param[in] dev Dualtimer device structure \ref dualtimer_cmsdk_dev_t
AnnaBridge 172:65be27845400 448 *
AnnaBridge 172:65be27845400 449 * \note This function doesn't check if dev is NULL.
AnnaBridge 172:65be27845400 450 * \note This function doesn't check if dualtimer has been initialized.
AnnaBridge 172:65be27845400 451 * \note This function only enables the hardware irq, use NVIC for handler setup.
AnnaBridge 172:65be27845400 452 */
AnnaBridge 172:65be27845400 453 void dualtimer_cmsdk_enable_interrupt_both_timers(
AnnaBridge 172:65be27845400 454 const struct dualtimer_cmsdk_dev_t* dev);
AnnaBridge 172:65be27845400 455
AnnaBridge 172:65be27845400 456 /**
AnnaBridge 172:65be27845400 457 * \brief Disables the interrupt for timer 1 included in dualtimer hardware.
AnnaBridge 172:65be27845400 458 *
AnnaBridge 172:65be27845400 459 * \param[in] dev Dualtimer device structure \ref dualtimer_cmsdk_dev_t
AnnaBridge 172:65be27845400 460 *
AnnaBridge 172:65be27845400 461 * \note This function doesn't check if dev is NULL.
AnnaBridge 172:65be27845400 462 * \note This function doesn't check if dualtimer has been initialized.
AnnaBridge 172:65be27845400 463 */
AnnaBridge 172:65be27845400 464 void dualtimer_cmsdk_disable_interrupt_timer1(
AnnaBridge 172:65be27845400 465 const struct dualtimer_cmsdk_dev_t* dev);
AnnaBridge 172:65be27845400 466
AnnaBridge 172:65be27845400 467 /**
AnnaBridge 172:65be27845400 468 * \brief Disables the interrupt for timer 2 included in dualtimer hardware.
AnnaBridge 172:65be27845400 469 *
AnnaBridge 172:65be27845400 470 * \param[in] dev Dualtimer device structure \ref dualtimer_cmsdk_dev_t
AnnaBridge 172:65be27845400 471 *
AnnaBridge 172:65be27845400 472 * \note This function doesn't check if dev is NULL.
AnnaBridge 172:65be27845400 473 * \note This function doesn't check if dualtimer has been initialized.
AnnaBridge 172:65be27845400 474 */
AnnaBridge 172:65be27845400 475 void dualtimer_cmsdk_disable_interrupt_timer2(
AnnaBridge 172:65be27845400 476 const struct dualtimer_cmsdk_dev_t* dev);
AnnaBridge 172:65be27845400 477
AnnaBridge 172:65be27845400 478 /**
AnnaBridge 172:65be27845400 479 * \brief Disables the interrupt for timers 1&2 included in dualtimer hardware.
AnnaBridge 172:65be27845400 480 *
AnnaBridge 172:65be27845400 481 * \param[in] dev Dualtimer device structure \ref dualtimer_cmsdk_dev_t
AnnaBridge 172:65be27845400 482 *
AnnaBridge 172:65be27845400 483 * \note This function doesn't check if dev is NULL.
AnnaBridge 172:65be27845400 484 * \note This function doesn't check if dualtimer has been initialized.
AnnaBridge 172:65be27845400 485 */
AnnaBridge 172:65be27845400 486 void dualtimer_cmsdk_disable_interrupt_both_timers(
AnnaBridge 172:65be27845400 487 const struct dualtimer_cmsdk_dev_t* dev);
AnnaBridge 172:65be27845400 488
AnnaBridge 172:65be27845400 489 /**
AnnaBridge 172:65be27845400 490 * \brief Clears the interrupt for timer 1 included in dualtimer hardware.
AnnaBridge 172:65be27845400 491 *
AnnaBridge 172:65be27845400 492 * \param[in] dev Dualtimer device structure \ref dualtimer_cmsdk_dev_t
AnnaBridge 172:65be27845400 493 *
AnnaBridge 172:65be27845400 494 * \note This function doesn't check if dev is NULL.
AnnaBridge 172:65be27845400 495 * \note This function doesn't check if dualtimer has been initialized.
AnnaBridge 172:65be27845400 496 */
AnnaBridge 172:65be27845400 497 void dualtimer_cmsdk_clear_interrupt_timer1(
AnnaBridge 172:65be27845400 498 const struct dualtimer_cmsdk_dev_t* dev);
AnnaBridge 172:65be27845400 499
AnnaBridge 172:65be27845400 500 /**
AnnaBridge 172:65be27845400 501 * \brief Clears the interrupt for timer 2 included in dualtimer hardware.
AnnaBridge 172:65be27845400 502 *
AnnaBridge 172:65be27845400 503 * \param[in] dev Dualtimer device structure \ref dualtimer_cmsdk_dev_t
AnnaBridge 172:65be27845400 504 *
AnnaBridge 172:65be27845400 505 * \note This function doesn't check if dev is NULL.
AnnaBridge 172:65be27845400 506 * \note This function doesn't check if dualtimer has been initialized.
AnnaBridge 172:65be27845400 507 */
AnnaBridge 172:65be27845400 508 void dualtimer_cmsdk_clear_interrupt_timer2(
AnnaBridge 172:65be27845400 509 const struct dualtimer_cmsdk_dev_t* dev);
AnnaBridge 172:65be27845400 510
AnnaBridge 172:65be27845400 511 /**
AnnaBridge 172:65be27845400 512 * \brief Set the reload value for timer 1 included in dualtimer hardware.
AnnaBridge 172:65be27845400 513 *
AnnaBridge 172:65be27845400 514 * Writing to the reload register while timer is active will reset the
AnnaBridge 172:65be27845400 515 * current value register to the reload value
AnnaBridge 172:65be27845400 516 *
AnnaBridge 172:65be27845400 517 * \param[in] dev Dualtimer device structure \ref dualtimer_cmsdk_dev_t
AnnaBridge 172:65be27845400 518 * \param[in] reload uint32_t value that the timer counts down from
AnnaBridge 172:65be27845400 519 *
AnnaBridge 172:65be27845400 520 * \return dualtimer_cmsdk_error_t NONE/ERR_OVERFLOW
AnnaBridge 172:65be27845400 521 *
AnnaBridge 172:65be27845400 522 * \note This function doesn't check if dev is NULL.
AnnaBridge 172:65be27845400 523 * \note This function doesn't check if dualtimer has been initialized.
AnnaBridge 172:65be27845400 524 * \note This function will detect if users sets a uint32_t value to 16Bit timer
AnnaBridge 172:65be27845400 525 */
AnnaBridge 172:65be27845400 526 enum dualtimer_cmsdk_error_t dualtimer_cmsdk_set_reload_timer1(
AnnaBridge 172:65be27845400 527 const struct dualtimer_cmsdk_dev_t* dev,
AnnaBridge 172:65be27845400 528 uint32_t reload);
AnnaBridge 172:65be27845400 529
AnnaBridge 172:65be27845400 530 /**
AnnaBridge 172:65be27845400 531 * \brief Set the reload value for timer 2 included in dualtimer hardware.
AnnaBridge 172:65be27845400 532 *
AnnaBridge 172:65be27845400 533 * Writing to the reload register while timer is active will reset the
AnnaBridge 172:65be27845400 534 * current value register to the reload value
AnnaBridge 172:65be27845400 535 *
AnnaBridge 172:65be27845400 536 * \param[in] dev Dualtimer device structure \ref dualtimer_cmsdk_dev_t
AnnaBridge 172:65be27845400 537 * \param[in] reload uint32_t value that the timer counts down from
AnnaBridge 172:65be27845400 538 *
AnnaBridge 172:65be27845400 539 * \return dualtimer_cmsdk_error_t NONE/ERR_OVERFLOW
AnnaBridge 172:65be27845400 540 *
AnnaBridge 172:65be27845400 541 * \note This function doesn't check if dev is NULL.
AnnaBridge 172:65be27845400 542 * \note This function doesn't check if dualtimer has been initialized.
AnnaBridge 172:65be27845400 543 * \note This function will detect if users sets a uint32_t value to 16Bit timer
AnnaBridge 172:65be27845400 544 */
AnnaBridge 172:65be27845400 545 enum dualtimer_cmsdk_error_t dualtimer_cmsdk_set_reload_timer2(
AnnaBridge 172:65be27845400 546 const struct dualtimer_cmsdk_dev_t* dev,
AnnaBridge 172:65be27845400 547 uint32_t reload);
AnnaBridge 172:65be27845400 548
AnnaBridge 172:65be27845400 549 /**
AnnaBridge 172:65be27845400 550 * \brief Set the reload value for timers 1&2 included in dualtimer hardware.
AnnaBridge 172:65be27845400 551 *
AnnaBridge 172:65be27845400 552 * Writing to the reload register while timer is active will reset the
AnnaBridge 172:65be27845400 553 * current value register to the reload value
AnnaBridge 172:65be27845400 554 *
AnnaBridge 172:65be27845400 555 * \param[in] dev Dualtimer device structure \ref dualtimer_cmsdk_dev_t
AnnaBridge 172:65be27845400 556 * \param[in] reload uint32_t value that the timer counts down from
AnnaBridge 172:65be27845400 557 *
AnnaBridge 172:65be27845400 558 * \return dualtimer_cmsdk_error_t NONE/ERR_OVERFLOW
AnnaBridge 172:65be27845400 559 *
AnnaBridge 172:65be27845400 560 * \note This function doesn't check if dev is NULL.
AnnaBridge 172:65be27845400 561 * \note This function doesn't check if dualtimer has been initialized.
AnnaBridge 172:65be27845400 562 * \note This function will detect if users sets a uint32_t value to 16Bit timer
AnnaBridge 172:65be27845400 563 */
AnnaBridge 172:65be27845400 564 enum dualtimer_cmsdk_error_t dualtimer_cmsdk_set_reload_both_timers(
AnnaBridge 172:65be27845400 565 const struct dualtimer_cmsdk_dev_t* dev,
AnnaBridge 172:65be27845400 566 uint32_t reload);
AnnaBridge 172:65be27845400 567
AnnaBridge 172:65be27845400 568 /**
AnnaBridge 172:65be27845400 569 * \brief Gets the reload value for timer 1 included in dualtimer hardware.
AnnaBridge 172:65be27845400 570 *
AnnaBridge 172:65be27845400 571 * \param[in] dev Dualtimer device structure \ref dualtimer_cmsdk_dev_t
AnnaBridge 172:65be27845400 572 *
AnnaBridge 172:65be27845400 573 * \return uint32_t Reload value of timer 1
AnnaBridge 172:65be27845400 574 *
AnnaBridge 172:65be27845400 575 * \note This function doesn't check if dev is NULL.
AnnaBridge 172:65be27845400 576 * \note This function doesn't check if dualtimer has been initialized.
AnnaBridge 172:65be27845400 577 */
AnnaBridge 172:65be27845400 578 uint32_t dualtimer_cmsdk_get_reload_timer1(
AnnaBridge 172:65be27845400 579 const struct dualtimer_cmsdk_dev_t* dev);
AnnaBridge 172:65be27845400 580
AnnaBridge 172:65be27845400 581 /**
AnnaBridge 172:65be27845400 582 * \brief Gets the reload value for timer 2 included in dualtimer hardware.
AnnaBridge 172:65be27845400 583 *
AnnaBridge 172:65be27845400 584 * \param[in] dev Dualtimer device structure \ref dualtimer_cmsdk_dev_t
AnnaBridge 172:65be27845400 585 *
AnnaBridge 172:65be27845400 586 * \return uint32_t Reload value of timer 2
AnnaBridge 172:65be27845400 587 *
AnnaBridge 172:65be27845400 588 * \note This function doesn't check if dev is NULL.
AnnaBridge 172:65be27845400 589 * \note This function doesn't check if dualtimer has been initialized.
AnnaBridge 172:65be27845400 590 */
AnnaBridge 172:65be27845400 591 uint32_t dualtimer_cmsdk_get_reload_timer2(
AnnaBridge 172:65be27845400 592 const struct dualtimer_cmsdk_dev_t* dev);
AnnaBridge 172:65be27845400 593
AnnaBridge 172:65be27845400 594 /**
AnnaBridge 172:65be27845400 595 * \brief Set the background-reload value for timer 1 of dualtimer hw.
AnnaBridge 172:65be27845400 596 *
AnnaBridge 172:65be27845400 597 * Unlike normal reload, writing to this register will not affect current
AnnaBridge 172:65be27845400 598 * value of timer, and the change become effective after the timer counts to zero
AnnaBridge 172:65be27845400 599 *
AnnaBridge 172:65be27845400 600 * \param[in] dev Dualtimer device structure \ref dualtimer_cmsdk_dev_t
AnnaBridge 172:65be27845400 601 * \param[in] reload uint32_t value that the timer counts down from
AnnaBridge 172:65be27845400 602 *
AnnaBridge 172:65be27845400 603 * \return dualtimer_cmsdk_error_t NONE/ERR_OVERFLOW
AnnaBridge 172:65be27845400 604 *
AnnaBridge 172:65be27845400 605 * \note This function doesn't check if dev is NULL.
AnnaBridge 172:65be27845400 606 * \note This function doesn't check if dualtimer has been initialized.
AnnaBridge 172:65be27845400 607 * \note This function will detect if users sets a uint32_t value to 16Bit timer
AnnaBridge 172:65be27845400 608 */
AnnaBridge 172:65be27845400 609 enum dualtimer_cmsdk_error_t dualtimer_cmsdk_set_bgreload_timer1(
AnnaBridge 172:65be27845400 610 const struct dualtimer_cmsdk_dev_t* dev,
AnnaBridge 172:65be27845400 611 uint32_t reload);
AnnaBridge 172:65be27845400 612
AnnaBridge 172:65be27845400 613 /**
AnnaBridge 172:65be27845400 614 * \brief Set the background-reload value for timers 2 of dualtimer hw.
AnnaBridge 172:65be27845400 615 *
AnnaBridge 172:65be27845400 616 * Unlike normal reload, writing to this register will not affect current
AnnaBridge 172:65be27845400 617 * value of timer, and the change become effective after the timer counts to zero
AnnaBridge 172:65be27845400 618 *
AnnaBridge 172:65be27845400 619 * \param[in] dev Dualtimer device structure \ref dualtimer_cmsdk_dev_t
AnnaBridge 172:65be27845400 620 * \param[in] reload uint32_t value that the timer counts down from
AnnaBridge 172:65be27845400 621 *
AnnaBridge 172:65be27845400 622 * \return dualtimer_cmsdk_error_t NONE/ERR_OVERFLOW
AnnaBridge 172:65be27845400 623 *
AnnaBridge 172:65be27845400 624 * \note This function doesn't check if dev is NULL.
AnnaBridge 172:65be27845400 625 * \note This function doesn't check if dualtimer has been initialized.
AnnaBridge 172:65be27845400 626 * \note This function will detect if users sets a uint32_t value to 16Bit timer
AnnaBridge 172:65be27845400 627 */
AnnaBridge 172:65be27845400 628 enum dualtimer_cmsdk_error_t dualtimer_cmsdk_set_bgreload_timer2(
AnnaBridge 172:65be27845400 629 const struct dualtimer_cmsdk_dev_t* dev,
AnnaBridge 172:65be27845400 630 uint32_t reload);
AnnaBridge 172:65be27845400 631
AnnaBridge 172:65be27845400 632 /**
AnnaBridge 172:65be27845400 633 * \brief Set the background-reload value for timers 1&2 of dualtimer hw.
AnnaBridge 172:65be27845400 634 *
AnnaBridge 172:65be27845400 635 * Unlike normal reload, writing to this register will not affect current
AnnaBridge 172:65be27845400 636 * value of timer, and the change become effective after the timer counts to zero
AnnaBridge 172:65be27845400 637 *
AnnaBridge 172:65be27845400 638 * \param[in] dev Dualtimer device structure \ref dualtimer_cmsdk_dev_t
AnnaBridge 172:65be27845400 639 * \param[in] reload uint32_t value that the timer counts down from
AnnaBridge 172:65be27845400 640 *
AnnaBridge 172:65be27845400 641 * \return dualtimer_cmsdk_error_t NONE/ERR_OVERFLOW
AnnaBridge 172:65be27845400 642 *
AnnaBridge 172:65be27845400 643 * \note This function doesn't check if dev is NULL.
AnnaBridge 172:65be27845400 644 * \note This function doesn't check if dualtimer has been initialized.
AnnaBridge 172:65be27845400 645 * \note This function will detect if users sets a uint32_t value to 16Bit timer
AnnaBridge 172:65be27845400 646 */
AnnaBridge 172:65be27845400 647 enum dualtimer_cmsdk_error_t dualtimer_cmsdk_set_bgreload_both_timers(
AnnaBridge 172:65be27845400 648 const struct dualtimer_cmsdk_dev_t* dev,
AnnaBridge 172:65be27845400 649 uint32_t reload);
AnnaBridge 172:65be27845400 650
AnnaBridge 172:65be27845400 651 /**
AnnaBridge 172:65be27845400 652 * \brief Gets the background-reload value for timer 1 of dualtimer hw.
AnnaBridge 172:65be27845400 653 *
AnnaBridge 172:65be27845400 654 * \param[in] dev Dualtimer device structure \ref dualtimer_cmsdk_dev_t
AnnaBridge 172:65be27845400 655 *
AnnaBridge 172:65be27845400 656 * \return uint32_t Reload value of timer 1
AnnaBridge 172:65be27845400 657 *
AnnaBridge 172:65be27845400 658 * \note This function doesn't check if dev is NULL.
AnnaBridge 172:65be27845400 659 * \note This function doesn't check if dualtimer has been initialized.
AnnaBridge 172:65be27845400 660 */
AnnaBridge 172:65be27845400 661 uint32_t dualtimer_cmsdk_get_bgreload_timer1(
AnnaBridge 172:65be27845400 662 const struct dualtimer_cmsdk_dev_t* dev);
AnnaBridge 172:65be27845400 663
AnnaBridge 172:65be27845400 664 /**
AnnaBridge 172:65be27845400 665 * \brief Gets the background-reload value for timer 2 of dualtimer hw.
AnnaBridge 172:65be27845400 666 *
AnnaBridge 172:65be27845400 667 * \param[in] dev Dualtimer device structure \ref dualtimer_cmsdk_dev_t
AnnaBridge 172:65be27845400 668 *
AnnaBridge 172:65be27845400 669 * \return uint32_t Reload value of timer 2
AnnaBridge 172:65be27845400 670 *
AnnaBridge 172:65be27845400 671 * \note This function doesn't check if dev is NULL.
AnnaBridge 172:65be27845400 672 * \note This function doesn't check if dualtimer has been initialized.
AnnaBridge 172:65be27845400 673 */
AnnaBridge 172:65be27845400 674 uint32_t dualtimer_cmsdk_get_bgreload_timer2(
AnnaBridge 172:65be27845400 675 const struct dualtimer_cmsdk_dev_t* dev);
AnnaBridge 172:65be27845400 676
AnnaBridge 172:65be27845400 677 /**
AnnaBridge 172:65be27845400 678 * \brief Gets the current value for timer 1 included in dualtimer hardware.
AnnaBridge 172:65be27845400 679 *
AnnaBridge 172:65be27845400 680 *
AnnaBridge 172:65be27845400 681 * \param[in] dev Dualtimer device structure \ref dualtimer_cmsdk_dev_t
AnnaBridge 172:65be27845400 682 *
AnnaBridge 172:65be27845400 683 * \return uint32_t Copy of current value of timer.
AnnaBridge 172:65be27845400 684 *
AnnaBridge 172:65be27845400 685 * \note This function doesn't check if dev is NULL.
AnnaBridge 172:65be27845400 686 * \note This function doesn't check if dualtimer has been initialized.
AnnaBridge 172:65be27845400 687 */
AnnaBridge 172:65be27845400 688 uint32_t dualtimer_cmsdk_get_current_timer1(
AnnaBridge 172:65be27845400 689 const struct dualtimer_cmsdk_dev_t* dev);
AnnaBridge 172:65be27845400 690
AnnaBridge 172:65be27845400 691 /**
AnnaBridge 172:65be27845400 692 * \brief Gets the current value for timer 2 included in dualtimer hardware.
AnnaBridge 172:65be27845400 693 *
AnnaBridge 172:65be27845400 694 *
AnnaBridge 172:65be27845400 695 * \param[in] dev Dualtimer device structure \ref dualtimer_cmsdk_dev_t
AnnaBridge 172:65be27845400 696 *
AnnaBridge 172:65be27845400 697 * \return uint32_t Copy of current value of timer.
AnnaBridge 172:65be27845400 698 *
AnnaBridge 172:65be27845400 699 * \note This function doesn't check if dev is NULL.
AnnaBridge 172:65be27845400 700 * \note This function doesn't check if dualtimer has been initialized.
AnnaBridge 172:65be27845400 701 */
AnnaBridge 172:65be27845400 702 uint32_t dualtimer_cmsdk_get_current_timer2(
AnnaBridge 172:65be27845400 703 const struct dualtimer_cmsdk_dev_t* dev);
AnnaBridge 172:65be27845400 704
AnnaBridge 172:65be27845400 705 /**
AnnaBridge 172:65be27845400 706 * \brief Checks if timer 1 included in dualtimer hardware, is enabled.
AnnaBridge 172:65be27845400 707 *
AnnaBridge 172:65be27845400 708 *
AnnaBridge 172:65be27845400 709 * \param[in] dev Dualtimer device structure \ref dualtimer_cmsdk_dev_t
AnnaBridge 172:65be27845400 710 *
AnnaBridge 172:65be27845400 711 * \return bool true if timer 1 is enabled.
AnnaBridge 172:65be27845400 712 *
AnnaBridge 172:65be27845400 713 * \note This function doesn't check if dev is NULL.
AnnaBridge 172:65be27845400 714 * \note This function doesn't check if dualtimer has been initialized.
AnnaBridge 172:65be27845400 715 */
AnnaBridge 172:65be27845400 716 bool dualtimer_cmsdk_is_enabled_timer1(const struct dualtimer_cmsdk_dev_t* dev);
AnnaBridge 172:65be27845400 717
AnnaBridge 172:65be27845400 718 /**
AnnaBridge 172:65be27845400 719 * \brief Checks if timer 2 included in dualtimer hardware, is enabled.
AnnaBridge 172:65be27845400 720 *
AnnaBridge 172:65be27845400 721 *
AnnaBridge 172:65be27845400 722 * \param[in] dev Dualtimer device structure \ref dualtimer_cmsdk_dev_t
AnnaBridge 172:65be27845400 723 *
AnnaBridge 172:65be27845400 724 * \return bool true if timer 2 is enabled.
AnnaBridge 172:65be27845400 725 *
AnnaBridge 172:65be27845400 726 * \note This function doesn't check if dev is NULL.
AnnaBridge 172:65be27845400 727 * \note This function doesn't check if dualtimer has been initialized.
AnnaBridge 172:65be27845400 728 */
AnnaBridge 172:65be27845400 729 bool dualtimer_cmsdk_is_enabled_timer2(const struct dualtimer_cmsdk_dev_t* dev);
AnnaBridge 172:65be27845400 730
AnnaBridge 172:65be27845400 731 /**
AnnaBridge 172:65be27845400 732 * \brief Checks if timer 1 included in dualtimer hardware, has the irq enabled.
AnnaBridge 172:65be27845400 733 *
AnnaBridge 172:65be27845400 734 *
AnnaBridge 172:65be27845400 735 * \param[in] dev Dualtimer device structure \ref dualtimer_cmsdk_dev_t
AnnaBridge 172:65be27845400 736 *
AnnaBridge 172:65be27845400 737 * \return bool true if timer 1 irq is enabled.
AnnaBridge 172:65be27845400 738 *
AnnaBridge 172:65be27845400 739 * \note This function doesn't check if dev is NULL.
AnnaBridge 172:65be27845400 740 * \note This function doesn't check if dualtimer has been initialized.
AnnaBridge 172:65be27845400 741 */
AnnaBridge 172:65be27845400 742 bool dualtimer_cmsdk_is_interrupt_enabled_timer1(
AnnaBridge 172:65be27845400 743 const struct dualtimer_cmsdk_dev_t* dev);
AnnaBridge 172:65be27845400 744
AnnaBridge 172:65be27845400 745 /**
AnnaBridge 172:65be27845400 746 * \brief Checks if timer 2 included in dualtimer hardware, has the irq enabled.
AnnaBridge 172:65be27845400 747 *
AnnaBridge 172:65be27845400 748 *
AnnaBridge 172:65be27845400 749 * \param[in] dev Dualtimer device structure \ref dualtimer_cmsdk_dev_t
AnnaBridge 172:65be27845400 750 *
AnnaBridge 172:65be27845400 751 * \return bool true if timer 2 irq is enabled.
AnnaBridge 172:65be27845400 752 *
AnnaBridge 172:65be27845400 753 * \note This function doesn't check if dev is NULL.
AnnaBridge 172:65be27845400 754 * \note This function doesn't check if dualtimer has been initialized.
AnnaBridge 172:65be27845400 755 */
AnnaBridge 172:65be27845400 756 bool dualtimer_cmsdk_is_interrupt_enabled_timer2(
AnnaBridge 172:65be27845400 757 const struct dualtimer_cmsdk_dev_t* dev);
AnnaBridge 172:65be27845400 758
AnnaBridge 172:65be27845400 759 /**
AnnaBridge 172:65be27845400 760 * \brief Checks the masked interrupt status of timer 1 included in dualtimer hw.
AnnaBridge 172:65be27845400 761 *
AnnaBridge 172:65be27845400 762 * This function is checking against the masked interrupt register which is the
AnnaBridge 172:65be27845400 763 * output of timerx enabled AND timerX raw interrupt.
AnnaBridge 172:65be27845400 764 *
AnnaBridge 172:65be27845400 765 * \param[in] dev Dualtimer device structure \ref dualtimer_cmsdk_dev_t
AnnaBridge 172:65be27845400 766 *
AnnaBridge 172:65be27845400 767 * \return bool true if timer 1's masked irq is active
AnnaBridge 172:65be27845400 768 *
AnnaBridge 172:65be27845400 769 * \note This function doesn't check if dev is NULL.
AnnaBridge 172:65be27845400 770 * \note This function doesn't check if dualtimer has been initialized.
AnnaBridge 172:65be27845400 771 */
AnnaBridge 172:65be27845400 772 bool dualtimer_cmsdk_is_interrupt_active_timer1(
AnnaBridge 172:65be27845400 773 const struct dualtimer_cmsdk_dev_t* dev);
AnnaBridge 172:65be27845400 774
AnnaBridge 172:65be27845400 775 /**
AnnaBridge 172:65be27845400 776 * \brief Checks the masked interrupt status of timer 1 included in dualtimer hw.
AnnaBridge 172:65be27845400 777 *
AnnaBridge 172:65be27845400 778 * This function is checking against the masked interrupt register which is the
AnnaBridge 172:65be27845400 779 * output of timerx enabled AND timerX raw interrupt.
AnnaBridge 172:65be27845400 780 *
AnnaBridge 172:65be27845400 781 * \param[in] dev Dualtimer device structure \ref dualtimer_cmsdk_dev_t
AnnaBridge 172:65be27845400 782 *
AnnaBridge 172:65be27845400 783 * \return bool true if timer 2's masked irq is active
AnnaBridge 172:65be27845400 784 *
AnnaBridge 172:65be27845400 785 * \note This function doesn't check if dev is NULL.
AnnaBridge 172:65be27845400 786 * \note This function doesn't check if dualtimer has been initialized.
AnnaBridge 172:65be27845400 787 */
AnnaBridge 172:65be27845400 788 bool dualtimer_cmsdk_is_interrupt_active_timer2(
AnnaBridge 172:65be27845400 789 const struct dualtimer_cmsdk_dev_t* dev);
AnnaBridge 172:65be27845400 790
AnnaBridge 172:65be27845400 791 /**
AnnaBridge 172:65be27845400 792 * \brief Checks the raw interrupt status of timer 1 included in dualtimer hw.
AnnaBridge 172:65be27845400 793 *
AnnaBridge 172:65be27845400 794 * This function is checking for the raw interrupt produced when timer reaches 0
AnnaBridge 172:65be27845400 795 *
AnnaBridge 172:65be27845400 796 * \param[in] dev Dualtimer device structure \ref dualtimer_cmsdk_dev_t
AnnaBridge 172:65be27845400 797 *
AnnaBridge 172:65be27845400 798 * \return bool true if timer 1's masked irq is active
AnnaBridge 172:65be27845400 799 *
AnnaBridge 172:65be27845400 800 * \note This function doesn't check if dev is NULL.
AnnaBridge 172:65be27845400 801 * \note This function doesn't check if dualtimer has been initialized.
AnnaBridge 172:65be27845400 802 */
AnnaBridge 172:65be27845400 803 bool dualtimer_cmsdk_is_raw_interrupt_active_timer1(
AnnaBridge 172:65be27845400 804 const struct dualtimer_cmsdk_dev_t* dev);
AnnaBridge 172:65be27845400 805
AnnaBridge 172:65be27845400 806 /**
AnnaBridge 172:65be27845400 807 * \brief Checks the raw interrupt status of timer 1 included in dualtimer hw.
AnnaBridge 172:65be27845400 808 *
AnnaBridge 172:65be27845400 809 * This function is checking for the raw interrupt produced when timer reaches 0
AnnaBridge 172:65be27845400 810 *
AnnaBridge 172:65be27845400 811 * \param[in] dev Dualtimer device structure \ref dualtimer_cmsdk_dev_t
AnnaBridge 172:65be27845400 812 *
AnnaBridge 172:65be27845400 813 * \return bool true if timer 2's masked irq is active
AnnaBridge 172:65be27845400 814 *
AnnaBridge 172:65be27845400 815 * \note This function doesn't check if dev is NULL.
AnnaBridge 172:65be27845400 816 * \note This function doesn't check if dualtimer has been initialized.
AnnaBridge 172:65be27845400 817 */
AnnaBridge 172:65be27845400 818 bool dualtimer_cmsdk_is_raw_interrupt_active_timer2(
AnnaBridge 172:65be27845400 819 const struct dualtimer_cmsdk_dev_t* dev);
AnnaBridge 172:65be27845400 820
AnnaBridge 172:65be27845400 821 /**
AnnaBridge 172:65be27845400 822 * \brief Checks if dualtimer hardware has been initialized.
AnnaBridge 172:65be27845400 823 *
AnnaBridge 172:65be27845400 824 * \param[in] dev Dualtimer device structure \ref dualtimer_cmsdk_dev_t
AnnaBridge 172:65be27845400 825 *
AnnaBridge 172:65be27845400 826 * \return bool true if dualtimer has been initialized.
AnnaBridge 172:65be27845400 827 *
AnnaBridge 172:65be27845400 828 * \note This function doesn't check if dev is NULL.
AnnaBridge 172:65be27845400 829 */
AnnaBridge 172:65be27845400 830 bool dualtimer_cmsdk_is_initialized(const struct dualtimer_cmsdk_dev_t* dev);
AnnaBridge 172:65be27845400 831
AnnaBridge 172:65be27845400 832 /**
AnnaBridge 172:65be27845400 833 * \brief Reads the number of ticks elapsed in the current cycle of timer 1.
AnnaBridge 172:65be27845400 834 *
AnnaBridge 172:65be27845400 835 * \param[in] dev Dualtimer device structure \ref dualtimer_cmsdk_dev_t
AnnaBridge 172:65be27845400 836 *
AnnaBridge 172:65be27845400 837 * \return Get elapsed number of ticks since last reload was set.
AnnaBridge 172:65be27845400 838 * Elapsed = (Reload value - Current value)
AnnaBridge 172:65be27845400 839 */
AnnaBridge 172:65be27845400 840 uint32_t dualtimer_cmsdk_get_elapsed_value_timer1(
AnnaBridge 172:65be27845400 841 const struct dualtimer_cmsdk_dev_t* dev);
AnnaBridge 172:65be27845400 842
AnnaBridge 172:65be27845400 843 /**
AnnaBridge 172:65be27845400 844 * \brief Reads the number of ticks elapsed in the current cycle of timer 2.
AnnaBridge 172:65be27845400 845 *
AnnaBridge 172:65be27845400 846 * \param[in] dev Dualtimer device structure \ref dualtimer_cmsdk_dev_t
AnnaBridge 172:65be27845400 847 *
AnnaBridge 172:65be27845400 848 * \return Get elapsed number of ticks since last reload was set.
AnnaBridge 172:65be27845400 849 * Elapsed = (Reload value - Current value)
AnnaBridge 172:65be27845400 850 */
AnnaBridge 172:65be27845400 851 uint32_t dualtimer_cmsdk_get_elapsed_value_timer2(
AnnaBridge 172:65be27845400 852 const struct dualtimer_cmsdk_dev_t* dev);
AnnaBridge 172:65be27845400 853
AnnaBridge 172:65be27845400 854 /**
AnnaBridge 172:65be27845400 855 * \brief Resets the timer 1 count value to the reload value.
AnnaBridge 172:65be27845400 856 *
AnnaBridge 172:65be27845400 857 * \param[in] dev Dualtimer device structure \ref dualtimer_cmsdk_dev_t
AnnaBridge 172:65be27845400 858 *
AnnaBridge 172:65be27845400 859 * \note This function doesn't check if dev is NULL.
AnnaBridge 172:65be27845400 860 * \note This function doesn't check if dualtimer has been initialized.
AnnaBridge 172:65be27845400 861 */
AnnaBridge 172:65be27845400 862 void dualtimer_cmsdk_reset_timer1(const struct dualtimer_cmsdk_dev_t* dev);
AnnaBridge 172:65be27845400 863
AnnaBridge 172:65be27845400 864 /**
AnnaBridge 172:65be27845400 865 * \brief Resets the timer 2 count value to the reload value.
AnnaBridge 172:65be27845400 866 *
AnnaBridge 172:65be27845400 867 * \param[in] dev Dualtimer device structure \ref dualtimer_cmsdk_dev_t
AnnaBridge 172:65be27845400 868 *
AnnaBridge 172:65be27845400 869 * \note This function doesn't check if dev is NULL.
AnnaBridge 172:65be27845400 870 * \note This function doesn't check if dualtimer has been initialized.
AnnaBridge 172:65be27845400 871 */
AnnaBridge 172:65be27845400 872 void dualtimer_cmsdk_reset_timer2(const struct dualtimer_cmsdk_dev_t* dev);
AnnaBridge 172:65be27845400 873
AnnaBridge 172:65be27845400 874 /**
AnnaBridge 172:65be27845400 875 * \brief Resets both timers' count values to their reload values.
AnnaBridge 172:65be27845400 876 *
AnnaBridge 172:65be27845400 877 * \param[in] dev Dualtimer device structure \ref dualtimer_cmsdk_dev_t
AnnaBridge 172:65be27845400 878 *
AnnaBridge 172:65be27845400 879 * \note This function doesn't check if dev is NULL.
AnnaBridge 172:65be27845400 880 * \note This function doesn't check if dualtimer has been initialized.
AnnaBridge 172:65be27845400 881 */
AnnaBridge 172:65be27845400 882 void dualtimer_cmsdk_reset_both_timers(const struct dualtimer_cmsdk_dev_t* dev);
AnnaBridge 172:65be27845400 883
AnnaBridge 172:65be27845400 884
AnnaBridge 172:65be27845400 885 #ifdef __cplusplus
AnnaBridge 172:65be27845400 886 }
AnnaBridge 172:65be27845400 887 #endif
AnnaBridge 172:65be27845400 888 #endif /* __DUALTIMER_CMSDK_DRV_H__ */