Important changes to repositories hosted on mbed.com
Mbed hosted mercurial repositories are deprecated and are due to be permanently deleted in July 2026.
To keep a copy of this software download the repository Zip archive or clone locally using Mercurial.
It is also possible to export all your personal repositories from the account settings page.
Dependents: hello SerialTestv11 SerialTestv12 Sierpinski ... more
TARGET_ARM_BEETLE_SOC/TOOLCHAIN_IAR/apb_dualtimer.h@172:65be27845400, 2019-02-20 (annotated)
- 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?
| User | Revision | Line number | New 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 */ | 


