MSP430 DriverLib for MSP430FR2xx_4xx Devices  2.91.13.01
rom_driverlib_fr2676.h
1 //*****************************************************************************
2 //
3 // rom_driverlib_fr2676.h
4 // Macros to facilitate calling functions in the ROM for
5 // MSP430FR2676, MSP430FR2675, MSP430FR2673, MSP430FR2672
6 //
7 // Copyright (c) 2018 Texas Instruments Incorporated. All rights reserved.
8 // TI Information - Selective Disclosure
9 //
10 //*****************************************************************************
11 
12 #if defined(__TI_COMPILER_VERSION__)
13 #if __TI_COMPILER_VERSION__ >= 18001001
14 #define __cc_rom __attribute__((call_conv("cc_rom")))
15 #else
16 #error "The cc_rom attribute requires MSP TI COMPILER 18.1.1.LTS or more recent."
17 #endif // __TI_COMPILER_VERSION__ >=
18 #endif // (defined(__TI_COMPILER_VERSION__))18001001
19 
20 #if __REGISTER_R4__ != __REGISTER_FREE__
21 #error "Incorrect setting for R4, expected it to be free."
22 #endif
23 
24 #if __REGISTER_R5__ != __REGISTER_FREE__
25 #error "Incorrect setting for R5, expected it to be free."
26 #endif
27 
28 // Suppress type conversion warning
29 #ifdef __TI_COMPILER_VERSION__
30 #pragma diag_suppress 173
31 #endif
32 
33 #if (defined(__TI_COMPILER_VERSION__) && !defined(__LARGE_DATA_MODEL__)) || \
34 (defined(__IAR_SYSTEMS_ICC__) && (__DATA_MODEL__!=__DATA_MODEL_LARGE__))
35 #error "Only large data model supported for this ROM."
36 #endif
37 
38 #ifndef __ROM_DRIVERLIB_H__
39 #define __ROM_DRIVERLIB_H__
40 
41 #if (defined(__TI_COMPILER_VERSION__) && defined(__LARGE_CODE_MODEL__)) || \
42  (defined(__IAR_SYSTEMS_ICC__) && (__CODE_MODEL__==__CODE_MODEL_LARGE__))
43 //*****************************************************************************
44 //
45 // Pointer to the main API tables.
46 //
47 //*****************************************************************************
48 #ifndef ROM_TABLE
49 #define ROM_TABLE ((uint32_t *)ROMLIB_START)
50 #endif
51 #define ROM_DRIVERLIB_APITABLE ((uint32_t *)ROM_TABLE[1])
52 #define ROM_DRIVERLIB_VERSION ((uint32_t)ROM_DRIVERLIB_APITABLE[0])
53 #define ROM_CSTABLE ((uint32_t *)(ROM_DRIVERLIB_APITABLE[1]))
54 #define ROM_EUSCI_A_SPITABLE ((uint32_t *)(ROM_DRIVERLIB_APITABLE[2]))
55 #define ROM_EUSCI_A_UARTTABLE ((uint32_t *)(ROM_DRIVERLIB_APITABLE[3]))
56 #define ROM_EUSCI_B_I2CTABLE ((uint32_t *)(ROM_DRIVERLIB_APITABLE[4]))
57 #define ROM_EUSCI_B_SPITABLE ((uint32_t *)(ROM_DRIVERLIB_APITABLE[5]))
58 #define ROM_GPIOTABLE ((uint32_t *)(ROM_DRIVERLIB_APITABLE[6]))
59 #define ROM_PMMTABLE ((uint32_t *)(ROM_DRIVERLIB_APITABLE[7]))
60 #define ROM_SFRTABLE ((uint32_t *)(ROM_DRIVERLIB_APITABLE[8]))
61 #define ROM_SYSCTLTABLE ((uint32_t *)(ROM_DRIVERLIB_APITABLE[9]))
62 #define ROM_TIMER_BTABLE ((uint32_t *)(ROM_DRIVERLIB_APITABLE[10]))
63 #define ROM_WDT_ATABLE ((uint32_t *)(ROM_DRIVERLIB_APITABLE[11]))
64 
65 #define ROM_DRIVERLIB_getVersion() ((uint32_t)(ROM_DRIVERLIB_VERSION))
66 #ifndef ROM_getVersion
67 #define ROM_getVersion() ((uint32_t)(ROMLIB_START[0]))
68 #endif
69 //*****************************************************************************
70 //
71 // Macros for calling ROM functions in the CS API.
72 //
73 //*****************************************************************************
74 #define ROM_CS_initClockSignal \
75  ((void (__cc_rom *)( uint8_t selectedClockSignal, \
76  uint16_t clockSource, \
77  uint16_t clockSourceDivider))ROM_CSTABLE[0])
78 #define ROM_CS_turnOnXT1LF \
79  ((void (__cc_rom *)( uint16_t xt1Drive))ROM_CSTABLE[1])
80 #define ROM_CS_bypassXT1 \
81  ((void (__cc_rom *)( void))ROM_CSTABLE[2])
82 #define ROM_CS_turnOnXT1LFWithTimeout \
83  ((bool (__cc_rom *)( uint16_t xt1Drive, \
84  uint16_t timeout))ROM_CSTABLE[3])
85 #define ROM_CS_bypassXT1WithTimeout \
86  ((bool (__cc_rom *)( uint16_t timeout))ROM_CSTABLE[4])
87 #define ROM_CS_turnOffXT1 \
88  ((void (__cc_rom *)( void))ROM_CSTABLE[5])
89 #define ROM_CS_turnOnXT1HF \
90  ((void (__cc_rom *)( uint16_t xt1Drive, \
91  uint16_t xt1HFFreq))ROM_CSTABLE[6])
92 #define ROM_CS_turnOnXT1HFWithTimeout \
93  ((bool (__cc_rom *)( uint16_t xt1Drive, \
94  uint16_t xt1HFFreq, \
95  uint16_t timeout))ROM_CSTABLE[7])
96 #define ROM_CS_turnOnSMCLK \
97  ((void (__cc_rom *)( void))ROM_CSTABLE[8])
98 #define ROM_CS_turnOffSMCLK \
99  ((void (__cc_rom *)( void))ROM_CSTABLE[9])
100 #define ROM_CS_enableVLOAutoOff \
101  ((void (__cc_rom *)( void))ROM_CSTABLE[10])
102 #define ROM_CS_disableVLOAutoOff \
103  ((void (__cc_rom *)( void))ROM_CSTABLE[11])
104 #define ROM_CS_initFLLSettle \
105  ((bool (__cc_rom *)( uint16_t fsystem, \
106  uint16_t ratio))ROM_CSTABLE[12])
107 /* Removed due to bug fix for MSPDVRLIB-185
108 #define ROM_CS_initFLL \
109  ((bool (__cc_rom *)( uint16_t fsystem, \
110  uint16_t ratio))ROM_CSTABLE[13])
111 */
112 /* Removed due to bug fix for MSPDVRLIB-185
113 #define ROM_CS_initFLLLoadTrim \
114  ((bool (__cc_rom *)( uint16_t fsystem, \
115  uint16_t ratio, \
116  CS_initFLLParam *param))ROM_CSTABLE[14])
117 */
118 #define ROM_CS_enableClockRequest \
119  ((void (__cc_rom *)( uint8_t selectClock))ROM_CSTABLE[15])
120 #define ROM_CS_disableClockRequest \
121  ((void (__cc_rom *)( uint8_t selectClock))ROM_CSTABLE[16])
122 #define ROM_CS_getFaultFlagStatus \
123  ((uint8_t (__cc_rom *)( uint8_t mask))ROM_CSTABLE[17])
124 #define ROM_CS_clearFaultFlag \
125  ((void (__cc_rom *)( uint8_t mask))ROM_CSTABLE[18])
126 #define ROM_CS_clearAllOscFlagsWithTimeout \
127  ((uint16_t (__cc_rom *)( uint16_t timeout))ROM_CSTABLE[19])
128 #define ROM_CS_enableXT1AutomaticGainControl \
129  ((void (__cc_rom *)( void))ROM_CSTABLE[20])
130 #define ROM_CS_disableXT1AutomaticGainControl \
131  ((void (__cc_rom *)( void))ROM_CSTABLE[21])
132 #define ROM_CS_enableFLLUnlock \
133  ((void (__cc_rom *)( void))ROM_CSTABLE[22])
134 #define ROM_CS_disableFLLUnlock \
135  ((void (__cc_rom *)( void))ROM_CSTABLE[23])
136 #define ROM_CS_enableREFOLP \
137  ((void (__cc_rom *)( void))ROM_CSTABLE[24])
138 #define ROM_CS_disableREFOLP \
139  ((void (__cc_rom *)( void))ROM_CSTABLE[25])
140 #define ROM_CS_getREFOLP \
141  ((bool (__cc_rom *)( void))ROM_CSTABLE[26])
142 #define ROM_CS_enableXT1FaultOff \
143  ((void (__cc_rom *)( void))ROM_CSTABLE[27])
144 #define ROM_CS_disableXT1FaultOff \
145  ((void (__cc_rom *)( void))ROM_CSTABLE[28])
146 #define ROM_CS_getXT1FaultOff \
147  ((bool (__cc_rom *)( void))ROM_CSTABLE[29])
148 #define ROM_CS_getREFOReady \
149  ((bool (__cc_rom *)( void))ROM_CSTABLE[30])
150 
151 //*****************************************************************************
152 //
153 // Macros for calling ROM functions in the EUSCI_A_SPI API.
154 //
155 //*****************************************************************************
156 #define ROM_EUSCI_A_SPI_initMaster \
157  ((void (__cc_rom *)( uint16_t baseAddress, \
158  EUSCI_A_SPI_initMasterParam *param))ROM_EUSCI_A_SPITABLE[0])
159 #define ROM_EUSCI_A_SPI_select4PinFunctionality \
160  ((void (__cc_rom *)( uint16_t baseAddress, \
161  uint8_t select4PinFunctionality))ROM_EUSCI_A_SPITABLE[1])
162 #define ROM_EUSCI_A_SPI_changeMasterClock \
163  ((void (__cc_rom *)( uint16_t baseAddress, \
164  EUSCI_A_SPI_changeMasterClockParam *param))ROM_EUSCI_A_SPITABLE[2])
165 #define ROM_EUSCI_A_SPI_initSlave \
166  ((void (__cc_rom *)( uint16_t baseAddress, \
167  EUSCI_A_SPI_initSlaveParam *param))ROM_EUSCI_A_SPITABLE[3])
168 #define ROM_EUSCI_A_SPI_changeClockPhasePolarity \
169  ((void (__cc_rom *)( uint16_t baseAddress, \
170  uint16_t clockPhase, \
171  uint16_t clockPolarity))ROM_EUSCI_A_SPITABLE[4])
172 #define ROM_EUSCI_A_SPI_transmitData \
173  ((void (__cc_rom *)( uint16_t baseAddress, \
174  uint8_t transmitData))ROM_EUSCI_A_SPITABLE[5])
175 #define ROM_EUSCI_A_SPI_receiveData \
176  ((uint8_t (__cc_rom *)( uint16_t baseAddress))ROM_EUSCI_A_SPITABLE[6])
177 #define ROM_EUSCI_A_SPI_enableInterrupt \
178  ((void (__cc_rom *)( uint16_t baseAddress, \
179  uint8_t mask))ROM_EUSCI_A_SPITABLE[7])
180 #define ROM_EUSCI_A_SPI_disableInterrupt \
181  ((void (__cc_rom *)( uint16_t baseAddress, \
182  uint8_t mask))ROM_EUSCI_A_SPITABLE[8])
183 #define ROM_EUSCI_A_SPI_getInterruptStatus \
184  ((uint8_t (__cc_rom *)( uint16_t baseAddress, \
185  uint8_t mask))ROM_EUSCI_A_SPITABLE[9])
186 #define ROM_EUSCI_A_SPI_clearInterrupt \
187  ((void (__cc_rom *)( uint16_t baseAddress, \
188  uint8_t mask))ROM_EUSCI_A_SPITABLE[10])
189 #define ROM_EUSCI_A_SPI_enable \
190  ((void (__cc_rom *)( uint16_t baseAddress))ROM_EUSCI_A_SPITABLE[11])
191 #define ROM_EUSCI_A_SPI_disable \
192  ((void (__cc_rom *)( uint16_t baseAddress))ROM_EUSCI_A_SPITABLE[12])
193 #define ROM_EUSCI_A_SPI_getReceiveBufferAddress \
194  ((uint32_t (__cc_rom *)( uint16_t baseAddress))ROM_EUSCI_A_SPITABLE[13])
195 #define ROM_EUSCI_A_SPI_getTransmitBufferAddress \
196  ((uint32_t (__cc_rom *)( uint16_t baseAddress))ROM_EUSCI_A_SPITABLE[14])
197 #define ROM_EUSCI_A_SPI_isBusy \
198  ((uint16_t (__cc_rom *)( uint16_t baseAddress))ROM_EUSCI_A_SPITABLE[15])
199 #define ROM_EUSCI_A_SPI_remapPins \
200  ((void (__cc_rom *)( uint16_t baseAddress, \
201  uint8_t pinsSelect))ROM_EUSCI_A_SPITABLE[16])
202 
203 //*****************************************************************************
204 //
205 // Macros for calling ROM functions in the EUSCI_A_UART API.
206 //
207 //*****************************************************************************
208 #define ROM_EUSCI_A_UART_init \
209  ((bool (__cc_rom *)( uint16_t baseAddress, \
210  EUSCI_A_UART_initParam *param))ROM_EUSCI_A_UARTTABLE[0])
211 #define ROM_EUSCI_A_UART_transmitData \
212  ((void (__cc_rom *)( uint16_t baseAddress, \
213  uint8_t transmitData))ROM_EUSCI_A_UARTTABLE[1])
214 #define ROM_EUSCI_A_UART_receiveData \
215  ((uint8_t (__cc_rom *)( uint16_t baseAddress))ROM_EUSCI_A_UARTTABLE[2])
216 #define ROM_EUSCI_A_UART_enableInterrupt \
217  ((void (__cc_rom *)( uint16_t baseAddress, \
218  uint8_t mask))ROM_EUSCI_A_UARTTABLE[3])
219 #define ROM_EUSCI_A_UART_disableInterrupt \
220  ((void (__cc_rom *)( uint16_t baseAddress, \
221  uint8_t mask))ROM_EUSCI_A_UARTTABLE[4])
222 #define ROM_EUSCI_A_UART_getInterruptStatus \
223  ((uint8_t (__cc_rom *)( uint16_t baseAddress, \
224  uint8_t mask))ROM_EUSCI_A_UARTTABLE[5])
225 #define ROM_EUSCI_A_UART_clearInterrupt \
226  ((void (__cc_rom *)( uint16_t baseAddress, \
227  uint8_t mask))ROM_EUSCI_A_UARTTABLE[6])
228 #define ROM_EUSCI_A_UART_enable \
229  ((void (__cc_rom *)( uint16_t baseAddress))ROM_EUSCI_A_UARTTABLE[7])
230 #define ROM_EUSCI_A_UART_disable \
231  ((void (__cc_rom *)( uint16_t baseAddress))ROM_EUSCI_A_UARTTABLE[8])
232 #define ROM_EUSCI_A_UART_queryStatusFlags \
233  ((uint8_t (__cc_rom *)( uint16_t baseAddress, \
234  uint8_t mask))ROM_EUSCI_A_UARTTABLE[9])
235 #define ROM_EUSCI_A_UART_setDormant \
236  ((void (__cc_rom *)( uint16_t baseAddress))ROM_EUSCI_A_UARTTABLE[10])
237 #define ROM_EUSCI_A_UART_resetDormant \
238  ((void (__cc_rom *)( uint16_t baseAddress))ROM_EUSCI_A_UARTTABLE[11])
239 #define ROM_EUSCI_A_UART_transmitAddress \
240  ((void (__cc_rom *)( uint16_t baseAddress, \
241  uint8_t transmitAddress))ROM_EUSCI_A_UARTTABLE[12])
242 #define ROM_EUSCI_A_UART_transmitBreak \
243  ((void (__cc_rom *)( uint16_t baseAddress))ROM_EUSCI_A_UARTTABLE[13])
244 #define ROM_EUSCI_A_UART_getReceiveBufferAddress \
245  ((uint32_t (__cc_rom *)( uint16_t baseAddress))ROM_EUSCI_A_UARTTABLE[14])
246 #define ROM_EUSCI_A_UART_getTransmitBufferAddress \
247  ((uint32_t (__cc_rom *)( uint16_t baseAddress))ROM_EUSCI_A_UARTTABLE[15])
248 #define ROM_EUSCI_A_UART_selectDeglitchTime \
249  ((void (__cc_rom *)( uint16_t baseAddress, \
250  uint16_t deglitchTime))ROM_EUSCI_A_UARTTABLE[16])
251 #define ROM_EUSCI_A_UART_remapPins \
252  ((void (__cc_rom *)( uint16_t baseAddress, \
253  uint8_t pinsSelect))ROM_EUSCI_A_UARTTABLE[17])
254 
255 //*****************************************************************************
256 //
257 // Macros for calling ROM functions in the EUSCI_B_I2C API.
258 //
259 //*****************************************************************************
260 #define ROM_EUSCI_B_I2C_initMaster \
261  ((void (__cc_rom *)( uint16_t baseAddress, \
262  EUSCI_B_I2C_initMasterParam *param))ROM_EUSCI_B_I2CTABLE[0])
263 #define ROM_EUSCI_B_I2C_initSlave \
264  ((void (__cc_rom *)( uint16_t baseAddress, \
265  EUSCI_B_I2C_initSlaveParam *param))ROM_EUSCI_B_I2CTABLE[1])
266 #define ROM_EUSCI_B_I2C_enable \
267  ((void (__cc_rom *)( uint16_t baseAddress))ROM_EUSCI_B_I2CTABLE[2])
268 #define ROM_EUSCI_B_I2C_disable \
269  ((void (__cc_rom *)( uint16_t baseAddress))ROM_EUSCI_B_I2CTABLE[3])
270 #define ROM_EUSCI_B_I2C_setSlaveAddress \
271  ((void (__cc_rom *)( uint16_t baseAddress, \
272  uint8_t slaveAddress))ROM_EUSCI_B_I2CTABLE[4])
273 #define ROM_EUSCI_B_I2C_setMode \
274  ((void (__cc_rom *)( uint16_t baseAddress, \
275  uint8_t mode))ROM_EUSCI_B_I2CTABLE[5])
276 #define ROM_EUSCI_B_I2C_getMode \
277  ((uint8_t (__cc_rom *)( uint16_t baseAddress))ROM_EUSCI_B_I2CTABLE[6])
278 #define ROM_EUSCI_B_I2C_slavePutData \
279  ((void (__cc_rom *)( uint16_t baseAddress, \
280  uint8_t transmitData))ROM_EUSCI_B_I2CTABLE[7])
281 #define ROM_EUSCI_B_I2C_slaveGetData \
282  ((uint8_t (__cc_rom *)( uint16_t baseAddress))ROM_EUSCI_B_I2CTABLE[8])
283 #define ROM_EUSCI_B_I2C_isBusBusy \
284  ((uint16_t (__cc_rom *)( uint16_t baseAddress))ROM_EUSCI_B_I2CTABLE[9])
285 #define ROM_EUSCI_B_I2C_masterIsStopSent \
286  ((uint16_t (__cc_rom *)( uint16_t baseAddress))ROM_EUSCI_B_I2CTABLE[10])
287 #define ROM_EUSCI_B_I2C_masterIsStartSent \
288  ((uint16_t (__cc_rom *)( uint16_t baseAddress))ROM_EUSCI_B_I2CTABLE[11])
289 #define ROM_EUSCI_B_I2C_enableInterrupt \
290  ((void (__cc_rom *)( uint16_t baseAddress, \
291  uint16_t mask))ROM_EUSCI_B_I2CTABLE[12])
292 #define ROM_EUSCI_B_I2C_disableInterrupt \
293  ((void (__cc_rom *)( uint16_t baseAddress, \
294  uint16_t mask))ROM_EUSCI_B_I2CTABLE[13])
295 #define ROM_EUSCI_B_I2C_clearInterrupt \
296  ((void (__cc_rom *)( uint16_t baseAddress, \
297  uint16_t mask))ROM_EUSCI_B_I2CTABLE[14])
298 #define ROM_EUSCI_B_I2C_getInterruptStatus \
299  ((uint16_t (__cc_rom *)( uint16_t baseAddress, \
300  uint16_t mask))ROM_EUSCI_B_I2CTABLE[15])
301 #define ROM_EUSCI_B_I2C_masterSendSingleByte \
302  ((void (__cc_rom *)( uint16_t baseAddress, \
303  uint8_t txData))ROM_EUSCI_B_I2CTABLE[16])
304 #define ROM_EUSCI_B_I2C_masterReceiveSingleByte \
305  ((uint8_t (__cc_rom *)( uint16_t baseAddress))ROM_EUSCI_B_I2CTABLE[17])
306 #define ROM_EUSCI_B_I2C_masterSendSingleByteWithTimeout \
307  ((bool (__cc_rom *)( uint16_t baseAddress, \
308  uint8_t txData, \
309  uint32_t timeout))ROM_EUSCI_B_I2CTABLE[18])
310 #define ROM_EUSCI_B_I2C_masterSendMultiByteStart \
311  ((void (__cc_rom *)( uint16_t baseAddress, \
312  uint8_t txData))ROM_EUSCI_B_I2CTABLE[19])
313 #define ROM_EUSCI_B_I2C_masterSendMultiByteStartWithTimeout \
314  ((bool (__cc_rom *)( uint16_t baseAddress, \
315  uint8_t txData, \
316  uint32_t timeout))ROM_EUSCI_B_I2CTABLE[20])
317 #define ROM_EUSCI_B_I2C_masterSendMultiByteNext \
318  ((void (__cc_rom *)( uint16_t baseAddress, \
319  uint8_t txData))ROM_EUSCI_B_I2CTABLE[21])
320 #define ROM_EUSCI_B_I2C_masterSendMultiByteNextWithTimeout \
321  ((bool (__cc_rom *)( uint16_t baseAddress, \
322  uint8_t txData, \
323  uint32_t timeout))ROM_EUSCI_B_I2CTABLE[22])
324 #define ROM_EUSCI_B_I2C_masterSendMultiByteFinish \
325  ((void (__cc_rom *)( uint16_t baseAddress, \
326  uint8_t txData))ROM_EUSCI_B_I2CTABLE[23])
327 #define ROM_EUSCI_B_I2C_masterSendMultiByteFinishWithTimeout \
328  ((bool (__cc_rom *)( uint16_t baseAddress, \
329  uint8_t txData, \
330  uint32_t timeout))ROM_EUSCI_B_I2CTABLE[24])
331 #define ROM_EUSCI_B_I2C_masterSendStart \
332  ((void (__cc_rom *)( uint16_t baseAddress))ROM_EUSCI_B_I2CTABLE[25])
333 #define ROM_EUSCI_B_I2C_masterSendMultiByteStop \
334  ((void (__cc_rom *)( uint16_t baseAddress))ROM_EUSCI_B_I2CTABLE[26])
335 #define ROM_EUSCI_B_I2C_masterReceiveStart \
336  ((void (__cc_rom *)( uint16_t baseAddress))ROM_EUSCI_B_I2CTABLE[27])
337 #define ROM_EUSCI_B_I2C_masterReceiveMultiByteNext \
338  ((uint8_t (__cc_rom *)( uint16_t baseAddress))ROM_EUSCI_B_I2CTABLE[28])
339 #define ROM_EUSCI_B_I2C_masterReceiveMultiByteFinish \
340  ((uint8_t (__cc_rom *)( uint16_t baseAddress))ROM_EUSCI_B_I2CTABLE[29])
341 #define ROM_EUSCI_B_I2C_masterReceiveMultiByteFinishWithTimeout \
342  ((bool (__cc_rom *)( uint16_t baseAddress, \
343  uint8_t *txData, \
344  uint32_t timeout))ROM_EUSCI_B_I2CTABLE[30])
345 #define ROM_EUSCI_B_I2C_masterReceiveMultiByteStop \
346  ((void (__cc_rom *)( uint16_t baseAddress))ROM_EUSCI_B_I2CTABLE[31])
347 #define ROM_EUSCI_B_I2C_enableMultiMasterMode \
348  ((void (__cc_rom *)( uint16_t baseAddress))ROM_EUSCI_B_I2CTABLE[32])
349 #define ROM_EUSCI_B_I2C_disableMultiMasterMode \
350  ((void (__cc_rom *)( uint16_t baseAddress))ROM_EUSCI_B_I2CTABLE[33])
351 #define ROM_EUSCI_B_I2C_masterReceiveSingle \
352  ((uint8_t (__cc_rom *)( uint16_t baseAddress))ROM_EUSCI_B_I2CTABLE[34])
353 #define ROM_EUSCI_B_I2C_getReceiveBufferAddress \
354  ((uint32_t (__cc_rom *)( uint16_t baseAddress))ROM_EUSCI_B_I2CTABLE[35])
355 #define ROM_EUSCI_B_I2C_getTransmitBufferAddress \
356  ((uint32_t (__cc_rom *)( uint16_t baseAddress))ROM_EUSCI_B_I2CTABLE[36])
357 #define ROM_EUSCI_B_I2C_remapPins \
358  ((void (__cc_rom *)( uint16_t baseAddress, \
359  uint8_t pinsSelect))ROM_EUSCI_B_I2CTABLE[37])
360 #define ROM_EUSCI_B_I2C_setTimeout \
361  ((void (__cc_rom *)( uint16_t baseAddress, \
362  uint16_t timeout))ROM_EUSCI_B_I2CTABLE[38])
363 
364 //*****************************************************************************
365 //
366 // Macros for calling ROM functions in the EUSCI_B_SPI API.
367 //
368 //*****************************************************************************
369 #define ROM_EUSCI_B_SPI_initMaster \
370  ((void (__cc_rom *)( uint16_t baseAddress, \
371  EUSCI_B_SPI_initMasterParam *param))ROM_EUSCI_B_SPITABLE[0])
372 #define ROM_EUSCI_B_SPI_select4PinFunctionality \
373  ((void (__cc_rom *)( uint16_t baseAddress, \
374  uint8_t select4PinFunctionality))ROM_EUSCI_B_SPITABLE[1])
375 #define ROM_EUSCI_B_SPI_changeMasterClock \
376  ((void (__cc_rom *)( uint16_t baseAddress, \
377  EUSCI_B_SPI_changeMasterClockParam *param))ROM_EUSCI_B_SPITABLE[2])
378 #define ROM_EUSCI_B_SPI_initSlave \
379  ((void (__cc_rom *)( uint16_t baseAddress, \
380  EUSCI_B_SPI_initSlaveParam *param))ROM_EUSCI_B_SPITABLE[3])
381 #define ROM_EUSCI_B_SPI_changeClockPhasePolarity \
382  ((void (__cc_rom *)( uint16_t baseAddress, \
383  uint16_t clockPhase, \
384  uint16_t clockPolarity))ROM_EUSCI_B_SPITABLE[4])
385 #define ROM_EUSCI_B_SPI_transmitData \
386  ((void (__cc_rom *)( uint16_t baseAddress, \
387  uint8_t transmitData))ROM_EUSCI_B_SPITABLE[5])
388 #define ROM_EUSCI_B_SPI_receiveData \
389  ((uint8_t (__cc_rom *)( uint16_t baseAddress))ROM_EUSCI_B_SPITABLE[6])
390 #define ROM_EUSCI_B_SPI_enableInterrupt \
391  ((void (__cc_rom *)( uint16_t baseAddress, \
392  uint8_t mask))ROM_EUSCI_B_SPITABLE[7])
393 #define ROM_EUSCI_B_SPI_disableInterrupt \
394  ((void (__cc_rom *)( uint16_t baseAddress, \
395  uint8_t mask))ROM_EUSCI_B_SPITABLE[8])
396 #define ROM_EUSCI_B_SPI_getInterruptStatus \
397  ((uint8_t (__cc_rom *)( uint16_t baseAddress, \
398  uint8_t mask))ROM_EUSCI_B_SPITABLE[9])
399 #define ROM_EUSCI_B_SPI_clearInterrupt \
400  ((void (__cc_rom *)( uint16_t baseAddress, \
401  uint8_t mask))ROM_EUSCI_B_SPITABLE[10])
402 #define ROM_EUSCI_B_SPI_enable \
403  ((void (__cc_rom *)( uint16_t baseAddress))ROM_EUSCI_B_SPITABLE[11])
404 #define ROM_EUSCI_B_SPI_disable \
405  ((void (__cc_rom *)( uint16_t baseAddress))ROM_EUSCI_B_SPITABLE[12])
406 #define ROM_EUSCI_B_SPI_getReceiveBufferAddress \
407  ((uint32_t (__cc_rom *)( uint16_t baseAddress))ROM_EUSCI_B_SPITABLE[13])
408 #define ROM_EUSCI_B_SPI_getTransmitBufferAddress \
409  ((uint32_t (__cc_rom *)( uint16_t baseAddress))ROM_EUSCI_B_SPITABLE[14])
410 #define ROM_EUSCI_B_SPI_isBusy \
411  ((uint16_t (__cc_rom *)( uint16_t baseAddress))ROM_EUSCI_B_SPITABLE[15])
412 #define ROM_EUSCI_B_SPI_remapPins \
413  ((void (__cc_rom *)( uint16_t baseAddress, \
414  uint8_t pinsSelect))ROM_EUSCI_B_SPITABLE[16])
415 
416 //*****************************************************************************
417 //
418 // Macros for calling ROM functions in the GPIO API.
419 //
420 //*****************************************************************************
421 #define ROM_GPIO_setAsOutputPin \
422  ((void (__cc_rom *)( uint8_t selectedPort, \
423  uint16_t selectedPins))ROM_GPIOTABLE[0])
424 #define ROM_GPIO_setAsInputPin \
425  ((void (__cc_rom *)( uint8_t selectedPort, \
426  uint16_t selectedPins))ROM_GPIOTABLE[1])
427 #define ROM_GPIO_setAsPeripheralModuleFunctionOutputPin \
428  ((void (__cc_rom *)( uint8_t selectedPort, \
429  uint16_t selectedPins, \
430  uint8_t mode))ROM_GPIOTABLE[2])
431 #define ROM_GPIO_setAsPeripheralModuleFunctionInputPin \
432  ((void (__cc_rom *)( uint8_t selectedPort, \
433  uint16_t selectedPins, \
434  uint8_t mode))ROM_GPIOTABLE[3])
435 #define ROM_GPIO_setOutputHighOnPin \
436  ((void (__cc_rom *)( uint8_t selectedPort, \
437  uint16_t selectedPins))ROM_GPIOTABLE[4])
438 #define ROM_GPIO_setOutputLowOnPin \
439  ((void (__cc_rom *)( uint8_t selectedPort, \
440  uint16_t selectedPins))ROM_GPIOTABLE[5])
441 #define ROM_GPIO_toggleOutputOnPin \
442  ((void (__cc_rom *)( uint8_t selectedPort, \
443  uint16_t selectedPins))ROM_GPIOTABLE[6])
444 #define ROM_GPIO_setAsInputPinWithPullDownResistor \
445  ((void (__cc_rom *)( uint8_t selectedPort, \
446  uint16_t selectedPins))ROM_GPIOTABLE[7])
447 #define ROM_GPIO_setAsInputPinWithPullUpResistor \
448  ((void (__cc_rom *)( uint8_t selectedPort, \
449  uint16_t selectedPins))ROM_GPIOTABLE[8])
450 #define ROM_GPIO_getInputPinValue \
451  ((uint8_t (__cc_rom *)( uint8_t selectedPort, \
452  uint16_t selectedPins))ROM_GPIOTABLE[9])
453 #define ROM_GPIO_enableInterrupt \
454  ((void (__cc_rom *)( uint8_t selectedPort, \
455  uint16_t selectedPins))ROM_GPIOTABLE[10])
456 #define ROM_GPIO_disableInterrupt \
457  ((void (__cc_rom *)( uint8_t selectedPort, \
458  uint16_t selectedPins))ROM_GPIOTABLE[11])
459 #define ROM_GPIO_getInterruptStatus \
460  ((uint16_t (__cc_rom *)( uint8_t selectedPort, \
461  uint16_t selectedPins))ROM_GPIOTABLE[12])
462 #define ROM_GPIO_clearInterrupt \
463  ((void (__cc_rom *)( uint8_t selectedPort, \
464  uint16_t selectedPins))ROM_GPIOTABLE[13])
465 #define ROM_GPIO_selectInterruptEdge \
466  ((void (__cc_rom *)( uint8_t selectedPort, \
467  uint16_t selectedPins, \
468  uint8_t edgeSelect))ROM_GPIOTABLE[14])
469 
470 //*****************************************************************************
471 //
472 // Macros for calling ROM functions in the PMM API.
473 //
474 //*****************************************************************************
475 #define ROM_PMM_enableSVSH \
476  ((void (__cc_rom *)( void))ROM_PMMTABLE[0])
477 #define ROM_PMM_disableSVSH \
478  ((void (__cc_rom *)( void))ROM_PMMTABLE[1])
479 #define ROM_PMM_turnOnRegulator \
480  ((void (__cc_rom *)( void))ROM_PMMTABLE[2])
481 #define ROM_PMM_turnOffRegulator \
482  ((void (__cc_rom *)( void))ROM_PMMTABLE[3])
483 #define ROM_PMM_trigPOR \
484  ((void (__cc_rom *)( void))ROM_PMMTABLE[4])
485 #define ROM_PMM_trigBOR \
486  ((void (__cc_rom *)( void))ROM_PMMTABLE[5])
487 #define ROM_PMM_clearInterrupt \
488  ((void (__cc_rom *)( uint16_t mask))ROM_PMMTABLE[6])
489 #define ROM_PMM_getInterruptStatus \
490  ((uint16_t (__cc_rom *)( uint16_t mask))ROM_PMMTABLE[7])
491 #define ROM_PMM_unlockLPM5 \
492  ((void (__cc_rom *)( void))ROM_PMMTABLE[8])
493 #define ROM_PMM_getBandgapMode \
494  ((uint16_t (__cc_rom *)( void))ROM_PMMTABLE[9])
495 #define ROM_PMM_isBandgapActive \
496  ((uint16_t (__cc_rom *)( void))ROM_PMMTABLE[10])
497 #define ROM_PMM_isRefGenActive \
498  ((uint16_t (__cc_rom *)( void))ROM_PMMTABLE[11])
499 #define ROM_PMM_getBufferedBandgapVoltageStatus \
500  ((uint16_t (__cc_rom *)( void))ROM_PMMTABLE[12])
501 #define ROM_PMM_getVariableReferenceVoltageStatus \
502  ((uint16_t (__cc_rom *)( void))ROM_PMMTABLE[13])
503 #define ROM_PMM_disableTempSensor \
504  ((void (__cc_rom *)( void))ROM_PMMTABLE[14])
505 #define ROM_PMM_enableTempSensor \
506  ((void (__cc_rom *)( void))ROM_PMMTABLE[15])
507 #define ROM_PMM_disableExternalReference \
508  ((void (__cc_rom *)( void))ROM_PMMTABLE[16])
509 #define ROM_PMM_enableExternalReference \
510  ((void (__cc_rom *)( void))ROM_PMMTABLE[17])
511 #define ROM_PMM_disableInternalReference \
512  ((void (__cc_rom *)( void))ROM_PMMTABLE[18])
513 #define ROM_PMM_enableInternalReference \
514  ((void (__cc_rom *)( void))ROM_PMMTABLE[19])
515 #define ROM_PMM_selectVoltageReference \
516  ((void (__cc_rom *)( uint8_t refV))ROM_PMMTABLE[20])
517 #define ROM_PMM_setPowerMode \
518  ((void (__cc_rom *)( uint8_t mode))ROM_PMMTABLE[21])
519 
520 //*****************************************************************************
521 //
522 // Macros for calling ROM functions in the SFR API.
523 //
524 //*****************************************************************************
525 #define ROM_SFR_enableInterrupt \
526  ((void (__cc_rom *)( uint8_t interruptMask))ROM_SFRTABLE[0])
527 #define ROM_SFR_disableInterrupt \
528  ((void (__cc_rom *)( uint8_t interruptMask))ROM_SFRTABLE[1])
529 #define ROM_SFR_getInterruptStatus \
530  ((uint8_t (__cc_rom *)( uint8_t interruptFlagMask))ROM_SFRTABLE[2])
531 #define ROM_SFR_clearInterrupt \
532  ((void (__cc_rom *)( uint8_t interruptFlagMask))ROM_SFRTABLE[3])
533 #define ROM_SFR_setResetPinPullResistor \
534  ((void (__cc_rom *)( uint16_t pullResistorSetup))ROM_SFRTABLE[4])
535 #define ROM_SFR_setNMIEdge \
536  ((void (__cc_rom *)( uint16_t edgeDirection))ROM_SFRTABLE[5])
537 #define ROM_SFR_setResetNMIPinFunction \
538  ((void (__cc_rom *)( uint8_t resetPinFunction))ROM_SFRTABLE[6])
539 
540 //*****************************************************************************
541 //
542 // Macros for calling ROM functions in the SYSCTL API.
543 //
544 //*****************************************************************************
545 #define ROM_SysCtl_enableDedicatedJTAGPins \
546  ((void (__cc_rom *)( void))ROM_SYSCTLTABLE[0])
547 #define ROM_SysCtl_getBSLEntryIndication \
548  ((uint8_t (__cc_rom *)( void))ROM_SYSCTLTABLE[1])
549 #define ROM_SysCtl_enablePMMAccessProtect \
550  ((void (__cc_rom *)( void))ROM_SYSCTLTABLE[2])
551 #define ROM_SysCtl_enableRAMBasedInterruptVectors \
552  ((void (__cc_rom *)( void))ROM_SYSCTLTABLE[3])
553 #define ROM_SysCtl_disableRAMBasedInterruptVectors \
554  ((void (__cc_rom *)( void))ROM_SYSCTLTABLE[4])
555 #define ROM_SysCtl_enableBSLProtect \
556  ((void (__cc_rom *)( void))ROM_SYSCTLTABLE[5])
557 #define ROM_SysCtl_disableBSLProtect \
558  ((void (__cc_rom *)( void))ROM_SYSCTLTABLE[6])
559 #define ROM_SysCtl_enableBSLMemory \
560  ((void (__cc_rom *)( void))ROM_SYSCTLTABLE[7])
561 #define ROM_SysCtl_disableBSLMemory \
562  ((void (__cc_rom *)( void))ROM_SYSCTLTABLE[8])
563 #define ROM_SysCtl_setRAMAssignedToBSL \
564  ((void (__cc_rom *)( uint8_t BSLRAMAssignment))ROM_SYSCTLTABLE[9])
565 #define ROM_SysCtl_initJTAGMailbox \
566  ((void (__cc_rom *)( uint8_t mailboxSizeSelect, \
567  uint8_t autoClearInboxFlagSelect))ROM_SYSCTLTABLE[10])
568 #define ROM_SysCtl_getJTAGMailboxFlagStatus \
569  ((uint8_t (__cc_rom *)( uint8_t mailboxFlagMask))ROM_SYSCTLTABLE[11])
570 #define ROM_SysCtl_clearJTAGMailboxFlagStatus \
571  ((void (__cc_rom *)( uint8_t mailboxFlagMask))ROM_SYSCTLTABLE[12])
572 #define ROM_SysCtl_getJTAGInboxMessage16Bit \
573  ((uint16_t (__cc_rom *)( uint8_t inboxSelect))ROM_SYSCTLTABLE[13])
574 #define ROM_SysCtl_getJTAGInboxMessage32Bit \
575  ((uint32_t (__cc_rom *)( void))ROM_SYSCTLTABLE[14])
576 #define ROM_SysCtl_setJTAGOutgoingMessage16Bit \
577  ((void (__cc_rom *)( uint8_t outboxSelect, \
578  uint16_t outgoingMessage))ROM_SYSCTLTABLE[15])
579 #define ROM_SysCtl_setJTAGOutgoingMessage32Bit \
580  ((void (__cc_rom *)( uint32_t outgoingMessage))ROM_SYSCTLTABLE[16])
581 #define ROM_SysCtl_protectFRAMWrite \
582  ((void (__cc_rom *)( uint8_t writeProtect))ROM_SYSCTLTABLE[17])
583 #define ROM_SysCtl_enableFRAMWrite \
584  ((void (__cc_rom *)( uint8_t writeEnable))ROM_SYSCTLTABLE[18])
585 #define ROM_SysCtl_setInfraredConfig \
586  ((void (__cc_rom *)( uint8_t dataSource, \
587  uint8_t mode, \
588  uint8_t polarity))ROM_SYSCTLTABLE[19])
589 #define ROM_SysCtl_enableInfrared \
590  ((void (__cc_rom *)( void))ROM_SYSCTLTABLE[20])
591 #define ROM_SysCtl_disableInfrared \
592  ((void (__cc_rom *)( void))ROM_SYSCTLTABLE[21])
593 #define ROM_SysCtl_getInfraredData \
594  ((uint8_t (__cc_rom *)( void))ROM_SYSCTLTABLE[22])
595 #define ROM_SysCtl_setFRWPOA \
596  ((void (__cc_rom *)( uint8_t offsetAddress))ROM_SYSCTLTABLE[23])
597 
598 //*****************************************************************************
599 //
600 // Macros for calling ROM functions in the TIMER_B API.
601 //
602 //*****************************************************************************
603 #define ROM_Timer_B_startCounter \
604  ((void (__cc_rom *)( uint16_t baseAddress, \
605  uint16_t timerMode))ROM_TIMER_BTABLE[0])
606 #define ROM_Timer_B_initContinuousMode \
607  ((void (__cc_rom *)( uint16_t baseAddress, \
608  Timer_B_initContinuousModeParam *param))ROM_TIMER_BTABLE[1])
609 #define ROM_Timer_B_initUpMode \
610  ((void (__cc_rom *)( uint16_t baseAddress, \
611  Timer_B_initUpModeParam *param))ROM_TIMER_BTABLE[2])
612 #define ROM_Timer_B_initUpDownMode \
613  ((void (__cc_rom *)( uint16_t baseAddress, \
614  Timer_B_initUpDownModeParam *param))ROM_TIMER_BTABLE[3])
615 #define ROM_Timer_B_initCaptureMode \
616  ((void (__cc_rom *)( uint16_t baseAddress, \
617  Timer_B_initCaptureModeParam *param))ROM_TIMER_BTABLE[4])
618 #define ROM_Timer_B_initCompareMode \
619  ((void (__cc_rom *)( uint16_t baseAddress, \
620  Timer_B_initCompareModeParam *param))ROM_TIMER_BTABLE[5])
621 #define ROM_Timer_B_enableInterrupt \
622  ((void (__cc_rom *)( uint16_t baseAddress))ROM_TIMER_BTABLE[6])
623 #define ROM_Timer_B_disableInterrupt \
624  ((void (__cc_rom *)( uint16_t baseAddress))ROM_TIMER_BTABLE[7])
625 #define ROM_Timer_B_getInterruptStatus \
626  ((uint32_t (__cc_rom *)( uint16_t baseAddress))ROM_TIMER_BTABLE[8])
627 #define ROM_Timer_B_enableCaptureCompareInterrupt \
628  ((void (__cc_rom *)( uint16_t baseAddress, \
629  uint16_t captureCompareRegister))ROM_TIMER_BTABLE[9])
630 #define ROM_Timer_B_disableCaptureCompareInterrupt \
631  ((void (__cc_rom *)( uint16_t baseAddress, \
632  uint16_t captureCompareRegister))ROM_TIMER_BTABLE[10])
633 #define ROM_Timer_B_getCaptureCompareInterruptStatus \
634  ((uint32_t (__cc_rom *)( uint16_t baseAddress, \
635  uint16_t captureCompareRegister, \
636  uint16_t mask))ROM_TIMER_BTABLE[11])
637 #define ROM_Timer_B_clear \
638  ((void (__cc_rom *)( uint16_t baseAddress))ROM_TIMER_BTABLE[12])
639 #define ROM_Timer_B_getSynchronizedCaptureCompareInput \
640  ((uint8_t (__cc_rom *)( uint16_t baseAddress, \
641  uint16_t captureCompareRegister, \
642  uint16_t synchronized))ROM_TIMER_BTABLE[13])
643 #define ROM_Timer_B_getOutputForOutputModeOutBitValue \
644  ((uint8_t (__cc_rom *)( uint16_t baseAddress, \
645  uint16_t captureCompareRegister))ROM_TIMER_BTABLE[14])
646 #define ROM_Timer_B_getCaptureCompareCount \
647  ((uint16_t (__cc_rom *)( uint16_t baseAddress, \
648  uint16_t captureCompareRegister))ROM_TIMER_BTABLE[15])
649 #define ROM_Timer_B_setOutputForOutputModeOutBitValue \
650  ((void (__cc_rom *)( uint16_t baseAddress, \
651  uint16_t captureCompareRegister, \
652  uint8_t outputModeOutBitValue))ROM_TIMER_BTABLE[16])
653 #define ROM_Timer_B_outputPWM \
654  ((void (__cc_rom *)( uint16_t baseAddress, \
655  Timer_B_outputPWMParam *param))ROM_TIMER_BTABLE[17])
656 #define ROM_Timer_B_stop \
657  ((void (__cc_rom *)( uint16_t baseAddress))ROM_TIMER_BTABLE[18])
658 #define ROM_Timer_B_setCompareValue \
659  ((void (__cc_rom *)( uint16_t baseAddress, \
660  uint16_t compareRegister, \
661  uint16_t compareValue))ROM_TIMER_BTABLE[19])
662 #define ROM_Timer_B_clearTimerInterrupt \
663  ((void (__cc_rom *)( uint16_t baseAddress))ROM_TIMER_BTABLE[20])
664 #define ROM_Timer_B_clearCaptureCompareInterrupt \
665  ((void (__cc_rom *)( uint16_t baseAddress, \
666  uint16_t captureCompareRegister))ROM_TIMER_BTABLE[21])
667 #define ROM_Timer_B_selectCounterLength \
668  ((void (__cc_rom *)( uint16_t baseAddress, \
669  uint16_t counterLength))ROM_TIMER_BTABLE[22])
670 #define ROM_Timer_B_selectLatchingGroup \
671  ((void (__cc_rom *)( uint16_t baseAddress, \
672  uint16_t groupLatch))ROM_TIMER_BTABLE[23])
673 #define ROM_Timer_B_initCompareLatchLoadEvent \
674  ((void (__cc_rom *)( uint16_t baseAddress, \
675  uint16_t compareRegister, \
676  uint16_t compareLatchLoadEvent))ROM_TIMER_BTABLE[24])
677 #define ROM_Timer_B_getCounterValue \
678  ((uint16_t (__cc_rom *)( uint16_t baseAddress))ROM_TIMER_BTABLE[25])
679 #define ROM_Timer_B_setOutputMode \
680  ((void (__cc_rom *)( uint16_t baseAddress, \
681  uint16_t compareRegister, \
682  uint16_t compareOutputMode))ROM_TIMER_BTABLE[26])
683 #define ROM_Timer_B_selectOutputHighImpedanceTrigger \
684  ((void (__cc_rom *)( uint16_t baseAddress, \
685  uint8_t triggerSelect))ROM_TIMER_BTABLE[27])
686 #define ROM_Timer_B_remapPins \
687  ((void (__cc_rom *)( uint16_t baseAddress, \
688  uint8_t pinsSelect))ROM_TIMER_BTABLE[28])
689 
690 //*****************************************************************************
691 //
692 // Macros for calling ROM functions in the WDT_A API.
693 //
694 //*****************************************************************************
695 #define ROM_WDT_A_hold \
696  ((void (__cc_rom *)( uint16_t baseAddress))ROM_WDT_ATABLE[0])
697 #define ROM_WDT_A_start \
698  ((void (__cc_rom *)( uint16_t baseAddress))ROM_WDT_ATABLE[1])
699 #define ROM_WDT_A_resetTimer \
700  ((void (__cc_rom *)( uint16_t baseAddress))ROM_WDT_ATABLE[2])
701 #define ROM_WDT_A_initWatchdogTimer \
702  ((void (__cc_rom *)( uint16_t baseAddress, \
703  uint8_t clockSelect, \
704  uint8_t clockDivider))ROM_WDT_ATABLE[3])
705 #define ROM_WDT_A_initIntervalTimer \
706  ((void (__cc_rom *)( uint16_t baseAddress, \
707  uint8_t clockSelect, \
708  uint8_t clockDivider))ROM_WDT_ATABLE[4])
709 
710 
711 #else
712 #error "Small code model is not supported because ROM lives above 64k memory."
713 #endif // large model only
714 #endif // __ROM_DRIVERLIB_H__

Copyright 2020, Texas Instruments Incorporated