MAX32665 Peripheral Driver API
Peripheral Driver API for the MAX32665
tmr.h
1 
6 /* ****************************************************************************
7  * Copyright (C) 2016 Maxim Integrated Products, Inc., All Rights Reserved.
8  *
9  * Permission is hereby granted, free of charge, to any person obtaining a
10  * copy of this software and associated documentation files (the "Software"),
11  * to deal in the Software without restriction, including without limitation
12  * the rights to use, copy, modify, merge, publish, distribute, sublicense,
13  * and/or sell copies of the Software, and to permit persons to whom the
14  * Software is furnished to do so, subject to the following conditions:
15  *
16  * The above copyright notice and this permission notice shall be included
17  * in all copies or substantial portions of the Software.
18  *
19  * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS
20  * OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
21  * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.
22  * IN NO EVENT SHALL MAXIM INTEGRATED BE LIABLE FOR ANY CLAIM, DAMAGES
23  * OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE,
24  * ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR
25  * OTHER DEALINGS IN THE SOFTWARE.
26  *
27  * Except as contained in this notice, the name of Maxim Integrated
28  * Products, Inc. shall not be used except as stated in the Maxim Integrated
29  * Products, Inc. Branding Policy.
30  *
31  * The mere transfer of this software does not imply any licenses
32  * of trade secrets, proprietary technology, copyrights, patents,
33  * trademarks, maskwork rights, or any other form of intellectual
34  * property whatsoever. Maxim Integrated Products, Inc. retains all
35  * ownership rights.
36  *
37  *************************************************************************** */
38 
39 /* Define to prevent redundant inclusion */
40 #ifndef _TMR_H_
41 #define _TMR_H_
42 
43 /* **** Includes **** */
44 #include "mxc_device.h"
45 #include "tmr_regs.h"
46 #include "mxc_sys.h"
47 #include "gcr_regs.h"
48 #include "mxc_delay.h"
49 
50 #ifdef __cplusplus
51 extern "C" {
52 #endif
53 
63 typedef enum {
78 
82 typedef enum {
92 
96 typedef enum {
102 
106 typedef struct {
109  uint32_t cmp_cnt;
110  unsigned pol;
111 } mxc_tmr_cfg_t;
112 
113 /* **** Definitions **** */
114 typedef void (*mxc_tmr_complete_t) (int error);
115 
116 /* **** Function Prototypes **** */
117 
124 
130 
136 
142 
150 int MXC_TMR_SetPWM (mxc_tmr_regs_t* tmr, uint32_t pwm);
151 
158 
165 
172 
178 
185 
192 
199 
206 void MXC_TMR_SetCompare (mxc_tmr_regs_t *tmr, uint32_t cmp_cnt);
207 
213 void MXC_TMR_SetCount (mxc_tmr_regs_t *tmr, uint32_t cnt);
214 
221 void MXC_TMR_Delay (mxc_tmr_regs_t *tmr, unsigned long us);
222 
229 void MXC_TMR_TO_Start (mxc_tmr_regs_t *tmr, unsigned long us);
230 
239 
246 
253 
261 unsigned int MXC_TMR_TO_Elapsed (mxc_tmr_regs_t *tmr);
262 
271 
278 
286 unsigned int MXC_TMR_SW_Stop (mxc_tmr_regs_t *tmr);
287 
298 int MXC_TMR_GetTime (mxc_tmr_regs_t *tmr, uint32_t ticks, uint32_t *time, mxc_tmr_unit_t *units);
299 
302 #ifdef __cplusplus
303 }
304 #endif
305 
306 #endif /* _TMR_H_ */
MXC_V_TMR_CN_TMODE_ONESHOT
#define MXC_V_TMR_CN_TMODE_ONESHOT
Definition: tmr_regs.h:132
TMR_MODE_ONESHOT
@ TMR_MODE_ONESHOT
Timer Mode ONESHOT.
Definition: tmr.h:83
MXC_V_TMR_CN_TMODE_CONTINUOUS
#define MXC_V_TMR_CN_TMODE_CONTINUOUS
Definition: tmr_regs.h:134
MXC_S_TMR_CN_PRES_DIV8
#define MXC_S_TMR_CN_PRES_DIV8
Definition: tmr_regs.h:158
MXC_S_TMR_CN_PRES_DIV128
#define MXC_S_TMR_CN_PRES_DIV128
Definition: tmr_regs.h:166
MXC_TMR_GetCompare
uint32_t MXC_TMR_GetCompare(mxc_tmr_regs_t *tmr)
Get the timer compare count.
mxc_tmr_cfg_t::pres
mxc_tmr_pres_t pres
Desired timer prescaler.
Definition: tmr.h:107
MXC_TMR_ClearFlags
void MXC_TMR_ClearFlags(mxc_tmr_regs_t *tmr)
Clear the timer interrupt.
MXC_TMR_GetFlags
uint32_t MXC_TMR_GetFlags(mxc_tmr_regs_t *tmr)
Get the timer interrupt status.
TMR_PRES_16
@ TMR_PRES_16
Divide input clock by 16.
Definition: tmr.h:68
TMR_MODE_PWM
@ TMR_MODE_PWM
Timer Mode PWM.
Definition: tmr.h:86
MXC_V_TMR_CN_TMODE_PWM
#define MXC_V_TMR_CN_TMODE_PWM
Definition: tmr_regs.h:138
MXC_F_TMR_CN_PRES3
#define MXC_F_TMR_CN_PRES3
Definition: tmr_regs.h:175
MXC_V_TMR_CN_TMODE_GATED
#define MXC_V_TMR_CN_TMODE_GATED
Definition: tmr_regs.h:144
TMR_PRES_256
@ TMR_PRES_256
Divide input clock by 256.
Definition: tmr.h:72
MXC_TMR_TO_Check
int MXC_TMR_TO_Check(mxc_tmr_regs_t *tmr)
Check on time out timer.
MXC_TMR_SW_Stop
unsigned int MXC_TMR_SW_Stop(mxc_tmr_regs_t *tmr)
Stopwatch stop.
TMR_MODE_CAPTURE_COMPARE
@ TMR_MODE_CAPTURE_COMPARE
Timer Mode CAPTURECOMPARE.
Definition: tmr.h:90
mxc_tmr_cfg_t::pol
unsigned pol
Polarity (0 or 1)
Definition: tmr.h:110
MXC_TMR_Shutdown
void MXC_TMR_Shutdown(mxc_tmr_regs_t *tmr)
Shutdown timer module clock.
TMR_MODE_COUNTER
@ TMR_MODE_COUNTER
Timer Mode COUNTER.
Definition: tmr.h:85
MXC_V_TMR_CN_TMODE_CAPTURE
#define MXC_V_TMR_CN_TMODE_CAPTURE
Definition: tmr_regs.h:140
TMR_PRES_4096
@ TMR_PRES_4096
Divide input clock by 4096.
Definition: tmr.h:76
TMR_PRES_64
@ TMR_PRES_64
Divide input clock by 64.
Definition: tmr.h:70
mxc_tmr_cfg_t::mode
mxc_tmr_mode_t mode
Desired timer mode.
Definition: tmr.h:108
MXC_TMR_SetCompare
void MXC_TMR_SetCompare(mxc_tmr_regs_t *tmr, uint32_t cmp_cnt)
Set the timer compare count.
TMR_PRES_2
@ TMR_PRES_2
Divide input clock by 2.
Definition: tmr.h:65
TMR_UNIT_MICROSEC
@ TMR_UNIT_MICROSEC
Microsecond Unit Indicator.
Definition: tmr.h:98
TMR_PRES_8
@ TMR_PRES_8
Divide input clock by 8.
Definition: tmr.h:67
MXC_V_TMR_CN_TMODE_CAPTURECOMPARE
#define MXC_V_TMR_CN_TMODE_CAPTURECOMPARE
Definition: tmr_regs.h:146
TMR_UNIT_SEC
@ TMR_UNIT_SEC
Second Unit Indicator.
Definition: tmr.h:100
MXC_TMR_TO_Start
void MXC_TMR_TO_Start(mxc_tmr_regs_t *tmr, unsigned long us)
Start a timer that will time out after a certain number of microseconds.
TMR_MODE_CAPTURE
@ TMR_MODE_CAPTURE
Timer Mode CAPTURE.
Definition: tmr.h:87
TMR_PRES_2048
@ TMR_PRES_2048
Divide input clock by 2048.
Definition: tmr.h:75
TMR_UNIT_MILLISEC
@ TMR_UNIT_MILLISEC
Millisecond Unit Indicator.
Definition: tmr.h:99
mxc_tmr_mode_t
mxc_tmr_mode_t
Timer modes.
Definition: tmr.h:82
MXC_TMR_Init
void MXC_TMR_Init(mxc_tmr_regs_t *tmr, mxc_tmr_cfg_t *cfg)
Initialize timer module clock.
MXC_S_TMR_CN_PRES_DIV4
#define MXC_S_TMR_CN_PRES_DIV4
Definition: tmr_regs.h:156
TMR_PRES_512
@ TMR_PRES_512
Divide input clock by 512.
Definition: tmr.h:73
MXC_V_TMR_CN_TMODE_COUNTER
#define MXC_V_TMR_CN_TMODE_COUNTER
Definition: tmr_regs.h:136
TMR_PRES_4
@ TMR_PRES_4
Divide input clock by 4.
Definition: tmr.h:66
MXC_TMR_EnableInt
void MXC_TMR_EnableInt(mxc_tmr_regs_t *tmr)
enable interupt
MXC_TMR_TO_Elapsed
unsigned int MXC_TMR_TO_Elapsed(mxc_tmr_regs_t *tmr)
Get elapsed time of timeout timer.
mxc_tmr_pres_t
mxc_tmr_pres_t
Timer prescaler values.
Definition: tmr.h:63
MXC_S_TMR_CN_PRES_DIV16
#define MXC_S_TMR_CN_PRES_DIV16
Definition: tmr_regs.h:160
TMR_MODE_CONTINUOUS
@ TMR_MODE_CONTINUOUS
Timer Mode CONTINUOUS.
Definition: tmr.h:84
mxc_tmr_cfg_t
Timer Configuration.
Definition: tmr.h:106
mxc_tmr_cfg_t::cmp_cnt
uint32_t cmp_cnt
Compare register value in timer ticks.
Definition: tmr.h:109
MXC_S_TMR_CN_PRES_DIV32
#define MXC_S_TMR_CN_PRES_DIV32
Definition: tmr_regs.h:162
MXC_S_TMR_CN_PRES_DIV64
#define MXC_S_TMR_CN_PRES_DIV64
Definition: tmr_regs.h:164
MXC_TMR_Delay
void MXC_TMR_Delay(mxc_tmr_regs_t *tmr, unsigned long us)
Dealay for a set periord of time measured in microseconds.
TMR_PRES_128
@ TMR_PRES_128
Divide input clock by 128.
Definition: tmr.h:71
MXC_TMR_SetCount
void MXC_TMR_SetCount(mxc_tmr_regs_t *tmr, uint32_t cnt)
Set the timer count.
MXC_TMR_TO_Stop
void MXC_TMR_TO_Stop(mxc_tmr_regs_t *tmr)
Stop the Timeout timer.
TMR_UNIT_NANOSEC
@ TMR_UNIT_NANOSEC
Nanosecond Unit Indicator.
Definition: tmr.h:97
TMR_PRES_1
@ TMR_PRES_1
Divide input clock by 1.
Definition: tmr.h:64
MXC_TMR_SW_Start
void MXC_TMR_SW_Start(mxc_tmr_regs_t *tmr)
Start stopwatch.
MXC_TMR_Start
void MXC_TMR_Start(mxc_tmr_regs_t *tmr)
Start the timer counting.
MXC_TMR_TO_Remaining
unsigned int MXC_TMR_TO_Remaining(mxc_tmr_regs_t *tmr)
Amount of time remaining until timeour.
mxc_tmr_regs_t
Definition: tmr_regs.h:88
MXC_TMR_GetCapture
uint32_t MXC_TMR_GetCapture(mxc_tmr_regs_t *tmr)
Get the timer capture count.
MXC_TMR_TO_Clear
void MXC_TMR_TO_Clear(mxc_tmr_regs_t *tmr)
Clear timeout timer back to zero.
TMR_MODE_GATED
@ TMR_MODE_GATED
Timer Mode GATED.
Definition: tmr.h:89
TMR_PRES_32
@ TMR_PRES_32
Divide input clock by 32.
Definition: tmr.h:69
MXC_S_TMR_CN_PRES_DIV2
#define MXC_S_TMR_CN_PRES_DIV2
Definition: tmr_regs.h:154
MXC_TMR_DisableInt
void MXC_TMR_DisableInt(mxc_tmr_regs_t *tmr)
disable interupt
TMR_PRES_1024
@ TMR_PRES_1024
Divide input clock by 1024.
Definition: tmr.h:74
TMR_MODE_COMPARE
@ TMR_MODE_COMPARE
Timer Mode COMPARE.
Definition: tmr.h:88
MXC_TMR_SetPWM
int MXC_TMR_SetPWM(mxc_tmr_regs_t *tmr, uint32_t pwm)
Set the value of the first transition in PWM mode.
mxc_tmr_unit_t
mxc_tmr_unit_t
Timer units of time enumeration.
Definition: tmr.h:96
MXC_TMR_GetTime
int MXC_TMR_GetTime(mxc_tmr_regs_t *tmr, uint32_t ticks, uint32_t *time, mxc_tmr_unit_t *units)
Get time from timer.
MXC_V_TMR_CN_TMODE_COMPARE
#define MXC_V_TMR_CN_TMODE_COMPARE
Definition: tmr_regs.h:142
MXC_S_TMR_CN_PRES_DIV1
#define MXC_S_TMR_CN_PRES_DIV1
Definition: tmr_regs.h:152
MXC_TMR_Stop
void MXC_TMR_Stop(mxc_tmr_regs_t *tmr)
Stop the timer.
MXC_TMR_GetCount
uint32_t MXC_TMR_GetCount(mxc_tmr_regs_t *tmr)
Get the timer count.