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