mbed official / mbed

Dependents:   hello SerialTestv11 SerialTestv12 Sierpinski ... more

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

Who changed what in which revision?

UserRevisionLine numberNew contents of line
AnnaBridge 171:3a7713b1edbc 1 /* mbed Microcontroller Library
AnnaBridge 171:3a7713b1edbc 2 * Copyright (c) 2016 ARM Limited
AnnaBridge 171:3a7713b1edbc 3 *
AnnaBridge 171:3a7713b1edbc 4 * Licensed under the Apache License, Version 2.0 (the "License");
AnnaBridge 171:3a7713b1edbc 5 * you may not use this file except in compliance with the License.
AnnaBridge 171:3a7713b1edbc 6 * You may obtain a copy of the License at
AnnaBridge 171:3a7713b1edbc 7 *
AnnaBridge 171:3a7713b1edbc 8 * http://www.apache.org/licenses/LICENSE-2.0
AnnaBridge 171:3a7713b1edbc 9 *
AnnaBridge 171:3a7713b1edbc 10 * Unless required by applicable law or agreed to in writing, software
AnnaBridge 171:3a7713b1edbc 11 * distributed under the License is distributed on an "AS IS" BASIS,
AnnaBridge 171:3a7713b1edbc 12 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
AnnaBridge 171:3a7713b1edbc 13 * See the License for the specific language governing permissions and
AnnaBridge 171:3a7713b1edbc 14 * limitations under the License.
AnnaBridge 171:3a7713b1edbc 15 */
AnnaBridge 171:3a7713b1edbc 16
AnnaBridge 171:3a7713b1edbc 17 #ifndef _APB_DUAL_TIMER_DRV_H
AnnaBridge 171:3a7713b1edbc 18 #define _APB_DUAL_TIMER_DRV_H
AnnaBridge 171:3a7713b1edbc 19
AnnaBridge 171:3a7713b1edbc 20 #ifdef __cplusplus
AnnaBridge 171:3a7713b1edbc 21 extern "C" {
AnnaBridge 171:3a7713b1edbc 22 #endif
AnnaBridge 171:3a7713b1edbc 23
AnnaBridge 171:3a7713b1edbc 24 /* Supported Number of Dual Timers */
AnnaBridge 171:3a7713b1edbc 25 #define NUM_DUALTIMERS 1
AnnaBridge 171:3a7713b1edbc 26 #define DUALTIMER0 0
AnnaBridge 171:3a7713b1edbc 27 #define SINGLETIMER1 1
AnnaBridge 171:3a7713b1edbc 28 #define SINGLETIMER2 2
AnnaBridge 171:3a7713b1edbc 29 #define ALL_SINGLETIMERS 3
AnnaBridge 171:3a7713b1edbc 30
AnnaBridge 171:3a7713b1edbc 31 /*
AnnaBridge 171:3a7713b1edbc 32 * DualTimer_Initialize(): Initializes a hardware timer
AnnaBridge 171:3a7713b1edbc 33 * timer: timer to be Initialized
AnnaBridge 171:3a7713b1edbc 34 * time_us: timer reload value in us - 0 to reload to timer max value
AnnaBridge 171:3a7713b1edbc 35 * time_us = tick_value / TIMER_TICK_US
AnnaBridge 171:3a7713b1edbc 36 */
AnnaBridge 171:3a7713b1edbc 37 void DualTimer_Initialize(uint32_t timer, uint32_t time_us);
AnnaBridge 171:3a7713b1edbc 38
AnnaBridge 171:3a7713b1edbc 39 /* Enable Mode */
AnnaBridge 171:3a7713b1edbc 40 typedef uint8_t timerenable_t;
AnnaBridge 171:3a7713b1edbc 41 /* Interrupt */
AnnaBridge 171:3a7713b1edbc 42 #define DUALTIMER_INT_MASK (0)
AnnaBridge 171:3a7713b1edbc 43 #define DUALTIMER_INT (1 << DUALTIMER_INT_MASK)
AnnaBridge 171:3a7713b1edbc 44 /* 32 bit Counter */
AnnaBridge 171:3a7713b1edbc 45 #define DUALTIMER_COUNT_32_MASK (1)
AnnaBridge 171:3a7713b1edbc 46 #define DUALTIMER_COUNT_32 (1 << DUALTIMER_COUNT_32_MASK)
AnnaBridge 171:3a7713b1edbc 47 /* Periodic mode */
AnnaBridge 171:3a7713b1edbc 48 #define DUALTIMER_PERIODIC_MASK (2)
AnnaBridge 171:3a7713b1edbc 49 #define DUALTIMER_PERIODIC (1 << DUALTIMER_PERIODIC_MASK)
AnnaBridge 171:3a7713b1edbc 50 /* OneShot mode */
AnnaBridge 171:3a7713b1edbc 51 #define DUALTIMER_ONESHOT_MASK (3)
AnnaBridge 171:3a7713b1edbc 52 #define DUALTIMER_ONESHOT (1 << DUALTIMER_ONESHOT_MASK)
AnnaBridge 171:3a7713b1edbc 53
AnnaBridge 171:3a7713b1edbc 54 /* Default reload */
AnnaBridge 171:3a7713b1edbc 55 #define DUALTIMER_DEFAULT_RELOAD 0xFFFFFFFF
AnnaBridge 171:3a7713b1edbc 56
AnnaBridge 171:3a7713b1edbc 57 /*
AnnaBridge 171:3a7713b1edbc 58 * DualTimer_Enable(): Enables a hardware timer
AnnaBridge 171:3a7713b1edbc 59 * timer: timer to be enabled
AnnaBridge 171:3a7713b1edbc 60 * mode: enable mode
AnnaBridge 171:3a7713b1edbc 61 */
AnnaBridge 171:3a7713b1edbc 62 void DualTimer_Enable(uint32_t timer, timerenable_t mode);
AnnaBridge 171:3a7713b1edbc 63
AnnaBridge 171:3a7713b1edbc 64 /*
AnnaBridge 171:3a7713b1edbc 65 * DualTimer_Disable(): Disables a hardware timer
AnnaBridge 171:3a7713b1edbc 66 * timer: timer to be disabled
AnnaBridge 171:3a7713b1edbc 67 * dis_timer: 0 both - 1 dual timer 1 - 2 dual timer 2
AnnaBridge 171:3a7713b1edbc 68 */
AnnaBridge 171:3a7713b1edbc 69 void DualTimer_Disable(uint32_t timer, uint32_t dis_timer);
AnnaBridge 171:3a7713b1edbc 70
AnnaBridge 171:3a7713b1edbc 71 /*
AnnaBridge 171:3a7713b1edbc 72 * DualTimer_isEnabled(): verifies if a timer is enabled
AnnaBridge 171:3a7713b1edbc 73 * timer: timer to be verified
AnnaBridge 171:3a7713b1edbc 74 * @return: 0 disabled - 1 enabled
AnnaBridge 171:3a7713b1edbc 75 */
AnnaBridge 171:3a7713b1edbc 76 uint32_t DualTimer_isEnabled(uint32_t timer);
AnnaBridge 171:3a7713b1edbc 77
AnnaBridge 171:3a7713b1edbc 78 /*
AnnaBridge 171:3a7713b1edbc 79 * DualTimer_Read_1(): provides single timer 1 VALUE
AnnaBridge 171:3a7713b1edbc 80 * timer: timer to be read
AnnaBridge 171:3a7713b1edbc 81 * @return: timer VALUE us
AnnaBridge 171:3a7713b1edbc 82 */
AnnaBridge 171:3a7713b1edbc 83 uint32_t DualTimer_Read_1(uint32_t timer);
AnnaBridge 171:3a7713b1edbc 84
AnnaBridge 171:3a7713b1edbc 85 /*
AnnaBridge 171:3a7713b1edbc 86 * DualTimer_Read_2(): provides single timer 2 VALUE
AnnaBridge 171:3a7713b1edbc 87 * timer: timer to be read
AnnaBridge 171:3a7713b1edbc 88 * @return: timer VALUE us
AnnaBridge 171:3a7713b1edbc 89 */
AnnaBridge 171:3a7713b1edbc 90 uint32_t DualTimer_Read_2(uint32_t timer);
AnnaBridge 171:3a7713b1edbc 91
AnnaBridge 171:3a7713b1edbc 92 /*
AnnaBridge 171:3a7713b1edbc 93 * DualTimer_SetInterrupt_1(): sets timer 1 Interrupt
AnnaBridge 171:3a7713b1edbc 94 * timer: timer on which interrupt is set
AnnaBridge 171:3a7713b1edbc 95 * time_us: reloading value us
AnnaBridge 171:3a7713b1edbc 96 * mode: enable mode
AnnaBridge 171:3a7713b1edbc 97 */
AnnaBridge 171:3a7713b1edbc 98 void DualTimer_SetInterrupt_1(uint32_t timer, uint32_t time_us,
AnnaBridge 171:3a7713b1edbc 99 timerenable_t mode);
AnnaBridge 171:3a7713b1edbc 100
AnnaBridge 171:3a7713b1edbc 101 /*
AnnaBridge 171:3a7713b1edbc 102 * DualTimer_SetInterrupt_2(): sets timer 2 Interrupt
AnnaBridge 171:3a7713b1edbc 103 * timer: timer on which interrupt is set
AnnaBridge 171:3a7713b1edbc 104 * time_us: reloading value us
AnnaBridge 171:3a7713b1edbc 105 * mode: enable mode
AnnaBridge 171:3a7713b1edbc 106 */
AnnaBridge 171:3a7713b1edbc 107 void DualTimer_SetInterrupt_2(uint32_t timer, uint32_t time_us,
AnnaBridge 171:3a7713b1edbc 108 timerenable_t mode);
AnnaBridge 171:3a7713b1edbc 109
AnnaBridge 171:3a7713b1edbc 110 /*
AnnaBridge 171:3a7713b1edbc 111 * DualTimer_DisableInterrupt(): disables timer interrupts
AnnaBridge 171:3a7713b1edbc 112 * dualimer: dualtimer on which interrupt is disabled
AnnaBridge 171:3a7713b1edbc 113 * single_timer: single timer in the dualtimer on which
AnnaBridge 171:3a7713b1edbc 114 * interrupt is disabled
AnnaBridge 171:3a7713b1edbc 115 */
AnnaBridge 171:3a7713b1edbc 116 void DualTimer_DisableInterrupt(uint32_t dualtimer,
AnnaBridge 171:3a7713b1edbc 117 uint32_t single_timer);
AnnaBridge 171:3a7713b1edbc 118
AnnaBridge 171:3a7713b1edbc 119 /*
AnnaBridge 171:3a7713b1edbc 120 * DualTimer_ClearInterrupt(): clear timer interrupt
AnnaBridge 171:3a7713b1edbc 121 * timer: timer on which interrupt needs to be cleared
AnnaBridge 171:3a7713b1edbc 122 */
AnnaBridge 171:3a7713b1edbc 123 void DualTimer_ClearInterrupt(uint32_t timer);
AnnaBridge 171:3a7713b1edbc 124
AnnaBridge 171:3a7713b1edbc 125 /*
AnnaBridge 171:3a7713b1edbc 126 * DualTimer_GetIRQn(): returns IRQn of a DualTimer
AnnaBridge 171:3a7713b1edbc 127 * timer: timer on which IRQn is defined - 0 if it is not defined
AnnaBridge 171:3a7713b1edbc 128 */
AnnaBridge 171:3a7713b1edbc 129 uint32_t DualTimer_GetIRQn(uint32_t timer);
AnnaBridge 171:3a7713b1edbc 130
AnnaBridge 171:3a7713b1edbc 131 /*
AnnaBridge 171:3a7713b1edbc 132 * DualTimer_GetIRQInfo(): provides the single timer who caused
AnnaBridge 171:3a7713b1edbc 133 * the interrupt.
AnnaBridge 171:3a7713b1edbc 134 * timer: dualtimer that triggered the IRQ
AnnaBridge 171:3a7713b1edbc 135 * @return: a single timer
AnnaBridge 171:3a7713b1edbc 136 */
AnnaBridge 171:3a7713b1edbc 137 uint32_t DualTimer_GetIRQInfo(uint32_t dualtimer);
AnnaBridge 171:3a7713b1edbc 138
AnnaBridge 171:3a7713b1edbc 139 /*
AnnaBridge 171:3a7713b1edbc 140 * DualTimer_GetTicksUS(): returns the Ticks per us
AnnaBridge 171:3a7713b1edbc 141 * timer: timer associated with the Ticks per us
AnnaBridge 171:3a7713b1edbc 142 * @return: Ticks per us - 0 if the timer is disables
AnnaBridge 171:3a7713b1edbc 143 */
AnnaBridge 171:3a7713b1edbc 144 uint32_t DualTimer_GetTicksUS(uint32_t timer);
AnnaBridge 171:3a7713b1edbc 145
AnnaBridge 171:3a7713b1edbc 146 /*
AnnaBridge 171:3a7713b1edbc 147 * DualTimer_GetReloadValue(): returns the load value of the selected
AnnaBridge 171:3a7713b1edbc 148 * singletimer.
AnnaBridge 171:3a7713b1edbc 149 * timer: timer associated with the Ticks per us
AnnaBridge 171:3a7713b1edbc 150 * singletimer: selected singletimer
AnnaBridge 171:3a7713b1edbc 151 * @return: reload value of the selected singletimer
AnnaBridge 171:3a7713b1edbc 152 */
AnnaBridge 171:3a7713b1edbc 153 uint32_t DualTimer_GetReloadValue(uint32_t timer, uint32_t singletimer);
AnnaBridge 171:3a7713b1edbc 154
AnnaBridge 171:3a7713b1edbc 155 #ifdef __cplusplus
AnnaBridge 171:3a7713b1edbc 156 }
AnnaBridge 171:3a7713b1edbc 157 #endif
AnnaBridge 171:3a7713b1edbc 158 #endif /* _APB_DUAL_TIMER_DRV_H */