1 //###########################################################################
2 //
3 // FILE:   F2837xD_Cputimers.h
4 //
5 // TITLE:  F2837xD Device CPUTIMERS Register Definitions.
6 //
7 //###########################################################################
8 // $TI Release: F2837xD Support Library v3.05.00.00 $
9 // $Release Date: Tue Jun 26 03:15:23 CDT 2018 $
10 // $Copyright:
11 // Copyright (C) 2013-2018 Texas Instruments Incorporated - http://www.ti.com/
12 //
13 // Redistribution and use in source and binary forms, with or without
14 // modification, are permitted provided that the following conditions
15 // are met:
16 //
17 //   Redistributions of source code must retain the above copyright
18 //   notice, this list of conditions and the following disclaimer.
19 //
20 //   Redistributions in binary form must reproduce the above copyright
21 //   notice, this list of conditions and the following disclaimer in the
22 //   documentation and/or other materials provided with the
23 //   distribution.
24 //
25 //   Neither the name of Texas Instruments Incorporated nor the names of
26 //   its contributors may be used to endorse or promote products derived
27 //   from this software without specific prior written permission.
28 //
29 // THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
30 // "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
31 // LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
32 // A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
33 // OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
34 // SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
35 // LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
36 // DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
37 // THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
38 // (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
39 // OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
40 // $
41 //###########################################################################
42 
43 #ifndef F2837xD_CPUTIMERVARS_H
44 #define F2837xD_CPUTIMERVARS_H
45 
46 #ifdef __cplusplus
47 extern "C" {
48 #endif
49 
50 //
51 // Globals
52 //
53 struct CPUTIMER_VARS {
54    volatile struct  CPUTIMER_REGS  *RegsAddr;
55    Uint32    InterruptCount;
56    float   CPUFreqInMHz;
57    float   PeriodInUSec;
58 };
59 
60 extern struct CPUTIMER_VARS CpuTimer0;
61 extern struct CPUTIMER_VARS CpuTimer1;
62 extern struct CPUTIMER_VARS CpuTimer2;
63 
64 //
65 // Defines
66 //
67 
68 //
69 // Start Timer:
70 //
71 #define StartCpuTimer0()   CpuTimer0Regs.TCR.bit.TSS = 0
72 
73 //
74 // Stop Timer:
75 //
76 #define StopCpuTimer0()   CpuTimer0Regs.TCR.bit.TSS = 1
77 
78 //
79 // Reload Timer With period Value:
80 //
81 #define ReloadCpuTimer0() CpuTimer0Regs.TCR.bit.TRB = 1
82 
83 //
84 // Read 32-Bit Timer Value:
85 //
86 #define ReadCpuTimer0Counter() CpuTimer0Regs.TIM.all
87 
88 //
89 // Read 32-Bit Period Value:
90 //
91 #define ReadCpuTimer0Period() CpuTimer0Regs.PRD.all
92 
93 //
94 // Start Timer:
95 //
96 #define StartCpuTimer1()   CpuTimer1Regs.TCR.bit.TSS = 0
97 #define StartCpuTimer2()   CpuTimer2Regs.TCR.bit.TSS = 0
98 
99 //
100 // Stop Timer:
101 //
102 #define StopCpuTimer1()   CpuTimer1Regs.TCR.bit.TSS = 1
103 #define StopCpuTimer2()   CpuTimer2Regs.TCR.bit.TSS = 1
104 
105 //
106 // Reload Timer With period Value:
107 //
108 #define ReloadCpuTimer1() CpuTimer1Regs.TCR.bit.TRB = 1
109 #define ReloadCpuTimer2() CpuTimer2Regs.TCR.bit.TRB = 1
110 
111 //
112 // Read 32-Bit Timer Value:
113 //
114 #define ReadCpuTimer1Counter() CpuTimer1Regs.TIM.all
115 #define ReadCpuTimer2Counter() CpuTimer2Regs.TIM.all
116 
117 //
118 // Read 32-Bit Period Value:
119 //
120 #define ReadCpuTimer1Period() CpuTimer1Regs.PRD.all
121 #define ReadCpuTimer2Period() CpuTimer2Regs.PRD.all
122 
123 //
124 // Function Prototypes
125 //
126 void InitCpuTimers(void);
127 void ConfigCpuTimer(struct CPUTIMER_VARS *Timer, float Freq, float Period);
128 
129 #ifdef __cplusplus
130 }
131 #endif /* extern "C" */
132 
133 
134 #endif  // end of F2837xD_CPUTIMERVARS_H definition
135 
136 //
137 // End of file
138 //
139