]> git.sur5r.net Git - freertos/blob - FreeRTOS/Demo/CORTEX_M4F_MSP432_LaunchPad_IAR_CCS_Keil/driverlib/rom.h
Final V8.2.1 release ready for tagging:
[freertos] / FreeRTOS / Demo / CORTEX_M4F_MSP432_LaunchPad_IAR_CCS_Keil / driverlib / rom.h
1 /*
2  * -------------------------------------------
3  *    MSP432 DriverLib - v01_04_00_18 
4  * -------------------------------------------
5  *
6  * --COPYRIGHT--,BSD,BSD
7  * Copyright (c) 2015, Texas Instruments Incorporated
8  * All rights reserved.
9  *
10  * Redistribution and use in source and binary forms, with or without
11  * modification, are permitted provided that the following conditions
12  * are met:
13  *
14  * *  Redistributions of source code must retain the above copyright
15  *    notice, this list of conditions and the following disclaimer.
16  *
17  * *  Redistributions in binary form must reproduce the above copyright
18  *    notice, this list of conditions and the following disclaimer in the
19  *    documentation and/or other materials provided with the distribution.
20  *
21  * *  Neither the name of Texas Instruments Incorporated nor the names of
22  *    its contributors may be used to endorse or promote products derived
23  *    from this software without specific prior written permission.
24  *
25  * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
26  * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO,
27  * THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
28  * PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR
29  * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
30  * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
31  * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS;
32  * OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY,
33  * WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR
34  * OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE,
35  * EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
36  * --/COPYRIGHT--*/
37 #ifndef __ROM_H__
38 #define __ROM_H__
39
40 //*****************************************************************************
41 //
42 // Pointers to the main API tables.
43 //
44 //*****************************************************************************
45 #define ROM_APITABLE            ((unsigned long *)0x02000800)
46 #define ROM_VERSION             (ROM_APITABLE[0])
47 #define ROM_ADC14TABLE          ((unsigned long *)(ROM_APITABLE[1]))
48 #define ROM_AES256TABLE         ((unsigned long *)(ROM_APITABLE[2]))
49 #define ROM_COMPTABLE           ((unsigned long *)(ROM_APITABLE[3]))
50 #define ROM_CRC32TABLE          ((unsigned long *)(ROM_APITABLE[4]))
51 #define ROM_CSTABLE             ((unsigned long *)(ROM_APITABLE[5]))
52 #define ROM_DMATABLE            ((unsigned long *)(ROM_APITABLE[6]))
53 #define ROM_FLASHCTLTABLE       ((unsigned long *)(ROM_APITABLE[7]))
54 #define ROM_FPUTABLE            ((unsigned long *)(ROM_APITABLE[8]))
55 #define ROM_GPIOTABLE           ((unsigned long *)(ROM_APITABLE[9]))
56 #define ROM_I2CTABLE            ((unsigned long *)(ROM_APITABLE[10]))
57 #define ROM_INTTABLE            ((unsigned long *)(ROM_APITABLE[11]))
58 #define ROM_MPUTABLE            ((unsigned long *)(ROM_APITABLE[12]))
59 #define ROM_PCMTABLE            ((unsigned long *)(ROM_APITABLE[13]))
60 #define ROM_PMAPTABLE           ((unsigned long *)(ROM_APITABLE[14]))
61 #define ROM_PSSTABLE            ((unsigned long *)(ROM_APITABLE[15]))
62 #define ROM_REFTABLE            ((unsigned long *)(ROM_APITABLE[16]))
63 #define ROM_RESETCTLTABLE       ((unsigned long *)(ROM_APITABLE[17]))
64 #define ROM_RTCTABLE            ((unsigned long *)(ROM_APITABLE[18]))
65 #define ROM_SPITABLE            ((unsigned long *)(ROM_APITABLE[19]))
66 #define ROM_SYSCTLTABLE         ((unsigned long *)(ROM_APITABLE[20]))
67 #define ROM_SYSTICKTABLE        ((unsigned long *)(ROM_APITABLE[21]))
68 #define ROM_TIMER_ATABLE        ((unsigned long *)(ROM_APITABLE[22]))
69 #define ROM_TIMER32TABLE        ((unsigned long *)(ROM_APITABLE[23]))
70 #define ROM_UARTTABLE           ((unsigned long *)(ROM_APITABLE[24]))
71 #define ROM_WDTTABLE            ((unsigned long *)(ROM_APITABLE[25]))
72
73 //*****************************************************************************
74 //
75 // Macros for calling ROM functions in the ADC14 API.
76 //
77 //*****************************************************************************
78 #if defined(TARGET_IS_MSP432P4XX)
79 #define ROM_ADC14_enableModule                                                \
80         ((void (*)(void))ROM_ADC14TABLE[0])
81 #endif
82 #if defined(TARGET_IS_MSP432P4XX)
83 #define ROM_ADC14_disableModule                                               \
84         ((bool (*)(void))ROM_ADC14TABLE[1])
85 #endif
86 #if defined(TARGET_IS_MSP432P4XX)
87 #define ROM_ADC14_initModule                                                  \
88         ((bool (*)(uint32_t clockSource,                                      \
89                    uint32_t clockPredivider,                                  \
90                    uint32_t clockDivider,                                     \
91                    uint32_t internalChannelMask))ROM_ADC14TABLE[2])
92 #endif
93 #if defined(TARGET_IS_MSP432P4XX)
94 #define ROM_ADC14_setResolution                                               \
95         ((void (*)(uint32_t resolution))ROM_ADC14TABLE[3])
96 #endif
97 #if defined(TARGET_IS_MSP432P4XX)
98 #define ROM_ADC14_getResolution                                               \
99         ((uint_fast32_t (*)(void))ROM_ADC14TABLE[4])
100 #endif
101 #if defined(TARGET_IS_MSP432P4XX)
102 #define ROM_ADC14_setSampleHoldTrigger                                        \
103         ((bool (*)(uint32_t source,                                           \
104                    bool invertSignal))ROM_ADC14TABLE[5])
105 #endif
106 #if defined(TARGET_IS_MSP432P4XX)
107 #define ROM_ADC14_setSampleHoldTime                                           \
108         ((bool (*)(uint32_t firstPulseWidth,                                  \
109                    uint32_t secondPulseWidth))ROM_ADC14TABLE[6])
110 #endif
111 #if defined(TARGET_IS_MSP432P4XX)
112 #define ROM_ADC14_configureMultiSequenceMode                                  \
113         ((bool (*)(uint32_t memoryStart,                                      \
114                    uint32_t memoryEnd,                                        \
115                    bool repeatMode))ROM_ADC14TABLE[7])
116 #endif
117 #if defined(TARGET_IS_MSP432P4XX)
118 #define ROM_ADC14_configureSingleSampleMode                                   \
119         ((bool (*)(uint32_t memoryDestination,                                \
120                    bool repeatMode))ROM_ADC14TABLE[8])
121 #endif
122 #if defined(TARGET_IS_MSP432P4XX)
123 #define ROM_ADC14_enableConversion                                            \
124         ((bool (*)(void))ROM_ADC14TABLE[9])
125 #endif
126 #if defined(TARGET_IS_MSP432P4XX)
127 #define ROM_ADC14_disableConversion                                           \
128         ((void (*)(void))ROM_ADC14TABLE[10])
129 #endif
130 #if defined(TARGET_IS_MSP432P4XX)
131 #define ROM_ADC14_isBusy                                                      \
132         ((bool (*)(void))ROM_ADC14TABLE[11])
133 #endif
134 #if defined(TARGET_IS_MSP432P4XX)
135 #define ROM_ADC14_configureConversionMemory                                   \
136         ((bool (*)(uint32_t memorySelect,                                     \
137                    uint32_t refSelect,                                        \
138                    uint32_t channelSelect,                                    \
139                    bool differntialMode))ROM_ADC14TABLE[12])
140 #endif
141 #if defined(TARGET_IS_MSP432P4XX)
142 #define ROM_ADC14_enableComparatorWindow                                      \
143         ((bool (*)(uint32_t memorySelect,                                     \
144                    uint32_t windowSelect))ROM_ADC14TABLE[13])
145 #endif
146 #if defined(TARGET_IS_MSP432P4XX)
147 #define ROM_ADC14_disableComparatorWindow                                     \
148         ((bool (*)(uint32_t memorySelect))ROM_ADC14TABLE[14])
149 #endif
150 #if defined(TARGET_IS_MSP432P4XX)
151 #define ROM_ADC14_setComparatorWindowValue                                    \
152         ((bool (*)(uint32_t window,                                           \
153                    int16_t low,                                               \
154                    int16_t high))ROM_ADC14TABLE[15])
155 #endif
156 #if defined(TARGET_IS_MSP432P4XX)
157 #define ROM_ADC14_setResultFormat                                             \
158         ((bool (*)(uint32_t resultFormat))ROM_ADC14TABLE[16])
159 #endif
160 #if defined(TARGET_IS_MSP432P4XX)
161 #define ROM_ADC14_getResult                                                   \
162         ((uint_fast16_t (*)(uint32_t memorySelect))ROM_ADC14TABLE[17])
163 #endif
164 #if defined(TARGET_IS_MSP432P4XX)
165 #define ROM_ADC14_getMultiSequenceResult                                      \
166         ((void (*)(uint16_t* res))ROM_ADC14TABLE[18])
167 #endif
168 #if defined(TARGET_IS_MSP432P4XX)
169 #define ROM_ADC14_getResultArray                                              \
170         ((void (*)(uint32_t memoryStart,                                      \
171                    uint32_t memoryEnd,                                        \
172                    uint16_t* res))ROM_ADC14TABLE[19])
173 #endif
174 #if defined(TARGET_IS_MSP432P4XX)
175 #define ROM_ADC14_enableReferenceBurst                                        \
176         ((bool (*)(void))ROM_ADC14TABLE[20])
177 #endif
178 #if defined(TARGET_IS_MSP432P4XX)
179 #define ROM_ADC14_disableReferenceBurst                                       \
180         ((bool (*)(void))ROM_ADC14TABLE[21])
181 #endif
182 #if defined(TARGET_IS_MSP432P4XX)
183 #define ROM_ADC14_setPowerMode                                                \
184         ((bool (*)(uint32_t powerMode))ROM_ADC14TABLE[22])
185 #endif
186 #if defined(TARGET_IS_MSP432P4XX)
187 #define ROM_ADC14_enableInterrupt                                             \
188         ((void (*)(uint_fast64_t mask))ROM_ADC14TABLE[23])
189 #endif
190 #if defined(TARGET_IS_MSP432P4XX)
191 #define ROM_ADC14_disableInterrupt                                            \
192         ((void (*)(uint_fast64_t mask))ROM_ADC14TABLE[24])
193 #endif
194 #if defined(TARGET_IS_MSP432P4XX)
195 #define ROM_ADC14_getInterruptStatus                                          \
196         ((uint_fast64_t (*)(void))ROM_ADC14TABLE[25])
197 #endif
198 #if defined(TARGET_IS_MSP432P4XX)
199 #define ROM_ADC14_getEnabledInterruptStatus                                   \
200         ((uint_fast64_t (*)(void))ROM_ADC14TABLE[26])
201 #endif
202 #if defined(TARGET_IS_MSP432P4XX)
203 #define ROM_ADC14_clearInterruptFlag                                          \
204         ((void (*)(uint_fast64_t mask))ROM_ADC14TABLE[27])
205 #endif
206 #if defined(TARGET_IS_MSP432P4XX)
207 #define ROM_ADC14_toggleConversionTrigger                                     \
208         ((bool (*)(void))ROM_ADC14TABLE[28])
209 #endif
210 #if defined(TARGET_IS_MSP432P4XX)
211 #define ROM_ADC14_enableSampleTimer                                           \
212         ((bool (*)(uint32_t multiSampleConvert))ROM_ADC14TABLE[29])
213 #endif
214 #if defined(TARGET_IS_MSP432P4XX)
215 #define ROM_ADC14_disableSampleTimer                                          \
216         ((bool (*)(void))ROM_ADC14TABLE[30])
217 #endif
218
219 //*****************************************************************************
220 //
221 // Macros for calling ROM functions in the AES256 API.
222 //
223 //*****************************************************************************
224 #if defined(TARGET_IS_MSP432P4XX)
225 #define ROM_AES256_setCipherKey                                               \
226         ((bool (*)(uint32_t moduleInstance,                                   \
227                    const uint8_t *cipherKey,                                  \
228                    uint_fast16_t keyLength))ROM_AES256TABLE[0])
229 #endif
230 #if defined(TARGET_IS_MSP432P4XX)
231 #define ROM_AES256_encryptData                                                \
232         ((void (*)(uint32_t moduleInstance,                                   \
233                    const uint8_t *data,                                       \
234                    uint8_t *encryptedData))ROM_AES256TABLE[1])
235 #endif
236 #if defined(TARGET_IS_MSP432P4XX)
237 #define ROM_AES256_decryptData                                                \
238         ((void (*)(uint32_t moduleInstance,                                   \
239                    const uint8_t *data,                                       \
240                    uint8_t *decryptedData))ROM_AES256TABLE[2])
241 #endif
242 #if defined(TARGET_IS_MSP432P4XX)
243 #define ROM_AES256_setDecipherKey                                             \
244         ((bool (*)(uint32_t moduleInstance,                                   \
245                    const uint8_t *cipherKey,                                  \
246                    uint_fast16_t keyLength))ROM_AES256TABLE[3])
247 #endif
248 #if defined(TARGET_IS_MSP432P4XX)
249 #define ROM_AES256_reset                                                      \
250         ((void (*)(uint32_t moduleInstance))ROM_AES256TABLE[4])
251 #endif
252 #if defined(TARGET_IS_MSP432P4XX)
253 #define ROM_AES256_startEncryptData                                           \
254         ((void (*)(uint32_t moduleInstance,                                   \
255                    const uint8_t *data))ROM_AES256TABLE[5])
256 #endif
257 #if defined(TARGET_IS_MSP432P4XX)
258 #define ROM_AES256_startDecryptData                                           \
259         ((void (*)(uint32_t moduleInstance,                                   \
260                    const uint8_t *data))ROM_AES256TABLE[6])
261 #endif
262 #if defined(TARGET_IS_MSP432P4XX)
263 #define ROM_AES256_startSetDecipherKey                                        \
264         ((bool (*)(uint32_t moduleInstance,                                   \
265                    const uint8_t *cipherKey,                                  \
266                    uint_fast16_t keyLength))ROM_AES256TABLE[7])
267 #endif
268 #if defined(TARGET_IS_MSP432P4XX)
269 #define ROM_AES256_getDataOut                                                 \
270         ((bool (*)(uint32_t moduleInstance,                                   \
271                    uint8_t *outputData))ROM_AES256TABLE[8])
272 #endif
273 #if defined(TARGET_IS_MSP432P4XX)
274 #define ROM_AES256_isBusy                                                     \
275         ((bool (*)(uint32_t moduleInstance))ROM_AES256TABLE[9])
276 #endif
277 #if defined(TARGET_IS_MSP432P4XX)
278 #define ROM_AES256_clearErrorFlag                                             \
279         ((void (*)(uint32_t moduleInstance))ROM_AES256TABLE[10])
280 #endif
281 #if defined(TARGET_IS_MSP432P4XX)
282 #define ROM_AES256_getErrorFlagStatus                                         \
283         ((uint32_t (*)(uint32_t moduleInstance))ROM_AES256TABLE[11])
284 #endif
285 #if defined(TARGET_IS_MSP432P4XX)
286 #define ROM_AES256_clearInterruptFlag                                         \
287         ((void (*)(uint32_t moduleInstance))ROM_AES256TABLE[12])
288 #endif
289 #if defined(TARGET_IS_MSP432P4XX)
290 #define ROM_AES256_enableInterrupt                                            \
291         ((void (*)(uint32_t moduleInstance))ROM_AES256TABLE[14])
292 #endif
293 #if defined(TARGET_IS_MSP432P4XX)
294 #define ROM_AES256_disableInterrupt                                           \
295         ((void (*)(uint32_t moduleInstance))ROM_AES256TABLE[15])
296 #endif
297
298 //*****************************************************************************
299 //
300 // Macros for calling ROM functions in the Comp API.
301 //
302 //*****************************************************************************
303 #if defined(TARGET_IS_MSP432P4XX)
304 #define ROM_COMP_E_initModule                                                 \
305         ((bool (*)(uint32_t comparator,                                       \
306                    const COMP_E_Config *config))ROM_COMPTABLE[0])
307 #endif
308 #if defined(TARGET_IS_MSP432P4XX)
309 #define ROM_COMP_E_setReferenceVoltage                                        \
310         ((void (*)(uint32_t comparator,                                       \
311                    uint_fast16_t supplyVoltageReferenceBase,                  \
312                    uint_fast16_t lowerLimitSupplyVoltageFractionOf32,         \
313                    uint_fast16_t upperLimitSupplyVoltageFractionOf32))ROM_COMPTABLE[1])
314 #endif
315 #if defined(TARGET_IS_MSP432P4XX)
316 #define ROM_COMP_E_setReferenceAccuracy                                       \
317         ((void (*)(uint32_t comparator,                                       \
318                    uint_fast16_t referenceAccuracy))ROM_COMPTABLE[2])
319 #endif
320 #if defined(TARGET_IS_MSP432P4XX)
321 #define ROM_COMP_E_setPowerMode                                               \
322         ((void (*)(uint32_t comparator,                                       \
323                    uint_fast16_t powerMode))ROM_COMPTABLE[3])
324 #endif
325 #if defined(TARGET_IS_MSP432P4XX)
326 #define ROM_COMP_E_enableModule                                               \
327         ((void (*)(uint32_t comparator))ROM_COMPTABLE[4])
328 #endif
329 #if defined(TARGET_IS_MSP432P4XX)
330 #define ROM_COMP_E_disableModule                                              \
331         ((void (*)(uint32_t comparator))ROM_COMPTABLE[5])
332 #endif
333 #if defined(TARGET_IS_MSP432P4XX)
334 #define ROM_COMP_E_shortInputs                                                \
335         ((void (*)(uint32_t comparator))ROM_COMPTABLE[6])
336 #endif
337 #if defined(TARGET_IS_MSP432P4XX)
338 #define ROM_COMP_E_unshortInputs                                              \
339         ((void (*)(uint32_t comparator))ROM_COMPTABLE[7])
340 #endif
341 #if defined(TARGET_IS_MSP432P4XX)
342 #define ROM_COMP_E_disableInputBuffer                                         \
343         ((void (*)(uint32_t comparator,                                       \
344                    uint_fast16_t inputPort))ROM_COMPTABLE[8])
345 #endif
346 #if defined(TARGET_IS_MSP432P4XX)
347 #define ROM_COMP_E_enableInputBuffer                                          \
348         ((void (*)(uint32_t comparator,                                       \
349                    uint_fast16_t inputPort))ROM_COMPTABLE[9])
350 #endif
351 #if defined(TARGET_IS_MSP432P4XX)
352 #define ROM_COMP_E_swapIO                                                     \
353         ((void (*)(uint32_t comparator))ROM_COMPTABLE[10])
354 #endif
355 #if defined(TARGET_IS_MSP432P4XX)
356 #define ROM_COMP_E_outputValue                                                \
357         ((uint8_t (*)(uint32_t comparator))ROM_COMPTABLE[11])
358 #endif
359 #if defined(TARGET_IS_MSP432P4XX)
360 #define ROM_COMP_E_enableInterrupt                                            \
361         ((void (*)(uint32_t comparator,                                       \
362                    uint_fast16_t mask))ROM_COMPTABLE[12])
363 #endif
364 #if defined(TARGET_IS_MSP432P4XX)
365 #define ROM_COMP_E_disableInterrupt                                           \
366         ((void (*)(uint32_t comparator,                                       \
367                    uint_fast16_t mask))ROM_COMPTABLE[13])
368 #endif
369 #if defined(TARGET_IS_MSP432P4XX)
370 #define ROM_COMP_E_clearInterruptFlag                                         \
371         ((void (*)(uint32_t comparator,                                       \
372                    uint_fast16_t mask))ROM_COMPTABLE[14])
373 #endif
374 #if defined(TARGET_IS_MSP432P4XX)
375 #define ROM_COMP_E_getInterruptStatus                                         \
376         ((uint_fast16_t (*)(uint32_t comparator))ROM_COMPTABLE[15])
377 #endif
378 #if defined(TARGET_IS_MSP432P4XX)
379 #define ROM_COMP_E_getEnabledInterruptStatus                                  \
380         ((uint_fast16_t (*)(uint32_t comparator))ROM_COMPTABLE[16])
381 #endif
382 #if defined(TARGET_IS_MSP432P4XX)
383 #define ROM_COMP_E_setInterruptEdgeDirection                                  \
384         ((void (*)(uint32_t comparator,                                       \
385                    uint_fast8_t edgeDirection))ROM_COMPTABLE[17])
386 #endif
387 #if defined(TARGET_IS_MSP432P4XX)
388 #define ROM_COMP_E_toggleInterruptEdgeDirection                               \
389         ((void (*)(uint32_t comparator))ROM_COMPTABLE[18])
390 #endif
391
392 //*****************************************************************************
393 //
394 // Macros for calling ROM functions in the CRC32 API.
395 //
396 //*****************************************************************************
397 #if defined(TARGET_IS_MSP432P4XX)
398 #define ROM_CRC32_setSeed                                                     \
399         ((void (*)(uint32_t seed,                                             \
400                    uint_fast8_t crcType))ROM_CRC32TABLE[0])
401 #endif
402 #if defined(TARGET_IS_MSP432P4XX)
403 #define ROM_CRC32_set8BitData                                                 \
404         ((void (*)(uint8_t dataIn,                                            \
405                    uint_fast8_t crcType))ROM_CRC32TABLE[1])
406 #endif
407 #if defined(TARGET_IS_MSP432P4XX)
408 #define ROM_CRC32_set16BitData                                                \
409         ((void (*)(uint16_t dataIn,                                           \
410                    uint_fast8_t crcType))ROM_CRC32TABLE[2])
411 #endif
412 #if defined(TARGET_IS_MSP432P4XX)
413 #define ROM_CRC32_set32BitData                                                \
414         ((void (*)(uint32_t dataIn))ROM_CRC32TABLE[3])
415 #endif
416 #if defined(TARGET_IS_MSP432P4XX)
417 #define ROM_CRC32_set8BitDataReversed                                         \
418         ((void (*)(uint8_t dataIn,                                            \
419                    uint_fast8_t crcType))ROM_CRC32TABLE[4])
420 #endif
421 #if defined(TARGET_IS_MSP432P4XX)
422 #define ROM_CRC32_set16BitDataReversed                                        \
423         ((void (*)(uint16_t dataIn,                                           \
424                    uint_fast8_t crcType))ROM_CRC32TABLE[5])
425 #endif
426 #if defined(TARGET_IS_MSP432P4XX)
427 #define ROM_CRC32_set32BitDataReversed                                        \
428         ((void (*)(uint32_t dataIn))ROM_CRC32TABLE[6])
429 #endif
430 #if defined(TARGET_IS_MSP432P4XX)
431 #define ROM_CRC32_getResult                                                   \
432         ((uint32_t (*)(uint_fast8_t crcType))ROM_CRC32TABLE[7])
433 #endif
434 #if defined(TARGET_IS_MSP432P4XX)
435 #define ROM_CRC32_getResultReversed                                           \
436         ((uint32_t (*)(uint_fast8_t crcType))ROM_CRC32TABLE[8])
437 #endif
438
439 //*****************************************************************************
440 //
441 // Macros for calling ROM functions in the CS API.
442 //
443 //*****************************************************************************
444 #if defined(TARGET_IS_MSP432P4XX)
445 #define ROM_CS_enableClockRequest                                             \
446         ((void (*)(uint32_t selectClock))ROM_CSTABLE[2])
447 #endif
448 #if defined(TARGET_IS_MSP432P4XX)
449 #define ROM_CS_disableClockRequest                                            \
450         ((void (*)(uint32_t selectClock))ROM_CSTABLE[3])
451 #endif
452 #if defined(TARGET_IS_MSP432P4XX)
453 #define ROM_CS_enableDCOExternalResistor                                      \
454         ((void (*)(void))ROM_CSTABLE[6])
455 #endif
456 #if defined(TARGET_IS_MSP432P4XX)
457 #define ROM_CS_disableDCOExternalResistor                                     \
458         ((void (*)(void))ROM_CSTABLE[7])
459 #endif
460 #if defined(TARGET_IS_MSP432P4XX)
461 #define ROM_CS_getEnabledInterruptStatus                                      \
462         ((uint32_t (*)(void))ROM_CSTABLE[10])
463 #endif
464 #if defined(TARGET_IS_MSP432P4XX)
465 #define ROM_CS_getInterruptStatus                                             \
466         ((uint32_t (*)(void))ROM_CSTABLE[11])
467 #endif
468
469 //*****************************************************************************
470 //
471 // Macros for calling ROM functions in the DMA API.
472 //
473 //*****************************************************************************
474 #if defined(TARGET_IS_MSP432P4XX)
475 #define ROM_DMA_enableModule                                                  \
476         ((void (*)(void))ROM_DMATABLE[0])
477 #endif
478 #if defined(TARGET_IS_MSP432P4XX)
479 #define ROM_DMA_disableModule                                                 \
480         ((void (*)(void))ROM_DMATABLE[1])
481 #endif
482 #if defined(TARGET_IS_MSP432P4XX)
483 #define ROM_DMA_getErrorStatus                                                \
484         ((uint32_t (*)(void))ROM_DMATABLE[2])
485 #endif
486 #if defined(TARGET_IS_MSP432P4XX)
487 #define ROM_DMA_clearErrorStatus                                              \
488         ((void (*)(void))ROM_DMATABLE[3])
489 #endif
490 #if defined(TARGET_IS_MSP432P4XX)
491 #define ROM_DMA_enableChannel                                                 \
492         ((void (*)(uint32_t channelNum))ROM_DMATABLE[4])
493 #endif
494 #if defined(TARGET_IS_MSP432P4XX)
495 #define ROM_DMA_disableChannel                                                \
496         ((void (*)(uint32_t channelNum))ROM_DMATABLE[5])
497 #endif
498 #if defined(TARGET_IS_MSP432P4XX)
499 #define ROM_DMA_isChannelEnabled                                              \
500         ((bool (*)(uint32_t channelNum))ROM_DMATABLE[6])
501 #endif
502 #if defined(TARGET_IS_MSP432P4XX)
503 #define ROM_DMA_setControlBase                                                \
504         ((void (*)(void *controlTable))ROM_DMATABLE[7])
505 #endif
506 #if defined(TARGET_IS_MSP432P4XX)
507 #define ROM_DMA_getControlBase                                                \
508         ((void* (*)(void))ROM_DMATABLE[8])
509 #endif
510 #if defined(TARGET_IS_MSP432P4XX)
511 #define ROM_DMA_getControlAlternateBase                                       \
512         ((void* (*)(void))ROM_DMATABLE[9])
513 #endif
514 #if defined(TARGET_IS_MSP432P4XX)
515 #define ROM_DMA_requestChannel                                                \
516         ((void (*)(uint32_t channelNum))ROM_DMATABLE[10])
517 #endif
518 #if defined(TARGET_IS_MSP432P4XX)
519 #define ROM_DMA_enableChannelAttribute                                        \
520         ((void (*)(uint32_t channelNum,                                       \
521                    uint32_t attr))ROM_DMATABLE[11])
522 #endif
523 #if defined(TARGET_IS_MSP432P4XX)
524 #define ROM_DMA_disableChannelAttribute                                       \
525         ((void (*)(uint32_t channelNum,                                       \
526                    uint32_t attr))ROM_DMATABLE[12])
527 #endif
528 #if defined(TARGET_IS_MSP432P4XX)
529 #define ROM_DMA_getChannelAttribute                                           \
530         ((uint32_t (*)(uint32_t channelNum))ROM_DMATABLE[13])
531 #endif
532 #if defined(TARGET_IS_MSP432P4XX)
533 #define ROM_DMA_setChannelControl                                             \
534         ((void (*)(uint32_t channelStructIndex,                               \
535                    uint32_t control))ROM_DMATABLE[14])
536 #endif
537 #if defined(TARGET_IS_MSP432P4XX)
538 #define ROM_DMA_setChannelTransfer                                            \
539         ((void (*)(uint32_t channelStructIndex,                               \
540                    uint32_t mode,                                             \
541                    void *srcAddr,                                             \
542                    void *dstAddr,                                             \
543                    uint32_t transferSize))ROM_DMATABLE[15])
544 #endif
545 #if defined(TARGET_IS_MSP432P4XX)
546 #define ROM_DMA_setChannelScatterGather                                       \
547         ((void (*)(uint32_t channelNum,                                       \
548                    uint32_t taskCount,                                        \
549                    void *taskList,                                            \
550                    uint32_t isPeriphSG))ROM_DMATABLE[16])
551 #endif
552 #if defined(TARGET_IS_MSP432P4XX)
553 #define ROM_DMA_getChannelSize                                                \
554         ((uint32_t (*)(uint32_t channelStructIndex))ROM_DMATABLE[17])
555 #endif
556 #if defined(TARGET_IS_MSP432P4XX)
557 #define ROM_DMA_getChannelMode                                                \
558         ((uint32_t (*)(uint32_t channelStructIndex))ROM_DMATABLE[18])
559 #endif
560 #if defined(TARGET_IS_MSP432P4XX)
561 #define ROM_DMA_assignChannel                                                 \
562         ((void (*)(uint32_t mapping))ROM_DMATABLE[19])
563 #endif
564 #if defined(TARGET_IS_MSP432P4XX)
565 #define ROM_DMA_requestSoftwareTransfer                                       \
566         ((void (*)(uint32_t channel))ROM_DMATABLE[20])
567 #endif
568 #if defined(TARGET_IS_MSP432P4XX)
569 #define ROM_DMA_assignInterrupt                                               \
570         ((void (*)(uint32_t interruptNumber,                                  \
571                    uint32_t channel))ROM_DMATABLE[21])
572 #endif
573 #if defined(TARGET_IS_MSP432P4XX)
574 #define ROM_DMA_enableInterrupt                                               \
575         ((void (*)(uint32_t interruptNumber))ROM_DMATABLE[22])
576 #endif
577 #if defined(TARGET_IS_MSP432P4XX)
578 #define ROM_DMA_disableInterrupt                                              \
579         ((void (*)(uint32_t interruptNumber))ROM_DMATABLE[23])
580 #endif
581 #if defined(TARGET_IS_MSP432P4XX)
582 #define ROM_DMA_getInterruptStatus                                            \
583         ((uint32_t (*)(void))ROM_DMATABLE[24])
584 #endif
585 #if defined(TARGET_IS_MSP432P4XX)
586 #define ROM_DMA_clearInterruptFlag                                            \
587         ((void (*)(uint32_t intChannel))ROM_DMATABLE[25])
588 #endif
589
590 //*****************************************************************************
591 //
592 // Macros for calling ROM functions in the Flash API.
593 //
594 //*****************************************************************************
595 #if defined(TARGET_IS_MSP432P4XX)
596 #define ROM_FlashCtl_enableReadBuffering                                      \
597         ((void (*)(uint_fast8_t memoryBank,                                   \
598                    uint_fast8_t accessMethod))ROM_FLASHCTLTABLE[2])
599 #endif
600 #if defined(TARGET_IS_MSP432P4XX)
601 #define ROM_FlashCtl_disableReadBuffering                                     \
602         ((void (*)(uint_fast8_t memoryBank,                                   \
603                    uint_fast8_t accessMethod))ROM_FLASHCTLTABLE[3])
604 #endif
605 #if defined(TARGET_IS_MSP432P4XX)
606 #define ROM_FlashCtl_unprotectSector                                          \
607         ((bool (*)(uint_fast8_t memorySpace,                                  \
608                    uint32_t sectorMask))ROM_FLASHCTLTABLE[4])
609 #endif
610 #if defined(TARGET_IS_MSP432P4XX)
611 #define ROM_FlashCtl_protectSector                                            \
612         ((bool (*)(uint_fast8_t memorySpace,                                  \
613                    uint32_t sectorMask))ROM_FLASHCTLTABLE[5])
614 #endif
615 #if defined(TARGET_IS_MSP432P4XX)
616 #define ROM_FlashCtl_isSectorProtected                                        \
617         ((bool (*)(uint_fast8_t memorySpace,                                  \
618                    uint32_t sector))ROM_FLASHCTLTABLE[6])
619 #endif
620 #if defined(TARGET_IS_MSP432P4XX)
621 #define ROM_FlashCtl_setProgramVerification                                   \
622         ((void (*)(uint32_t verificationSetting))ROM_FLASHCTLTABLE[11])
623 #endif
624 #if defined(TARGET_IS_MSP432P4XX)
625 #define ROM_FlashCtl_clearProgramVerification                                 \
626         ((void (*)(uint32_t verificationSetting))ROM_FLASHCTLTABLE[12])
627 #endif
628 #if defined(TARGET_IS_MSP432P4XX)
629 #define ROM_FlashCtl_enableWordProgramming                                    \
630         ((void (*)(uint32_t mode))ROM_FLASHCTLTABLE[13])
631 #endif
632 #if defined(TARGET_IS_MSP432P4XX)
633 #define ROM_FlashCtl_disableWordProgramming                                   \
634         ((void (*)(void))ROM_FLASHCTLTABLE[14])
635 #endif
636 #if defined(TARGET_IS_MSP432P4XX)
637 #define ROM_FlashCtl_isWordProgrammingEnabled                                 \
638         ((uint32_t (*)(void))ROM_FLASHCTLTABLE[15])
639 #endif
640 #if defined(TARGET_IS_MSP432P4XX)
641 #define ROM_FlashCtl_enableInterrupt                                          \
642         ((void (*)(uint32_t flags))ROM_FLASHCTLTABLE[16])
643 #endif
644 #if defined(TARGET_IS_MSP432P4XX)
645 #define ROM_FlashCtl_disableInterrupt                                         \
646         ((void (*)(uint32_t flags))ROM_FLASHCTLTABLE[17])
647 #endif
648 #if defined(TARGET_IS_MSP432P4XX)
649 #define ROM_FlashCtl_getEnabledInterruptStatus                                \
650         ((uint32_t (*)(void))ROM_FLASHCTLTABLE[18])
651 #endif
652 #if defined(TARGET_IS_MSP432P4XX)
653 #define ROM_FlashCtl_getInterruptStatus                                       \
654         ((uint32_t (*)(void))ROM_FLASHCTLTABLE[19])
655 #endif
656 #if defined(TARGET_IS_MSP432P4XX)
657 #define ROM_FlashCtl_clearInterruptFlag                                       \
658         ((void (*)(uint32_t flags))ROM_FLASHCTLTABLE[20])
659 #endif
660 #if defined(TARGET_IS_MSP432P4XX)
661 #define ROM_FlashCtl_setWaitState                                             \
662         ((void (*)(uint32_t bank,                                             \
663                    uint32_t waitState))ROM_FLASHCTLTABLE[21])
664 #endif
665 #if defined(TARGET_IS_MSP432P4XX)
666 #define ROM_FlashCtl_getWaitState                                             \
667         ((uint32_t (*)(uint32_t bank))ROM_FLASHCTLTABLE[22])
668 #endif
669 #if defined(TARGET_IS_MSP432P4XX)
670 #define ROM_FlashCtl_setReadMode                                              \
671         ((bool (*)(uint32_t flashBank,                                        \
672                    uint32_t readMode))ROM_FLASHCTLTABLE[23])
673 #endif
674 #if defined(TARGET_IS_MSP432P4XX)
675 #define ROM_FlashCtl_getReadMode                                              \
676         ((uint32_t (*)(uint32_t flashBank))ROM_FLASHCTLTABLE[24])
677 #endif
678
679 //*****************************************************************************
680 //
681 // Macros for calling ROM functions in the FPU API.
682 //
683 //*****************************************************************************
684 #if defined(TARGET_IS_MSP432P4XX)
685 #define ROM_FPU_enableModule                                                  \
686         ((void (*)(void))ROM_FPUTABLE[0])
687 #endif
688 #if defined(TARGET_IS_MSP432P4XX)
689 #define ROM_FPU_disableModule                                                 \
690         ((void (*)(void))ROM_FPUTABLE[1])
691 #endif
692 #if defined(TARGET_IS_MSP432P4XX)
693 #define ROM_FPU_enableStacking                                                \
694         ((void (*)(void))ROM_FPUTABLE[2])
695 #endif
696 #if defined(TARGET_IS_MSP432P4XX)
697 #define ROM_FPU_enableLazyStacking                                            \
698         ((void (*)(void))ROM_FPUTABLE[3])
699 #endif
700 #if defined(TARGET_IS_MSP432P4XX)
701 #define ROM_FPU_disableStacking                                               \
702         ((void (*)(void))ROM_FPUTABLE[4])
703 #endif
704 #if defined(TARGET_IS_MSP432P4XX)
705 #define ROM_FPU_setHalfPrecisionMode                                          \
706         ((void (*)(uint32_t mode))ROM_FPUTABLE[5])
707 #endif
708 #if defined(TARGET_IS_MSP432P4XX)
709 #define ROM_FPU_setNaNMode                                                    \
710         ((void (*)(uint32_t mode))ROM_FPUTABLE[6])
711 #endif
712 #if defined(TARGET_IS_MSP432P4XX)
713 #define ROM_FPU_setFlushToZeroMode                                            \
714         ((void (*)(uint32_t mode))ROM_FPUTABLE[7])
715 #endif
716 #if defined(TARGET_IS_MSP432P4XX)
717 #define ROM_FPU_setRoundingMode                                               \
718         ((void (*)(uint32_t mode))ROM_FPUTABLE[8])
719 #endif
720
721 //*****************************************************************************
722 //
723 // Macros for calling ROM functions in the GPIO API.
724 //
725 //*****************************************************************************
726
727
728 //*****************************************************************************
729 //
730 // Macros for calling ROM functions in the I2C API.
731 //
732 //*****************************************************************************
733 #if defined(TARGET_IS_MSP432P4XX)
734 #define ROM_I2C_initMaster                                                    \
735         ((void (*)(uint32_t moduleInstance,                                   \
736                    const eUSCI_I2C_MasterConfig *config))ROM_I2CTABLE[0])
737 #endif
738 #if defined(TARGET_IS_MSP432P4XX)
739 #define ROM_I2C_enableModule                                                  \
740         ((void (*)(uint32_t moduleInstance))ROM_I2CTABLE[2])
741 #endif
742 #if defined(TARGET_IS_MSP432P4XX)
743 #define ROM_I2C_disableModule                                                 \
744         ((void (*)(uint32_t moduleInstance))ROM_I2CTABLE[3])
745 #endif
746 #if defined(TARGET_IS_MSP432P4XX)
747 #define ROM_I2C_setMode                                                       \
748         ((void (*)(uint32_t moduleInstance,                                   \
749                    uint_fast8_t mode))ROM_I2CTABLE[5])
750 #endif
751 #if defined(TARGET_IS_MSP432P4XX)
752 #define ROM_I2C_slavePutData                                                  \
753         ((void (*)(uint32_t moduleInstance,                                   \
754                    uint8_t transmitData))ROM_I2CTABLE[6])
755 #endif
756 #if defined(TARGET_IS_MSP432P4XX)
757 #define ROM_I2C_slaveGetData                                                  \
758         ((uint8_t (*)(uint32_t moduleInstance))ROM_I2CTABLE[7])
759 #endif
760 #if defined(TARGET_IS_MSP432P4XX)
761 #define ROM_I2C_isBusBusy                                                     \
762         ((uint8_t (*)(uint32_t moduleInstance))ROM_I2CTABLE[8])
763 #endif
764 #if defined(TARGET_IS_MSP432P4XX)
765 #define ROM_I2C_masterSendSingleByte                                          \
766         ((void (*)(uint32_t moduleInstance,                                   \
767                    uint8_t txData))ROM_I2CTABLE[9])
768 #endif
769 #if defined(TARGET_IS_MSP432P4XX)
770 #define ROM_I2C_masterSendSingleByteWithTimeout                               \
771         ((bool (*)(uint32_t moduleInstance,                                   \
772                    uint8_t txData,                                            \
773                    uint32_t timeout))ROM_I2CTABLE[10])
774 #endif
775 #if defined(TARGET_IS_MSP432P4XX)
776 #define ROM_I2C_masterSendMultiByteStart                                      \
777         ((void (*)(uint32_t moduleInstance,                                   \
778                    uint8_t txData))ROM_I2CTABLE[11])
779 #endif
780 #if defined(TARGET_IS_MSP432P4XX)
781 #define ROM_I2C_masterSendMultiByteStartWithTimeout                           \
782         ((bool (*)(uint32_t moduleInstance,                                   \
783                    uint8_t txData,                                            \
784                    uint32_t timeout))ROM_I2CTABLE[12])
785 #endif
786 #if defined(TARGET_IS_MSP432P4XX)
787 #define ROM_I2C_masterSendMultiByteNext                                       \
788         ((void (*)(uint32_t moduleInstance,                                   \
789                    uint8_t txData))ROM_I2CTABLE[13])
790 #endif
791 #if defined(TARGET_IS_MSP432P4XX)
792 #define ROM_I2C_masterSendMultiByteNextWithTimeout                            \
793         ((bool (*)(uint32_t moduleInstance,                                   \
794                    uint8_t txData,                                            \
795                    uint32_t timeout))ROM_I2CTABLE[14])
796 #endif
797 #if defined(TARGET_IS_MSP432P4XX)
798 #define ROM_I2C_masterSendMultiByteFinish                                     \
799         ((void (*)(uint32_t moduleInstance,                                   \
800                    uint8_t txData))ROM_I2CTABLE[15])
801 #endif
802 #if defined(TARGET_IS_MSP432P4XX)
803 #define ROM_I2C_masterSendMultiByteFinishWithTimeout                          \
804         ((bool (*)(uint32_t moduleInstance,                                   \
805                    uint8_t txData,                                            \
806                    uint32_t timeout))ROM_I2CTABLE[16])
807 #endif
808 #if defined(TARGET_IS_MSP432P4XX)
809 #define ROM_I2C_masterSendMultiByteStop                                       \
810         ((void (*)(uint32_t moduleInstance))ROM_I2CTABLE[17])
811 #endif
812 #if defined(TARGET_IS_MSP432P4XX)
813 #define ROM_I2C_masterSendMultiByteStopWithTimeout                            \
814         ((bool (*)(uint32_t moduleInstance,                                   \
815                    uint32_t timeout))ROM_I2CTABLE[18])
816 #endif
817 #if defined(TARGET_IS_MSP432P4XX)
818 #define ROM_I2C_masterReceiveStart                                            \
819         ((void (*)(uint32_t moduleInstance))ROM_I2CTABLE[19])
820 #endif
821 #if defined(TARGET_IS_MSP432P4XX)
822 #define ROM_I2C_masterReceiveMultiByteNext                                    \
823         ((uint8_t (*)(uint32_t moduleInstance))ROM_I2CTABLE[20])
824 #endif
825 #if defined(TARGET_IS_MSP432P4XX)
826 #define ROM_I2C_masterReceiveMultiByteFinish                                  \
827         ((uint8_t (*)(uint32_t moduleInstance))ROM_I2CTABLE[21])
828 #endif
829 #if defined(TARGET_IS_MSP432P4XX)
830 #define ROM_I2C_masterReceiveMultiByteFinishWithTimeout                       \
831         ((bool (*)(uint32_t moduleInstance,                                   \
832                    uint8_t *txData,                                           \
833                    uint32_t timeout))ROM_I2CTABLE[22])
834 #endif
835 #if defined(TARGET_IS_MSP432P4XX)
836 #define ROM_I2C_masterReceiveMultiByteStop                                    \
837         ((void (*)(uint32_t moduleInstance))ROM_I2CTABLE[23])
838 #endif
839 #if defined(TARGET_IS_MSP432P4XX)
840 #define ROM_I2C_masterReceiveSingleByte                                       \
841         ((uint8_t (*)(uint32_t moduleInstance))ROM_I2CTABLE[24])
842 #endif
843 #if defined(TARGET_IS_MSP432P4XX)
844 #define ROM_I2C_masterReceiveSingle                                           \
845         ((uint8_t (*)(uint32_t moduleInstance))ROM_I2CTABLE[25])
846 #endif
847 #if defined(TARGET_IS_MSP432P4XX)
848 #define ROM_I2C_getReceiveBufferAddressForDMA                                 \
849         ((uint32_t (*)(uint32_t moduleInstance))ROM_I2CTABLE[26])
850 #endif
851 #if defined(TARGET_IS_MSP432P4XX)
852 #define ROM_I2C_getTransmitBufferAddressForDMA                                \
853         ((uint32_t (*)(uint32_t moduleInstance))ROM_I2CTABLE[27])
854 #endif
855 #if defined(TARGET_IS_MSP432P4XX)
856 #define ROM_I2C_masterIsStopSent                                              \
857         ((uint8_t (*)(uint32_t moduleInstance))ROM_I2CTABLE[28])
858 #endif
859 #if defined(TARGET_IS_MSP432P4XX)
860 #define ROM_I2C_masterIsStartSent                                             \
861         ((bool (*)(uint32_t moduleInstance))ROM_I2CTABLE[29])
862 #endif
863 #if defined(TARGET_IS_MSP432P4XX)
864 #define ROM_I2C_masterSendStart                                               \
865         ((void (*)(uint32_t moduleInstance))ROM_I2CTABLE[30])
866 #endif
867 #if defined(TARGET_IS_MSP432P4XX)
868 #define ROM_I2C_enableMultiMasterMode                                         \
869         ((void (*)(uint32_t moduleInstance))ROM_I2CTABLE[31])
870 #endif
871 #if defined(TARGET_IS_MSP432P4XX)
872 #define ROM_I2C_disableMultiMasterMode                                        \
873         ((void (*)(uint32_t moduleInstance))ROM_I2CTABLE[32])
874 #endif
875 #if defined(TARGET_IS_MSP432P4XX)
876 #define ROM_I2C_enableInterrupt                                               \
877         ((void (*)(uint32_t moduleInstance,                                   \
878                    uint_fast16_t mask))ROM_I2CTABLE[33])
879 #endif
880 #if defined(TARGET_IS_MSP432P4XX)
881 #define ROM_I2C_disableInterrupt                                              \
882         ((void (*)(uint32_t moduleInstance,                                   \
883                    uint_fast16_t mask))ROM_I2CTABLE[34])
884 #endif
885 #if defined(TARGET_IS_MSP432P4XX)
886 #define ROM_I2C_clearInterruptFlag                                            \
887         ((void (*)(uint32_t moduleInstance,                                   \
888                    uint_fast16_t mask))ROM_I2CTABLE[35])
889 #endif
890 #if defined(TARGET_IS_MSP432P4XX)
891 #define ROM_I2C_getEnabledInterruptStatus                                     \
892         ((uint_fast16_t (*)(uint32_t moduleInstance))ROM_I2CTABLE[37])
893 #endif
894 #if defined(TARGET_IS_MSP432P4XX)
895 #define ROM_I2C_getMode                                                       \
896         ((uint_fast8_t (*)(uint32_t moduleInstance))ROM_I2CTABLE[38])
897 #endif
898
899 //*****************************************************************************
900 //
901 // Macros for calling ROM functions in the Interrupt API.
902 //
903 //*****************************************************************************
904 #if defined(TARGET_IS_MSP432P4XX)
905 #define ROM_Interrupt_enableMaster                                            \
906         ((bool (*)(void))ROM_INTTABLE[0])
907 #endif
908 #if defined(TARGET_IS_MSP432P4XX)
909 #define ROM_Interrupt_disableMaster                                           \
910         ((bool (*)(void))ROM_INTTABLE[1])
911 #endif
912 #if defined(TARGET_IS_MSP432P4XX)
913 #define ROM_Interrupt_setPriorityGrouping                                     \
914         ((void (*)(uint32_t bits))ROM_INTTABLE[2])
915 #endif
916 #if defined(TARGET_IS_MSP432P4XX)
917 #define ROM_Interrupt_getPriorityGrouping                                     \
918         ((uint32_t (*)(void))ROM_INTTABLE[3])
919 #endif
920 #if defined(TARGET_IS_MSP432P4XX)
921 #define ROM_Interrupt_setPriority                                             \
922         ((void (*)(uint32_t interruptNumber,                                  \
923                    uint8_t priority))ROM_INTTABLE[4])
924 #endif
925 #if defined(TARGET_IS_MSP432P4XX)
926 #define ROM_Interrupt_getPriority                                             \
927         ((uint8_t (*)(uint32_t interruptNumber))ROM_INTTABLE[5])
928 #endif
929 #if defined(TARGET_IS_MSP432P4XX)
930 #define ROM_Interrupt_enableInterrupt                                         \
931         ((void (*)(uint32_t interruptNumber))ROM_INTTABLE[6])
932 #endif
933 #if defined(TARGET_IS_MSP432P4XX)
934 #define ROM_Interrupt_disableInterrupt                                        \
935         ((void (*)(uint32_t interruptNumber))ROM_INTTABLE[7])
936 #endif
937 #if defined(TARGET_IS_MSP432P4XX)
938 #define ROM_Interrupt_isEnabled                                               \
939         ((bool (*)(uint32_t interruptNumber))ROM_INTTABLE[8])
940 #endif
941 #if defined(TARGET_IS_MSP432P4XX)
942 #define ROM_Interrupt_pendInterrupt                                           \
943         ((void (*)(uint32_t interruptNumber))ROM_INTTABLE[9])
944 #endif
945 #if defined(TARGET_IS_MSP432P4XX)
946 #define ROM_Interrupt_setPriorityMask                                         \
947         ((void (*)(uint8_t priorityMask))ROM_INTTABLE[10])
948 #endif
949 #if defined(TARGET_IS_MSP432P4XX)
950 #define ROM_Interrupt_getPriorityMask                                         \
951         ((uint8_t (*)(void))ROM_INTTABLE[11])
952 #endif
953 #if defined(TARGET_IS_MSP432P4XX)
954 #define ROM_Interrupt_setVectorTableAddress                                   \
955         ((void (*)(uint32_t addr))ROM_INTTABLE[12])
956 #endif
957 #if defined(TARGET_IS_MSP432P4XX)
958 #define ROM_Interrupt_getVectorTableAddress                                   \
959         ((uint32_t (*)(void))ROM_INTTABLE[13])
960 #endif
961 #if defined(TARGET_IS_MSP432P4XX)
962 #define ROM_Interrupt_enableSleepOnIsrExit                                    \
963         ((void (*)(void))ROM_INTTABLE[14])
964 #endif
965 #if defined(TARGET_IS_MSP432P4XX)
966 #define ROM_Interrupt_disableSleepOnIsrExit                                   \
967         ((void (*)(void))ROM_INTTABLE[15])
968 #endif
969
970 //*****************************************************************************
971 //
972 // Macros for calling ROM functions in the MPU API.
973 //
974 //*****************************************************************************
975 #if defined(TARGET_IS_MSP432P4XX)
976 #define ROM_MPU_enableModule                                                  \
977         ((void (*)(uint32_t mpuConfig))ROM_MPUTABLE[0])
978 #endif
979 #if defined(TARGET_IS_MSP432P4XX)
980 #define ROM_MPU_disableModule                                                 \
981         ((void (*)(void))ROM_MPUTABLE[1])
982 #endif
983 #if defined(TARGET_IS_MSP432P4XX)
984 #define ROM_MPU_getRegionCount                                                \
985         ((uint32_t (*)(void))ROM_MPUTABLE[2])
986 #endif
987 #if defined(TARGET_IS_MSP432P4XX)
988 #define ROM_MPU_enableRegion                                                  \
989         ((void (*)(uint32_t region))ROM_MPUTABLE[3])
990 #endif
991 #if defined(TARGET_IS_MSP432P4XX)
992 #define ROM_MPU_disableRegion                                                 \
993         ((void (*)(uint32_t region))ROM_MPUTABLE[4])
994 #endif
995 #if defined(TARGET_IS_MSP432P4XX)
996 #define ROM_MPU_setRegion                                                     \
997         ((void (*)(uint32_t region,                                           \
998                    uint32_t addr,                                             \
999                    uint32_t flags))ROM_MPUTABLE[5])
1000 #endif
1001 #if defined(TARGET_IS_MSP432P4XX)
1002 #define ROM_MPU_getRegion                                                     \
1003         ((void (*)(uint32_t region,                                           \
1004                    uint32_t *addr,                                            \
1005                    uint32_t *pflags))ROM_MPUTABLE[6])
1006 #endif
1007 #if defined(TARGET_IS_MSP432P4XX)
1008 #define ROM_MPU_enableInterrupt                                               \
1009         ((void (*)(void))ROM_MPUTABLE[7])
1010 #endif
1011 #if defined(TARGET_IS_MSP432P4XX)
1012 #define ROM_MPU_disableInterrupt                                              \
1013         ((void (*)(void))ROM_MPUTABLE[8])
1014 #endif
1015
1016 //*****************************************************************************
1017 //
1018 // Macros for calling ROM functions in the PCM API.
1019 //
1020 //*****************************************************************************
1021 #if defined(TARGET_IS_MSP432P4XX)
1022 #define ROM_PCM_setCoreVoltageLevel                                           \
1023         ((bool (*)(uint_fast8_t voltageLevel))ROM_PCMTABLE[0])
1024 #endif
1025 #if defined(TARGET_IS_MSP432P4XX)
1026 #define ROM_PCM_getCoreVoltageLevel                                           \
1027         ((uint8_t (*)(void))ROM_PCMTABLE[1])
1028 #endif
1029 #if defined(TARGET_IS_MSP432P4XX)
1030 #define ROM_PCM_setCoreVoltageLevelWithTimeout                                \
1031         ((bool (*)(uint_fast8_t voltageLevel,                                 \
1032                    uint32_t timeOut))ROM_PCMTABLE[2])
1033 #endif
1034 #if defined(TARGET_IS_MSP432P4XX)
1035 #define ROM_PCM_setPowerMode                                                  \
1036         ((bool (*)(uint_fast8_t powerMode))ROM_PCMTABLE[3])
1037 #endif
1038 #if defined(TARGET_IS_MSP432P4XX)
1039 #define ROM_PCM_setPowerModeWithTimeout                                       \
1040         ((bool (*)(uint_fast8_t powerMode,                                    \
1041                    uint32_t timeOut))ROM_PCMTABLE[4])
1042 #endif
1043 #if defined(TARGET_IS_MSP432P4XX)
1044 #define ROM_PCM_getPowerMode                                                  \
1045         ((uint8_t (*)(void))ROM_PCMTABLE[5])
1046 #endif
1047 #if defined(TARGET_IS_MSP432P4XX)
1048 #define ROM_PCM_setPowerState                                                 \
1049         ((bool (*)(uint_fast8_t powerState))ROM_PCMTABLE[6])
1050 #endif
1051 #if defined(TARGET_IS_MSP432P4XX)
1052 #define ROM_PCM_getPowerState                                                 \
1053         ((uint8_t (*)(void))ROM_PCMTABLE[8])
1054 #endif
1055 #if defined(TARGET_IS_MSP432P4XX)
1056 #define ROM_PCM_gotoLPM0                                                      \
1057         ((bool (*)(void))ROM_PCMTABLE[10])
1058 #endif
1059 #if defined(TARGET_IS_MSP432P4XX)
1060 #define ROM_PCM_gotoLPM3                                                      \
1061         ((bool (*)(void))ROM_PCMTABLE[11])
1062 #endif
1063 #if defined(TARGET_IS_MSP432P4XX)
1064 #define ROM_PCM_enableInterrupt                                               \
1065         ((void (*)(uint32_t flags))ROM_PCMTABLE[12])
1066 #endif
1067 #if defined(TARGET_IS_MSP432P4XX)
1068 #define ROM_PCM_disableInterrupt                                              \
1069         ((void (*)(uint32_t flags))ROM_PCMTABLE[13])
1070 #endif
1071 #if defined(TARGET_IS_MSP432P4XX)
1072 #define ROM_PCM_getInterruptStatus                                            \
1073         ((uint32_t (*)(void))ROM_PCMTABLE[14])
1074 #endif
1075 #if defined(TARGET_IS_MSP432P4XX)
1076 #define ROM_PCM_getEnabledInterruptStatus                                     \
1077         ((uint32_t (*)(void))ROM_PCMTABLE[15])
1078 #endif
1079 #if defined(TARGET_IS_MSP432P4XX)
1080 #define ROM_PCM_clearInterruptFlag                                            \
1081         ((void (*)(uint32_t flags))ROM_PCMTABLE[16])
1082 #endif
1083
1084 //*****************************************************************************
1085 //
1086 // Macros for calling ROM functions in the PMAP API.
1087 //
1088 //*****************************************************************************
1089 #if defined(TARGET_IS_MSP432P4XX)
1090 #define ROM_PMAP_configurePorts                                               \
1091         ((void (*)(const uint8_t *portMapping,                                \
1092                    uint8_t pxMAPy,                                            \
1093                    uint8_t numberOfPorts,                                     \
1094                    uint8_t portMapReconfigure))ROM_PMAPTABLE[0])
1095 #endif
1096
1097 //*****************************************************************************
1098 //
1099 // Macros for calling ROM functions in the PSS API.
1100 //
1101 //*****************************************************************************
1102 #if defined(TARGET_IS_MSP432P4XX)
1103 #define ROM_PSS_enableHighSidePinToggle                                       \
1104         ((void (*)(bool activeLow))ROM_PSSTABLE[0])
1105 #endif
1106 #if defined(TARGET_IS_MSP432P4XX)
1107 #define ROM_PSS_disableHighSidePinToggle                                      \
1108         ((void (*)(void))ROM_PSSTABLE[1])
1109 #endif
1110 #if defined(TARGET_IS_MSP432P4XX)
1111 #define ROM_PSS_enableHighSide                                                \
1112         ((void (*)(void))ROM_PSSTABLE[2])
1113 #endif
1114 #if defined(TARGET_IS_MSP432P4XX)
1115 #define ROM_PSS_disableHighSide                                               \
1116         ((void (*)(void))ROM_PSSTABLE[3])
1117 #endif
1118 #if defined(TARGET_IS_MSP432P4XX)
1119 #define ROM_PSS_setHighSidePerformanceMode                                    \
1120         ((void (*)(uint_fast8_t powerMode))ROM_PSSTABLE[6])
1121 #endif
1122 #if defined(TARGET_IS_MSP432P4XX)
1123 #define ROM_PSS_getHighSidePerformanceMode                                    \
1124         ((uint_fast8_t (*)(void))ROM_PSSTABLE[7])
1125 #endif
1126 #if defined(TARGET_IS_MSP432P4XX)
1127 #define ROM_PSS_enableHighSideMonitor                                         \
1128         ((void (*)(void))ROM_PSSTABLE[10])
1129 #endif
1130 #if defined(TARGET_IS_MSP432P4XX)
1131 #define ROM_PSS_disableHighSideMonitor                                        \
1132         ((void (*)(void))ROM_PSSTABLE[11])
1133 #endif
1134 #if defined(TARGET_IS_MSP432P4XX)
1135 #define ROM_PSS_setHighSideVoltageTrigger                                     \
1136         ((void (*)(uint_fast8_t triggerVoltage))ROM_PSSTABLE[12])
1137 #endif
1138 #if defined(TARGET_IS_MSP432P4XX)
1139 #define ROM_PSS_getHighSideVoltageTrigger                                     \
1140         ((uint_fast8_t (*)(void))ROM_PSSTABLE[13])
1141 #endif
1142 #if defined(TARGET_IS_MSP432P4XX)
1143 #define ROM_PSS_enableInterrupt                                               \
1144         ((void (*)(void))ROM_PSSTABLE[14])
1145 #endif
1146 #if defined(TARGET_IS_MSP432P4XX)
1147 #define ROM_PSS_disableInterrupt                                              \
1148         ((void (*)(void))ROM_PSSTABLE[15])
1149 #endif
1150 #if defined(TARGET_IS_MSP432P4XX)
1151 #define ROM_PSS_getInterruptStatus                                            \
1152         ((uint32_t (*)(void))ROM_PSSTABLE[16])
1153 #endif
1154 #if defined(TARGET_IS_MSP432P4XX)
1155 #define ROM_PSS_clearInterruptFlag                                            \
1156         ((void (*)(void))ROM_PSSTABLE[17])
1157 #endif
1158
1159 //*****************************************************************************
1160 //
1161 // Macros for calling ROM functions in the Ref API.
1162 //
1163 //*****************************************************************************
1164 #if defined(TARGET_IS_MSP432P4XX)
1165 #define ROM_REF_A_setReferenceVoltage                                         \
1166         ((void (*)(uint_fast8_t referenceVoltageSelect))ROM_REFTABLE[0])
1167 #endif
1168 #if defined(TARGET_IS_MSP432P4XX)
1169 #define ROM_REF_A_disableTempSensor                                           \
1170         ((void (*)(void))ROM_REFTABLE[1])
1171 #endif
1172 #if defined(TARGET_IS_MSP432P4XX)
1173 #define ROM_REF_A_enableTempSensor                                            \
1174         ((void (*)(void))ROM_REFTABLE[2])
1175 #endif
1176 #if defined(TARGET_IS_MSP432P4XX)
1177 #define ROM_REF_A_enableReferenceVoltageOutput                                \
1178         ((void (*)(void))ROM_REFTABLE[3])
1179 #endif
1180 #if defined(TARGET_IS_MSP432P4XX)
1181 #define ROM_REF_A_disableReferenceVoltageOutput                               \
1182         ((void (*)(void))ROM_REFTABLE[4])
1183 #endif
1184 #if defined(TARGET_IS_MSP432P4XX)
1185 #define ROM_REF_A_enableReferenceVoltage                                      \
1186         ((void (*)(void))ROM_REFTABLE[5])
1187 #endif
1188 #if defined(TARGET_IS_MSP432P4XX)
1189 #define ROM_REF_A_disableReferenceVoltage                                     \
1190         ((void (*)(void))ROM_REFTABLE[6])
1191 #endif
1192 #if defined(TARGET_IS_MSP432P4XX)
1193 #define ROM_REF_A_getBandgapMode                                              \
1194         ((uint_fast8_t (*)(void))ROM_REFTABLE[7])
1195 #endif
1196 #if defined(TARGET_IS_MSP432P4XX)
1197 #define ROM_REF_A_isBandgapActive                                             \
1198         ((bool (*)(void))ROM_REFTABLE[8])
1199 #endif
1200 #if defined(TARGET_IS_MSP432P4XX)
1201 #define ROM_REF_A_isRefGenBusy                                                \
1202         ((bool (*)(void))ROM_REFTABLE[9])
1203 #endif
1204 #if defined(TARGET_IS_MSP432P4XX)
1205 #define ROM_REF_A_isRefGenActive                                              \
1206         ((bool (*)(void))ROM_REFTABLE[10])
1207 #endif
1208 #if defined(TARGET_IS_MSP432P4XX)
1209 #define ROM_REF_A_getBufferedBandgapVoltageStatus                             \
1210         ((bool (*)(void))ROM_REFTABLE[11])
1211 #endif
1212 #if defined(TARGET_IS_MSP432P4XX)
1213 #define ROM_REF_A_getVariableReferenceVoltageStatus                           \
1214         ((bool (*)(void))ROM_REFTABLE[12])
1215 #endif
1216 #if defined(TARGET_IS_MSP432P4XX)
1217 #define ROM_REF_A_setReferenceVoltageOneTimeTrigger                           \
1218         ((void (*)(void))ROM_REFTABLE[13])
1219 #endif
1220 #if defined(TARGET_IS_MSP432P4XX)
1221 #define ROM_REF_A_setBufferedBandgapVoltageOneTimeTrigger                     \
1222         ((void (*)(void))ROM_REFTABLE[14])
1223 #endif
1224
1225 //*****************************************************************************
1226 //
1227 // Macros for calling ROM functions in the ResetCtl API.
1228 //
1229 //*****************************************************************************
1230 #if defined(TARGET_IS_MSP432P4XX)
1231 #define ROM_ResetCtl_initiateSoftReset                                        \
1232         ((void (*)(void))ROM_RESETCTLTABLE[0])
1233 #endif
1234 #if defined(TARGET_IS_MSP432P4XX)
1235 #define ROM_ResetCtl_initiateSoftResetWithSource                              \
1236         ((void (*)(uint32_t source))ROM_RESETCTLTABLE[1])
1237 #endif
1238 #if defined(TARGET_IS_MSP432P4XX)
1239 #define ROM_ResetCtl_getSoftResetSource                                       \
1240         ((uint32_t (*)(void))ROM_RESETCTLTABLE[2])
1241 #endif
1242 #if defined(TARGET_IS_MSP432P4XX)
1243 #define ROM_ResetCtl_clearSoftResetSource                                     \
1244         ((void (*)(uint32_t mask))ROM_RESETCTLTABLE[3])
1245 #endif
1246 #if defined(TARGET_IS_MSP432P4XX)
1247 #define ROM_ResetCtl_initiateHardReset                                        \
1248         ((void (*)(void))ROM_RESETCTLTABLE[4])
1249 #endif
1250 #if defined(TARGET_IS_MSP432P4XX)
1251 #define ROM_ResetCtl_initiateHardResetWithSource                              \
1252         ((void (*)(uint32_t source))ROM_RESETCTLTABLE[5])
1253 #endif
1254 #if defined(TARGET_IS_MSP432P4XX)
1255 #define ROM_ResetCtl_getHardResetSource                                       \
1256         ((uint32_t (*)(void))ROM_RESETCTLTABLE[6])
1257 #endif
1258 #if defined(TARGET_IS_MSP432P4XX)
1259 #define ROM_ResetCtl_clearHardResetSource                                     \
1260         ((void (*)(uint32_t mask))ROM_RESETCTLTABLE[7])
1261 #endif
1262 #if defined(TARGET_IS_MSP432P4XX)
1263 #define ROM_ResetCtl_getPSSSource                                             \
1264         ((uint32_t (*)(void))ROM_RESETCTLTABLE[8])
1265 #endif
1266 #if defined(TARGET_IS_MSP432P4XX)
1267 #define ROM_ResetCtl_clearPSSFlags                                            \
1268         ((void (*)(void))ROM_RESETCTLTABLE[9])
1269 #endif
1270 #if defined(TARGET_IS_MSP432P4XX)
1271 #define ROM_ResetCtl_getPCMSource                                             \
1272         ((uint32_t (*)(void))ROM_RESETCTLTABLE[10])
1273 #endif
1274 #if defined(TARGET_IS_MSP432P4XX)
1275 #define ROM_ResetCtl_clearPCMFlags                                            \
1276         ((void (*)(void))ROM_RESETCTLTABLE[11])
1277 #endif
1278
1279 //*****************************************************************************
1280 //
1281 // Macros for calling ROM functions in the RTC API.
1282 //
1283 //*****************************************************************************
1284 #if defined(TARGET_IS_MSP432P4XX)
1285 #define ROM_RTC_C_startClock                                                  \
1286         ((void (*)(void))ROM_RTCTABLE[0])
1287 #endif
1288 #if defined(TARGET_IS_MSP432P4XX)
1289 #define ROM_RTC_C_holdClock                                                   \
1290         ((void (*)(void))ROM_RTCTABLE[1])
1291 #endif
1292 #if defined(TARGET_IS_MSP432P4XX)
1293 #define ROM_RTC_C_setCalibrationFrequency                                     \
1294         ((void (*)(uint_fast16_t frequencySelect))ROM_RTCTABLE[2])
1295 #endif
1296 #if defined(TARGET_IS_MSP432P4XX)
1297 #define ROM_RTC_C_setCalibrationData                                          \
1298         ((void (*)(uint_fast8_t offsetDirection,                              \
1299                    uint_fast8_t offsetValue))ROM_RTCTABLE[3])
1300 #endif
1301 #if defined(TARGET_IS_MSP432P4XX)
1302 #define ROM_RTC_C_setTemperatureCompensation                                  \
1303         ((bool (*)(uint_fast16_t offsetDirection,                             \
1304                    uint_fast8_t offsetValue))ROM_RTCTABLE[4])
1305 #endif
1306 #if defined(TARGET_IS_MSP432P4XX)
1307 #define ROM_RTC_C_initCalendar                                                \
1308         ((void (*)(const RTC_C_Calendar *calendarTime,                        \
1309                    uint_fast16_t formatSelect))ROM_RTCTABLE[5])
1310 #endif
1311 #if defined(TARGET_IS_MSP432P4XX)
1312 #define ROM_RTC_C_getCalendarTime                                             \
1313         ((RTC_C_Calendar (*)(void))ROM_RTCTABLE[6])
1314 #endif
1315 #if defined(TARGET_IS_MSP432P4XX)
1316 #define ROM_RTC_C_setCalendarAlarm                                            \
1317         ((void (*)(uint_fast8_t minutesAlarm,                                 \
1318                    uint_fast8_t hoursAlarm,                                   \
1319                    uint_fast8_t dayOfWeekAlarm,                               \
1320                    uint_fast8_t dayOfmonthAlarm))ROM_RTCTABLE[7])
1321 #endif
1322 #if defined(TARGET_IS_MSP432P4XX)
1323 #define ROM_RTC_C_setCalendarEvent                                            \
1324         ((void (*)(uint_fast16_t eventSelect))ROM_RTCTABLE[8])
1325 #endif
1326 #if defined(TARGET_IS_MSP432P4XX)
1327 #define ROM_RTC_C_definePrescaleEvent                                         \
1328         ((void (*)(uint_fast8_t prescaleSelect,                               \
1329                    uint_fast8_t prescaleEventDivider))ROM_RTCTABLE[9])
1330 #endif
1331 #if defined(TARGET_IS_MSP432P4XX)
1332 #define ROM_RTC_C_convertBCDToBinary                                          \
1333         ((uint16_t (*)(uint16_t valueToConvert))ROM_RTCTABLE[12])
1334 #endif
1335 #if defined(TARGET_IS_MSP432P4XX)
1336 #define ROM_RTC_C_convertBinaryToBCD                                          \
1337         ((uint16_t (*)(uint16_t valueToConvert))ROM_RTCTABLE[13])
1338 #endif
1339 #if defined(TARGET_IS_MSP432P4XX)
1340 #define ROM_RTC_C_enableInterrupt                                             \
1341         ((void (*)(uint8_t interruptMask))ROM_RTCTABLE[14])
1342 #endif
1343 #if defined(TARGET_IS_MSP432P4XX)
1344 #define ROM_RTC_C_disableInterrupt                                            \
1345         ((void (*)(uint8_t interruptMask))ROM_RTCTABLE[15])
1346 #endif
1347 #if defined(TARGET_IS_MSP432P4XX)
1348 #define ROM_RTC_C_getInterruptStatus                                          \
1349         ((uint_fast8_t (*)(void))ROM_RTCTABLE[16])
1350 #endif
1351 #if defined(TARGET_IS_MSP432P4XX)
1352 #define ROM_RTC_C_getEnabledInterruptStatus                                   \
1353         ((uint_fast8_t (*)(void))ROM_RTCTABLE[17])
1354 #endif
1355 #if defined(TARGET_IS_MSP432P4XX)
1356 #define ROM_RTC_C_clearInterruptFlag                                          \
1357         ((void (*)(uint_fast8_t interruptFlagMask))ROM_RTCTABLE[18])
1358 #endif
1359
1360 //*****************************************************************************
1361 //
1362 // Macros for calling ROM functions in the SPI API.
1363 //
1364 //*****************************************************************************
1365 #if defined(TARGET_IS_MSP432P4XX)
1366 #define ROM_SPI_initMaster                                                    \
1367         ((bool (*)(uint32_t moduleInstance,                                   \
1368                    const eUSCI_SPI_MasterConfig *config))ROM_SPITABLE[0])
1369 #endif
1370 #if defined(TARGET_IS_MSP432P4XX)
1371 #define ROM_SPI_selectFourPinFunctionality                                    \
1372         ((void (*)(uint32_t moduleInstance,                                   \
1373                    uint_fast8_t select4PinFunctionality))ROM_SPITABLE[1])
1374 #endif
1375 #if defined(TARGET_IS_MSP432P4XX)
1376 #define ROM_SPI_changeMasterClock                                             \
1377         ((void (*)(uint32_t moduleInstance,                                   \
1378                    uint32_t clockSourceFrequency,                             \
1379                    uint32_t desiredSpiClock))ROM_SPITABLE[2])
1380 #endif
1381 #if defined(TARGET_IS_MSP432P4XX)
1382 #define ROM_SPI_initSlave                                                     \
1383         ((bool (*)(uint32_t moduleInstance,                                   \
1384                    const eUSCI_SPI_SlaveConfig *config))ROM_SPITABLE[3])
1385 #endif
1386 #if defined(TARGET_IS_MSP432P4XX)
1387 #define ROM_SPI_changeClockPhasePolarity                                      \
1388         ((void (*)(uint32_t moduleInstance,                                   \
1389                    uint_fast16_t clockPhase,                                  \
1390                    uint_fast16_t clockPolarity))ROM_SPITABLE[4])
1391 #endif
1392 #if defined(TARGET_IS_MSP432P4XX)
1393 #define ROM_SPI_transmitData                                                  \
1394         ((void (*)(uint32_t moduleInstance,                                   \
1395                    uint_fast8_t transmitData))ROM_SPITABLE[5])
1396 #endif
1397 #if defined(TARGET_IS_MSP432P4XX)
1398 #define ROM_SPI_receiveData                                                   \
1399         ((uint8_t (*)(uint32_t moduleInstance))ROM_SPITABLE[6])
1400 #endif
1401 #if defined(TARGET_IS_MSP432P4XX)
1402 #define ROM_SPI_enableModule                                                  \
1403         ((void (*)(uint32_t moduleInstance))ROM_SPITABLE[7])
1404 #endif
1405 #if defined(TARGET_IS_MSP432P4XX)
1406 #define ROM_SPI_disableModule                                                 \
1407         ((void (*)(uint32_t moduleInstance))ROM_SPITABLE[8])
1408 #endif
1409 #if defined(TARGET_IS_MSP432P4XX)
1410 #define ROM_SPI_getReceiveBufferAddressForDMA                                 \
1411         ((uint32_t (*)(uint32_t moduleInstance))ROM_SPITABLE[9])
1412 #endif
1413 #if defined(TARGET_IS_MSP432P4XX)
1414 #define ROM_SPI_getTransmitBufferAddressForDMA                                \
1415         ((uint32_t (*)(uint32_t moduleInstance))ROM_SPITABLE[10])
1416 #endif
1417 #if defined(TARGET_IS_MSP432P4XX)
1418 #define ROM_SPI_isBusy                                                        \
1419         ((uint_fast8_t (*)(uint32_t moduleInstance))ROM_SPITABLE[11])
1420 #endif
1421 #if defined(TARGET_IS_MSP432P4XX)
1422 #define ROM_SPI_enableInterrupt                                               \
1423         ((void (*)(uint32_t moduleInstance,                                   \
1424                    uint_fast8_t mask))ROM_SPITABLE[12])
1425 #endif
1426 #if defined(TARGET_IS_MSP432P4XX)
1427 #define ROM_SPI_disableInterrupt                                              \
1428         ((void (*)(uint32_t moduleInstance,                                   \
1429                    uint_fast8_t mask))ROM_SPITABLE[13])
1430 #endif
1431 #if defined(TARGET_IS_MSP432P4XX)
1432 #define ROM_SPI_getEnabledInterruptStatus                                     \
1433         ((uint_fast8_t (*)(uint32_t moduleInstance))ROM_SPITABLE[15])
1434 #endif
1435 #if defined(TARGET_IS_MSP432P4XX)
1436 #define ROM_SPI_clearInterruptFlag                                            \
1437         ((void (*)(uint32_t moduleInstance,                                   \
1438                    uint_fast8_t mask))ROM_SPITABLE[16])
1439 #endif
1440
1441 //*****************************************************************************
1442 //
1443 // Macros for calling ROM functions in the SysCtl API.
1444 //
1445 //*****************************************************************************
1446 #if defined(TARGET_IS_MSP432P4XX)
1447 #define ROM_SysCtl_getSRAMSize                                                \
1448         ((uint_least32_t (*)(void))ROM_SYSCTLTABLE[0])
1449 #endif
1450 #if defined(TARGET_IS_MSP432P4XX)
1451 #define ROM_SysCtl_getFlashSize                                               \
1452         ((uint_least32_t (*)(void))ROM_SYSCTLTABLE[1])
1453 #endif
1454 #if defined(TARGET_IS_MSP432P4XX)
1455 #define ROM_SysCtl_rebootDevice                                               \
1456         ((void (*)(void))ROM_SYSCTLTABLE[2])
1457 #endif
1458 #if defined(TARGET_IS_MSP432P4XX)
1459 #define ROM_SysCtl_enablePeripheralAtCPUHalt                                  \
1460         ((void (*)(uint_fast16_t devices))ROM_SYSCTLTABLE[7])
1461 #endif
1462 #if defined(TARGET_IS_MSP432P4XX)
1463 #define ROM_SysCtl_disablePeripheralAtCPUHalt                                 \
1464         ((void (*)(uint_fast16_t devices))ROM_SYSCTLTABLE[8])
1465 #endif
1466 #if defined(TARGET_IS_MSP432P4XX)
1467 #define ROM_SysCtl_setWDTTimeoutResetType                                     \
1468         ((void (*)(uint_fast8_t resetType))ROM_SYSCTLTABLE[9])
1469 #endif
1470 #if defined(TARGET_IS_MSP432P4XX)
1471 #define ROM_SysCtl_setWDTPasswordViolationResetType                           \
1472         ((void (*)(uint_fast8_t resetType))ROM_SYSCTLTABLE[10])
1473 #endif
1474 #if defined(TARGET_IS_MSP432P4XX)
1475 #define ROM_SysCtl_disableNMISource                                           \
1476         ((void (*)(uint_fast8_t flags))ROM_SYSCTLTABLE[11])
1477 #endif
1478 #if defined(TARGET_IS_MSP432P4XX)
1479 #define ROM_SysCtl_enableNMISource                                            \
1480         ((void (*)(uint_fast8_t flags))ROM_SYSCTLTABLE[12])
1481 #endif
1482 #if defined(TARGET_IS_MSP432P4XX)
1483 #define ROM_SysCtl_getNMISourceStatus                                         \
1484         ((uint_fast8_t (*)(void))ROM_SYSCTLTABLE[13])
1485 #endif
1486
1487 //*****************************************************************************
1488 //
1489 // Macros for calling ROM functions in the SysTick API.
1490 //
1491 //*****************************************************************************
1492 #if defined(TARGET_IS_MSP432P4XX)
1493 #define ROM_SysTick_enableModule                                              \
1494         ((void (*)(void))ROM_SYSTICKTABLE[0])
1495 #endif
1496 #if defined(TARGET_IS_MSP432P4XX)
1497 #define ROM_SysTick_disableModule                                             \
1498         ((void (*)(void))ROM_SYSTICKTABLE[1])
1499 #endif
1500 #if defined(TARGET_IS_MSP432P4XX)
1501 #define ROM_SysTick_enableInterrupt                                           \
1502         ((void (*)(void))ROM_SYSTICKTABLE[2])
1503 #endif
1504 #if defined(TARGET_IS_MSP432P4XX)
1505 #define ROM_SysTick_disableInterrupt                                          \
1506         ((void (*)(void))ROM_SYSTICKTABLE[3])
1507 #endif
1508 #if defined(TARGET_IS_MSP432P4XX)
1509 #define ROM_SysTick_setPeriod                                                 \
1510         ((void (*)(uint32_t period))ROM_SYSTICKTABLE[4])
1511 #endif
1512 #if defined(TARGET_IS_MSP432P4XX)
1513 #define ROM_SysTick_getPeriod                                                 \
1514         ((uint32_t (*)(void))ROM_SYSTICKTABLE[5])
1515 #endif
1516 #if defined(TARGET_IS_MSP432P4XX)
1517 #define ROM_SysTick_getValue                                                  \
1518         ((uint32_t (*)(void))ROM_SYSTICKTABLE[6])
1519 #endif
1520
1521 //*****************************************************************************
1522 //
1523 // Macros for calling ROM functions in the Timer_A API.
1524 //
1525 //*****************************************************************************
1526 #if defined(TARGET_IS_MSP432P4XX)
1527 #define ROM_Timer_A_startCounter                                              \
1528         ((void (*)(uint32_t timer,                                            \
1529                    uint_fast16_t timerMode))ROM_TIMER_ATABLE[0])
1530 #endif
1531 #if defined(TARGET_IS_MSP432P4XX)
1532 #define ROM_Timer_A_configureContinuousMode                                   \
1533         ((void (*)(uint32_t timer,                                            \
1534                    const Timer_A_ContinuousModeConfig *config))ROM_TIMER_ATABLE[1])
1535 #endif
1536 #if defined(TARGET_IS_MSP432P4XX)
1537 #define ROM_Timer_A_configureUpMode                                           \
1538         ((void (*)(uint32_t timer,                                            \
1539                    const Timer_A_UpModeConfig *config))ROM_TIMER_ATABLE[2])
1540 #endif
1541 #if defined(TARGET_IS_MSP432P4XX)
1542 #define ROM_Timer_A_configureUpDownMode                                       \
1543         ((void (*)(uint32_t timer,                                            \
1544                    const Timer_A_UpDownModeConfig *config))ROM_TIMER_ATABLE[3])
1545 #endif
1546 #if defined(TARGET_IS_MSP432P4XX)
1547 #define ROM_Timer_A_initCapture                                               \
1548         ((void (*)(uint32_t timer,                                            \
1549                    const Timer_A_CaptureModeConfig *config))ROM_TIMER_ATABLE[4])
1550 #endif
1551 #if defined(TARGET_IS_MSP432P4XX)
1552 #define ROM_Timer_A_initCompare                                               \
1553         ((void (*)(uint32_t timer,                                            \
1554                    const Timer_A_CompareModeConfig *config))ROM_TIMER_ATABLE[5])
1555 #endif
1556 #if defined(TARGET_IS_MSP432P4XX)
1557 #define ROM_Timer_A_clearTimer                                                \
1558         ((void (*)(uint32_t timer))ROM_TIMER_ATABLE[6])
1559 #endif
1560 #if defined(TARGET_IS_MSP432P4XX)
1561 #define ROM_Timer_A_getSynchronizedCaptureCompareInput                        \
1562         ((uint_fast8_t (*)(uint32_t timer,                                    \
1563                            uint_fast16_t captureCompareRegister,              \
1564                            uint_fast16_t synchronizedSetting))ROM_TIMER_ATABLE[7])
1565 #endif
1566 #if defined(TARGET_IS_MSP432P4XX)
1567 #define ROM_Timer_A_getOutputForOutputModeOutBitValue                         \
1568         ((uint_fast8_t (*)(uint32_t timer,                                    \
1569                            uint_fast16_t captureCompareRegister))ROM_TIMER_ATABLE[8])
1570 #endif
1571 #if defined(TARGET_IS_MSP432P4XX)
1572 #define ROM_Timer_A_getCaptureCompareCount                                    \
1573         ((uint_fast16_t (*)(uint32_t timer,                                   \
1574                             uint_fast16_t captureCompareRegister))ROM_TIMER_ATABLE[9])
1575 #endif
1576 #if defined(TARGET_IS_MSP432P4XX)
1577 #define ROM_Timer_A_setOutputForOutputModeOutBitValue                         \
1578         ((void (*)(uint32_t timer,                                            \
1579                    uint_fast16_t captureCompareRegister,                      \
1580                    uint_fast8_t outputModeOutBitValue))ROM_TIMER_ATABLE[10])
1581 #endif
1582 #if defined(TARGET_IS_MSP432P4XX)
1583 #define ROM_Timer_A_generatePWM                                               \
1584         ((void (*)(uint32_t timer,                                            \
1585                    const Timer_A_PWMConfig *config))ROM_TIMER_ATABLE[11])
1586 #endif
1587 #if defined(TARGET_IS_MSP432P4XX)
1588 #define ROM_Timer_A_stopTimer                                                 \
1589         ((void (*)(uint32_t timer))ROM_TIMER_ATABLE[12])
1590 #endif
1591 #if defined(TARGET_IS_MSP432P4XX)
1592 #define ROM_Timer_A_setCompareValue                                           \
1593         ((void (*)(uint32_t timer,                                            \
1594                    uint_fast16_t compareRegister,                             \
1595                    uint_fast16_t compareValue))ROM_TIMER_ATABLE[13])
1596 #endif
1597 #if defined(TARGET_IS_MSP432P4XX)
1598 #define ROM_Timer_A_clearInterruptFlag                                        \
1599         ((void (*)(uint32_t timer))ROM_TIMER_ATABLE[14])
1600 #endif
1601 #if defined(TARGET_IS_MSP432P4XX)
1602 #define ROM_Timer_A_clearCaptureCompareInterrupt                              \
1603         ((void (*)(uint32_t timer,                                            \
1604                    uint_fast16_t captureCompareRegister))ROM_TIMER_ATABLE[15])
1605 #endif
1606 #if defined(TARGET_IS_MSP432P4XX)
1607 #define ROM_Timer_A_enableInterrupt                                           \
1608         ((void (*)(uint32_t timer))ROM_TIMER_ATABLE[16])
1609 #endif
1610 #if defined(TARGET_IS_MSP432P4XX)
1611 #define ROM_Timer_A_disableInterrupt                                          \
1612         ((void (*)(uint32_t timer))ROM_TIMER_ATABLE[17])
1613 #endif
1614 #if defined(TARGET_IS_MSP432P4XX)
1615 #define ROM_Timer_A_getInterruptStatus                                        \
1616         ((uint32_t (*)(uint32_t timer))ROM_TIMER_ATABLE[18])
1617 #endif
1618 #if defined(TARGET_IS_MSP432P4XX)
1619 #define ROM_Timer_A_getEnabledInterruptStatus                                 \
1620         ((uint32_t (*)(uint32_t timer))ROM_TIMER_ATABLE[19])
1621 #endif
1622 #if defined(TARGET_IS_MSP432P4XX)
1623 #define ROM_Timer_A_enableCaptureCompareInterrupt                             \
1624         ((void (*)(uint32_t timer,                                            \
1625                    uint_fast16_t captureCompareRegister))ROM_TIMER_ATABLE[20])
1626 #endif
1627 #if defined(TARGET_IS_MSP432P4XX)
1628 #define ROM_Timer_A_disableCaptureCompareInterrupt                            \
1629         ((void (*)(uint32_t timer,                                            \
1630                    uint_fast16_t captureCompareRegister))ROM_TIMER_ATABLE[21])
1631 #endif
1632 #if defined(TARGET_IS_MSP432P4XX)
1633 #define ROM_Timer_A_getCaptureCompareInterruptStatus                          \
1634         (( (*)(,                                                              \
1635               ))ROM_TIMER_ATABLE[22])
1636 #endif
1637 #if defined(TARGET_IS_MSP432P4XX)
1638 #define ROM_Timer_A_getCaptureCompareEnabledInterruptStatus                   \
1639         ((uint32_t (*)(uint32_t timer,                                        \
1640                        uint_fast16_t captureCompareRegister))ROM_TIMER_ATABLE[23])
1641 #endif
1642
1643 //*****************************************************************************
1644 //
1645 // Macros for calling ROM functions in the Timer32 API.
1646 //
1647 //*****************************************************************************
1648 #if defined(TARGET_IS_MSP432P4XX)
1649 #define ROM_Timer32_initModule                                                \
1650         ((void (*)(uint32_t timer,                                            \
1651                    uint32_t preScaler,                                        \
1652                    uint32_t resolution,                                       \
1653                    uint32_t mode))ROM_TIMER32TABLE[0])
1654 #endif
1655 #if defined(TARGET_IS_MSP432P4XX)
1656 #define ROM_Timer32_setCount                                                  \
1657         ((void (*)(uint32_t timer,                                            \
1658                    uint32_t count))ROM_TIMER32TABLE[1])
1659 #endif
1660 #if defined(TARGET_IS_MSP432P4XX)
1661 #define ROM_Timer32_setCountInBackground                                      \
1662         ((void (*)(uint32_t timer,                                            \
1663                    uint32_t count))ROM_TIMER32TABLE[2])
1664 #endif
1665 #if defined(TARGET_IS_MSP432P4XX)
1666 #define ROM_Timer32_getValue                                                  \
1667         ((uint32_t (*)(uint32_t timer))ROM_TIMER32TABLE[3])
1668 #endif
1669 #if defined(TARGET_IS_MSP432P4XX)
1670 #define ROM_Timer32_startTimer                                                \
1671         ((void (*)(uint32_t timer,                                            \
1672                    bool oneShot))ROM_TIMER32TABLE[4])
1673 #endif
1674 #if defined(TARGET_IS_MSP432P4XX)
1675 #define ROM_Timer32_haltTimer                                                 \
1676         ((void (*)(uint32_t timer))ROM_TIMER32TABLE[5])
1677 #endif
1678 #if defined(TARGET_IS_MSP432P4XX)
1679 #define ROM_Timer32_enableInterrupt                                           \
1680         ((void (*)(uint32_t timer))ROM_TIMER32TABLE[6])
1681 #endif
1682 #if defined(TARGET_IS_MSP432P4XX)
1683 #define ROM_Timer32_disableInterrupt                                          \
1684         ((void (*)(uint32_t timer))ROM_TIMER32TABLE[7])
1685 #endif
1686 #if defined(TARGET_IS_MSP432P4XX)
1687 #define ROM_Timer32_clearInterruptFlag                                        \
1688         ((void (*)(uint32_t timer))ROM_TIMER32TABLE[8])
1689 #endif
1690 #if defined(TARGET_IS_MSP432P4XX)
1691 #define ROM_Timer32_getInterruptStatus                                        \
1692         ((uint32_t (*)(uint32_t timer))ROM_TIMER32TABLE[9])
1693 #endif
1694
1695 //*****************************************************************************
1696 //
1697 // Macros for calling ROM functions in the UART API.
1698 //
1699 //*****************************************************************************
1700 #if defined(TARGET_IS_MSP432P4XX)
1701 #define ROM_UART_initModule                                                   \
1702         ((bool (*)(uint32_t moduleInstance,                                   \
1703                    const eUSCI_UART_Config *config))ROM_UARTTABLE[0])
1704 #endif
1705 #if defined(TARGET_IS_MSP432P4XX)
1706 #define ROM_UART_transmitData                                                 \
1707         ((void (*)(uint32_t moduleInstance,                                   \
1708                    uint_fast8_t transmitData))ROM_UARTTABLE[1])
1709 #endif
1710 #if defined(TARGET_IS_MSP432P4XX)
1711 #define ROM_UART_enableModule                                                 \
1712         ((void (*)(uint32_t moduleInstance))ROM_UARTTABLE[2])
1713 #endif
1714 #if defined(TARGET_IS_MSP432P4XX)
1715 #define ROM_UART_disableModule                                                \
1716         ((void (*)(uint32_t moduleInstance))ROM_UARTTABLE[3])
1717 #endif
1718 #if defined(TARGET_IS_MSP432P4XX)
1719 #define ROM_UART_queryStatusFlags                                             \
1720         ((uint_fast8_t (*)(uint32_t moduleInstance,                           \
1721                            uint_fast8_t mask))ROM_UARTTABLE[4])
1722 #endif
1723 #if defined(TARGET_IS_MSP432P4XX)
1724 #define ROM_UART_setDormant                                                   \
1725         ((void (*)(uint32_t moduleInstance))ROM_UARTTABLE[5])
1726 #endif
1727 #if defined(TARGET_IS_MSP432P4XX)
1728 #define ROM_UART_resetDormant                                                 \
1729         ((void (*)(uint32_t moduleInstance))ROM_UARTTABLE[6])
1730 #endif
1731 #if defined(TARGET_IS_MSP432P4XX)
1732 #define ROM_UART_transmitAddress                                              \
1733         ((void (*)(uint32_t moduleInstance,                                   \
1734                    uint_fast8_t transmitAddress))ROM_UARTTABLE[7])
1735 #endif
1736 #if defined(TARGET_IS_MSP432P4XX)
1737 #define ROM_UART_transmitBreak                                                \
1738         ((void (*)(uint32_t moduleInstance))ROM_UARTTABLE[8])
1739 #endif
1740 #if defined(TARGET_IS_MSP432P4XX)
1741 #define ROM_UART_getReceiveBufferAddressForDMA                                \
1742         ((uint32_t (*)(uint32_t moduleInstance))ROM_UARTTABLE[9])
1743 #endif
1744 #if defined(TARGET_IS_MSP432P4XX)
1745 #define ROM_UART_getTransmitBufferAddressForDMA                               \
1746         ((uint32_t (*)(uint32_t moduleInstance))ROM_UARTTABLE[10])
1747 #endif
1748 #if defined(TARGET_IS_MSP432P4XX)
1749 #define ROM_UART_selectDeglitchTime                                           \
1750         ((void (*)(uint32_t moduleInstance,                                   \
1751                    uint32_t deglitchTime))ROM_UARTTABLE[11])
1752 #endif
1753 #if defined(TARGET_IS_MSP432P4XX)
1754 #define ROM_UART_enableInterrupt                                              \
1755         ((void (*)(uint32_t moduleInstance,                                   \
1756                    uint_fast8_t mask))ROM_UARTTABLE[12])
1757 #endif
1758 #if defined(TARGET_IS_MSP432P4XX)
1759 #define ROM_UART_disableInterrupt                                             \
1760         ((void (*)(uint32_t moduleInstance,                                   \
1761                    uint_fast8_t mask))ROM_UARTTABLE[13])
1762 #endif
1763 #if defined(TARGET_IS_MSP432P4XX)
1764 #define ROM_UART_clearInterruptFlag                                           \
1765         ((void (*)(uint32_t moduleInstance,                                   \
1766                    uint_fast8_t mask))ROM_UARTTABLE[15])
1767 #endif
1768 #if defined(TARGET_IS_MSP432P4XX)
1769 #define ROM_UART_receiveData                                                  \
1770         ((uint8_t (*)(uint32_t moduleInstance))ROM_UARTTABLE[16])
1771 #endif
1772 #if defined(TARGET_IS_MSP432P4XX)
1773 #define ROM_UART_getEnabledInterruptStatus                                    \
1774         ((uint_fast8_t (*)(uint32_t moduleInstance))ROM_UARTTABLE[17])
1775 #endif
1776
1777 //*****************************************************************************
1778 //
1779 // Macros for calling ROM functions in the WDT API.
1780 //
1781 //*****************************************************************************
1782 #if defined(TARGET_IS_MSP432P4XX)
1783 #define ROM_WDT_A_holdTimer                                                   \
1784         ((void (*)(void))ROM_WDTTABLE[0])
1785 #endif
1786 #if defined(TARGET_IS_MSP432P4XX)
1787 #define ROM_WDT_A_startTimer                                                  \
1788         ((void (*)(void))ROM_WDTTABLE[1])
1789 #endif
1790 #if defined(TARGET_IS_MSP432P4XX)
1791 #define ROM_WDT_A_clearTimer                                                  \
1792         ((void (*)(void))ROM_WDTTABLE[2])
1793 #endif
1794 #if defined(TARGET_IS_MSP432P4XX)
1795 #define ROM_WDT_A_initWatchdogTimer                                           \
1796         ((void (*)(uint_fast8_t clockSelect,                                  \
1797                    uint_fast8_t clockDivider))ROM_WDTTABLE[3])
1798 #endif
1799 #if defined(TARGET_IS_MSP432P4XX)
1800 #define ROM_WDT_A_initIntervalTimer                                           \
1801         ((void (*)(uint_fast8_t clockSelect,                                  \
1802                    uint_fast8_t clockDivider))ROM_WDTTABLE[4])
1803 #endif
1804
1805 #endif // __ROM_H__