2 * -------------------------------------------
3 * MSP432 DriverLib - v01_04_00_18
4 * -------------------------------------------
6 * --COPYRIGHT--,BSD,BSD
7 * Copyright (c) 2015, Texas Instruments Incorporated
10 * Redistribution and use in source and binary forms, with or without
11 * modification, are permitted provided that the following conditions
14 * * Redistributions of source code must retain the above copyright
15 * notice, this list of conditions and the following disclaimer.
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.
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.
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.
40 //*****************************************************************************
42 // Pointers to the main API tables.
44 //*****************************************************************************
45 #define ROM_APITABLE ((unsigned long *)0x02000800)
46 #define ROM_VERSION (ROM_APITABLE[0])
47 #define ROM_ADC14TABLE ((unsigned long *)(ROM_APITABLE[1]))
48 #define ROM_AES256TABLE ((unsigned long *)(ROM_APITABLE[2]))
49 #define ROM_COMPTABLE ((unsigned long *)(ROM_APITABLE[3]))
50 #define ROM_CRC32TABLE ((unsigned long *)(ROM_APITABLE[4]))
51 #define ROM_CSTABLE ((unsigned long *)(ROM_APITABLE[5]))
52 #define ROM_DMATABLE ((unsigned long *)(ROM_APITABLE[6]))
53 #define ROM_FLASHCTLTABLE ((unsigned long *)(ROM_APITABLE[7]))
54 #define ROM_FPUTABLE ((unsigned long *)(ROM_APITABLE[8]))
55 #define ROM_GPIOTABLE ((unsigned long *)(ROM_APITABLE[9]))
56 #define ROM_I2CTABLE ((unsigned long *)(ROM_APITABLE[10]))
57 #define ROM_INTTABLE ((unsigned long *)(ROM_APITABLE[11]))
58 #define ROM_MPUTABLE ((unsigned long *)(ROM_APITABLE[12]))
59 #define ROM_PCMTABLE ((unsigned long *)(ROM_APITABLE[13]))
60 #define ROM_PMAPTABLE ((unsigned long *)(ROM_APITABLE[14]))
61 #define ROM_PSSTABLE ((unsigned long *)(ROM_APITABLE[15]))
62 #define ROM_REFTABLE ((unsigned long *)(ROM_APITABLE[16]))
63 #define ROM_RESETCTLTABLE ((unsigned long *)(ROM_APITABLE[17]))
64 #define ROM_RTCTABLE ((unsigned long *)(ROM_APITABLE[18]))
65 #define ROM_SPITABLE ((unsigned long *)(ROM_APITABLE[19]))
66 #define ROM_SYSCTLTABLE ((unsigned long *)(ROM_APITABLE[20]))
67 #define ROM_SYSTICKTABLE ((unsigned long *)(ROM_APITABLE[21]))
68 #define ROM_TIMER_ATABLE ((unsigned long *)(ROM_APITABLE[22]))
69 #define ROM_TIMER32TABLE ((unsigned long *)(ROM_APITABLE[23]))
70 #define ROM_UARTTABLE ((unsigned long *)(ROM_APITABLE[24]))
71 #define ROM_WDTTABLE ((unsigned long *)(ROM_APITABLE[25]))
73 //*****************************************************************************
75 // Macros for calling ROM functions in the ADC14 API.
77 //*****************************************************************************
78 #if defined(TARGET_IS_MSP432P4XX)
79 #define ROM_ADC14_enableModule \
80 ((void (*)(void))ROM_ADC14TABLE[0])
82 #if defined(TARGET_IS_MSP432P4XX)
83 #define ROM_ADC14_disableModule \
84 ((bool (*)(void))ROM_ADC14TABLE[1])
86 #if defined(TARGET_IS_MSP432P4XX)
87 #define ROM_ADC14_initModule \
88 ((bool (*)(uint32_t clockSource, \
89 uint32_t clockPredivider, \
90 uint32_t clockDivider, \
91 uint32_t internalChannelMask))ROM_ADC14TABLE[2])
93 #if defined(TARGET_IS_MSP432P4XX)
94 #define ROM_ADC14_setResolution \
95 ((void (*)(uint32_t resolution))ROM_ADC14TABLE[3])
97 #if defined(TARGET_IS_MSP432P4XX)
98 #define ROM_ADC14_getResolution \
99 ((uint_fast32_t (*)(void))ROM_ADC14TABLE[4])
101 #if defined(TARGET_IS_MSP432P4XX)
102 #define ROM_ADC14_setSampleHoldTrigger \
103 ((bool (*)(uint32_t source, \
104 bool invertSignal))ROM_ADC14TABLE[5])
106 #if defined(TARGET_IS_MSP432P4XX)
107 #define ROM_ADC14_setSampleHoldTime \
108 ((bool (*)(uint32_t firstPulseWidth, \
109 uint32_t secondPulseWidth))ROM_ADC14TABLE[6])
111 #if defined(TARGET_IS_MSP432P4XX)
112 #define ROM_ADC14_configureMultiSequenceMode \
113 ((bool (*)(uint32_t memoryStart, \
114 uint32_t memoryEnd, \
115 bool repeatMode))ROM_ADC14TABLE[7])
117 #if defined(TARGET_IS_MSP432P4XX)
118 #define ROM_ADC14_configureSingleSampleMode \
119 ((bool (*)(uint32_t memoryDestination, \
120 bool repeatMode))ROM_ADC14TABLE[8])
122 #if defined(TARGET_IS_MSP432P4XX)
123 #define ROM_ADC14_enableConversion \
124 ((bool (*)(void))ROM_ADC14TABLE[9])
126 #if defined(TARGET_IS_MSP432P4XX)
127 #define ROM_ADC14_disableConversion \
128 ((void (*)(void))ROM_ADC14TABLE[10])
130 #if defined(TARGET_IS_MSP432P4XX)
131 #define ROM_ADC14_isBusy \
132 ((bool (*)(void))ROM_ADC14TABLE[11])
134 #if defined(TARGET_IS_MSP432P4XX)
135 #define ROM_ADC14_configureConversionMemory \
136 ((bool (*)(uint32_t memorySelect, \
137 uint32_t refSelect, \
138 uint32_t channelSelect, \
139 bool differntialMode))ROM_ADC14TABLE[12])
141 #if defined(TARGET_IS_MSP432P4XX)
142 #define ROM_ADC14_enableComparatorWindow \
143 ((bool (*)(uint32_t memorySelect, \
144 uint32_t windowSelect))ROM_ADC14TABLE[13])
146 #if defined(TARGET_IS_MSP432P4XX)
147 #define ROM_ADC14_disableComparatorWindow \
148 ((bool (*)(uint32_t memorySelect))ROM_ADC14TABLE[14])
150 #if defined(TARGET_IS_MSP432P4XX)
151 #define ROM_ADC14_setComparatorWindowValue \
152 ((bool (*)(uint32_t window, \
154 int16_t high))ROM_ADC14TABLE[15])
156 #if defined(TARGET_IS_MSP432P4XX)
157 #define ROM_ADC14_setResultFormat \
158 ((bool (*)(uint32_t resultFormat))ROM_ADC14TABLE[16])
160 #if defined(TARGET_IS_MSP432P4XX)
161 #define ROM_ADC14_getResult \
162 ((uint_fast16_t (*)(uint32_t memorySelect))ROM_ADC14TABLE[17])
164 #if defined(TARGET_IS_MSP432P4XX)
165 #define ROM_ADC14_getMultiSequenceResult \
166 ((void (*)(uint16_t* res))ROM_ADC14TABLE[18])
168 #if defined(TARGET_IS_MSP432P4XX)
169 #define ROM_ADC14_getResultArray \
170 ((void (*)(uint32_t memoryStart, \
171 uint32_t memoryEnd, \
172 uint16_t* res))ROM_ADC14TABLE[19])
174 #if defined(TARGET_IS_MSP432P4XX)
175 #define ROM_ADC14_enableReferenceBurst \
176 ((bool (*)(void))ROM_ADC14TABLE[20])
178 #if defined(TARGET_IS_MSP432P4XX)
179 #define ROM_ADC14_disableReferenceBurst \
180 ((bool (*)(void))ROM_ADC14TABLE[21])
182 #if defined(TARGET_IS_MSP432P4XX)
183 #define ROM_ADC14_setPowerMode \
184 ((bool (*)(uint32_t powerMode))ROM_ADC14TABLE[22])
186 #if defined(TARGET_IS_MSP432P4XX)
187 #define ROM_ADC14_enableInterrupt \
188 ((void (*)(uint_fast64_t mask))ROM_ADC14TABLE[23])
190 #if defined(TARGET_IS_MSP432P4XX)
191 #define ROM_ADC14_disableInterrupt \
192 ((void (*)(uint_fast64_t mask))ROM_ADC14TABLE[24])
194 #if defined(TARGET_IS_MSP432P4XX)
195 #define ROM_ADC14_getInterruptStatus \
196 ((uint_fast64_t (*)(void))ROM_ADC14TABLE[25])
198 #if defined(TARGET_IS_MSP432P4XX)
199 #define ROM_ADC14_getEnabledInterruptStatus \
200 ((uint_fast64_t (*)(void))ROM_ADC14TABLE[26])
202 #if defined(TARGET_IS_MSP432P4XX)
203 #define ROM_ADC14_clearInterruptFlag \
204 ((void (*)(uint_fast64_t mask))ROM_ADC14TABLE[27])
206 #if defined(TARGET_IS_MSP432P4XX)
207 #define ROM_ADC14_toggleConversionTrigger \
208 ((bool (*)(void))ROM_ADC14TABLE[28])
210 #if defined(TARGET_IS_MSP432P4XX)
211 #define ROM_ADC14_enableSampleTimer \
212 ((bool (*)(uint32_t multiSampleConvert))ROM_ADC14TABLE[29])
214 #if defined(TARGET_IS_MSP432P4XX)
215 #define ROM_ADC14_disableSampleTimer \
216 ((bool (*)(void))ROM_ADC14TABLE[30])
219 //*****************************************************************************
221 // Macros for calling ROM functions in the AES256 API.
223 //*****************************************************************************
224 #if defined(TARGET_IS_MSP432P4XX)
225 #define ROM_AES256_setCipherKey \
226 ((bool (*)(uint32_t moduleInstance, \
227 const uint8_t *cipherKey, \
228 uint_fast16_t keyLength))ROM_AES256TABLE[0])
230 #if defined(TARGET_IS_MSP432P4XX)
231 #define ROM_AES256_encryptData \
232 ((void (*)(uint32_t moduleInstance, \
233 const uint8_t *data, \
234 uint8_t *encryptedData))ROM_AES256TABLE[1])
236 #if defined(TARGET_IS_MSP432P4XX)
237 #define ROM_AES256_decryptData \
238 ((void (*)(uint32_t moduleInstance, \
239 const uint8_t *data, \
240 uint8_t *decryptedData))ROM_AES256TABLE[2])
242 #if defined(TARGET_IS_MSP432P4XX)
243 #define ROM_AES256_setDecipherKey \
244 ((bool (*)(uint32_t moduleInstance, \
245 const uint8_t *cipherKey, \
246 uint_fast16_t keyLength))ROM_AES256TABLE[3])
248 #if defined(TARGET_IS_MSP432P4XX)
249 #define ROM_AES256_reset \
250 ((void (*)(uint32_t moduleInstance))ROM_AES256TABLE[4])
252 #if defined(TARGET_IS_MSP432P4XX)
253 #define ROM_AES256_startEncryptData \
254 ((void (*)(uint32_t moduleInstance, \
255 const uint8_t *data))ROM_AES256TABLE[5])
257 #if defined(TARGET_IS_MSP432P4XX)
258 #define ROM_AES256_startDecryptData \
259 ((void (*)(uint32_t moduleInstance, \
260 const uint8_t *data))ROM_AES256TABLE[6])
262 #if defined(TARGET_IS_MSP432P4XX)
263 #define ROM_AES256_startSetDecipherKey \
264 ((bool (*)(uint32_t moduleInstance, \
265 const uint8_t *cipherKey, \
266 uint_fast16_t keyLength))ROM_AES256TABLE[7])
268 #if defined(TARGET_IS_MSP432P4XX)
269 #define ROM_AES256_getDataOut \
270 ((bool (*)(uint32_t moduleInstance, \
271 uint8_t *outputData))ROM_AES256TABLE[8])
273 #if defined(TARGET_IS_MSP432P4XX)
274 #define ROM_AES256_isBusy \
275 ((bool (*)(uint32_t moduleInstance))ROM_AES256TABLE[9])
277 #if defined(TARGET_IS_MSP432P4XX)
278 #define ROM_AES256_clearErrorFlag \
279 ((void (*)(uint32_t moduleInstance))ROM_AES256TABLE[10])
281 #if defined(TARGET_IS_MSP432P4XX)
282 #define ROM_AES256_getErrorFlagStatus \
283 ((uint32_t (*)(uint32_t moduleInstance))ROM_AES256TABLE[11])
285 #if defined(TARGET_IS_MSP432P4XX)
286 #define ROM_AES256_clearInterruptFlag \
287 ((void (*)(uint32_t moduleInstance))ROM_AES256TABLE[12])
289 #if defined(TARGET_IS_MSP432P4XX)
290 #define ROM_AES256_enableInterrupt \
291 ((void (*)(uint32_t moduleInstance))ROM_AES256TABLE[14])
293 #if defined(TARGET_IS_MSP432P4XX)
294 #define ROM_AES256_disableInterrupt \
295 ((void (*)(uint32_t moduleInstance))ROM_AES256TABLE[15])
298 //*****************************************************************************
300 // Macros for calling ROM functions in the Comp API.
302 //*****************************************************************************
303 #if defined(TARGET_IS_MSP432P4XX)
304 #define ROM_COMP_E_initModule \
305 ((bool (*)(uint32_t comparator, \
306 const COMP_E_Config *config))ROM_COMPTABLE[0])
308 #if defined(TARGET_IS_MSP432P4XX)
309 #define ROM_COMP_E_setReferenceVoltage \
310 ((void (*)(uint32_t comparator, \
311 uint_fast16_t supplyVoltageReferenceBase, \
312 uint_fast16_t lowerLimitSupplyVoltageFractionOf32, \
313 uint_fast16_t upperLimitSupplyVoltageFractionOf32))ROM_COMPTABLE[1])
315 #if defined(TARGET_IS_MSP432P4XX)
316 #define ROM_COMP_E_setReferenceAccuracy \
317 ((void (*)(uint32_t comparator, \
318 uint_fast16_t referenceAccuracy))ROM_COMPTABLE[2])
320 #if defined(TARGET_IS_MSP432P4XX)
321 #define ROM_COMP_E_setPowerMode \
322 ((void (*)(uint32_t comparator, \
323 uint_fast16_t powerMode))ROM_COMPTABLE[3])
325 #if defined(TARGET_IS_MSP432P4XX)
326 #define ROM_COMP_E_enableModule \
327 ((void (*)(uint32_t comparator))ROM_COMPTABLE[4])
329 #if defined(TARGET_IS_MSP432P4XX)
330 #define ROM_COMP_E_disableModule \
331 ((void (*)(uint32_t comparator))ROM_COMPTABLE[5])
333 #if defined(TARGET_IS_MSP432P4XX)
334 #define ROM_COMP_E_shortInputs \
335 ((void (*)(uint32_t comparator))ROM_COMPTABLE[6])
337 #if defined(TARGET_IS_MSP432P4XX)
338 #define ROM_COMP_E_unshortInputs \
339 ((void (*)(uint32_t comparator))ROM_COMPTABLE[7])
341 #if defined(TARGET_IS_MSP432P4XX)
342 #define ROM_COMP_E_disableInputBuffer \
343 ((void (*)(uint32_t comparator, \
344 uint_fast16_t inputPort))ROM_COMPTABLE[8])
346 #if defined(TARGET_IS_MSP432P4XX)
347 #define ROM_COMP_E_enableInputBuffer \
348 ((void (*)(uint32_t comparator, \
349 uint_fast16_t inputPort))ROM_COMPTABLE[9])
351 #if defined(TARGET_IS_MSP432P4XX)
352 #define ROM_COMP_E_swapIO \
353 ((void (*)(uint32_t comparator))ROM_COMPTABLE[10])
355 #if defined(TARGET_IS_MSP432P4XX)
356 #define ROM_COMP_E_outputValue \
357 ((uint8_t (*)(uint32_t comparator))ROM_COMPTABLE[11])
359 #if defined(TARGET_IS_MSP432P4XX)
360 #define ROM_COMP_E_enableInterrupt \
361 ((void (*)(uint32_t comparator, \
362 uint_fast16_t mask))ROM_COMPTABLE[12])
364 #if defined(TARGET_IS_MSP432P4XX)
365 #define ROM_COMP_E_disableInterrupt \
366 ((void (*)(uint32_t comparator, \
367 uint_fast16_t mask))ROM_COMPTABLE[13])
369 #if defined(TARGET_IS_MSP432P4XX)
370 #define ROM_COMP_E_clearInterruptFlag \
371 ((void (*)(uint32_t comparator, \
372 uint_fast16_t mask))ROM_COMPTABLE[14])
374 #if defined(TARGET_IS_MSP432P4XX)
375 #define ROM_COMP_E_getInterruptStatus \
376 ((uint_fast16_t (*)(uint32_t comparator))ROM_COMPTABLE[15])
378 #if defined(TARGET_IS_MSP432P4XX)
379 #define ROM_COMP_E_getEnabledInterruptStatus \
380 ((uint_fast16_t (*)(uint32_t comparator))ROM_COMPTABLE[16])
382 #if defined(TARGET_IS_MSP432P4XX)
383 #define ROM_COMP_E_setInterruptEdgeDirection \
384 ((void (*)(uint32_t comparator, \
385 uint_fast8_t edgeDirection))ROM_COMPTABLE[17])
387 #if defined(TARGET_IS_MSP432P4XX)
388 #define ROM_COMP_E_toggleInterruptEdgeDirection \
389 ((void (*)(uint32_t comparator))ROM_COMPTABLE[18])
392 //*****************************************************************************
394 // Macros for calling ROM functions in the CRC32 API.
396 //*****************************************************************************
397 #if defined(TARGET_IS_MSP432P4XX)
398 #define ROM_CRC32_setSeed \
399 ((void (*)(uint32_t seed, \
400 uint_fast8_t crcType))ROM_CRC32TABLE[0])
402 #if defined(TARGET_IS_MSP432P4XX)
403 #define ROM_CRC32_set8BitData \
404 ((void (*)(uint8_t dataIn, \
405 uint_fast8_t crcType))ROM_CRC32TABLE[1])
407 #if defined(TARGET_IS_MSP432P4XX)
408 #define ROM_CRC32_set16BitData \
409 ((void (*)(uint16_t dataIn, \
410 uint_fast8_t crcType))ROM_CRC32TABLE[2])
412 #if defined(TARGET_IS_MSP432P4XX)
413 #define ROM_CRC32_set32BitData \
414 ((void (*)(uint32_t dataIn))ROM_CRC32TABLE[3])
416 #if defined(TARGET_IS_MSP432P4XX)
417 #define ROM_CRC32_set8BitDataReversed \
418 ((void (*)(uint8_t dataIn, \
419 uint_fast8_t crcType))ROM_CRC32TABLE[4])
421 #if defined(TARGET_IS_MSP432P4XX)
422 #define ROM_CRC32_set16BitDataReversed \
423 ((void (*)(uint16_t dataIn, \
424 uint_fast8_t crcType))ROM_CRC32TABLE[5])
426 #if defined(TARGET_IS_MSP432P4XX)
427 #define ROM_CRC32_set32BitDataReversed \
428 ((void (*)(uint32_t dataIn))ROM_CRC32TABLE[6])
430 #if defined(TARGET_IS_MSP432P4XX)
431 #define ROM_CRC32_getResult \
432 ((uint32_t (*)(uint_fast8_t crcType))ROM_CRC32TABLE[7])
434 #if defined(TARGET_IS_MSP432P4XX)
435 #define ROM_CRC32_getResultReversed \
436 ((uint32_t (*)(uint_fast8_t crcType))ROM_CRC32TABLE[8])
439 //*****************************************************************************
441 // Macros for calling ROM functions in the CS API.
443 //*****************************************************************************
444 #if defined(TARGET_IS_MSP432P4XX)
445 #define ROM_CS_enableClockRequest \
446 ((void (*)(uint32_t selectClock))ROM_CSTABLE[2])
448 #if defined(TARGET_IS_MSP432P4XX)
449 #define ROM_CS_disableClockRequest \
450 ((void (*)(uint32_t selectClock))ROM_CSTABLE[3])
452 #if defined(TARGET_IS_MSP432P4XX)
453 #define ROM_CS_enableDCOExternalResistor \
454 ((void (*)(void))ROM_CSTABLE[6])
456 #if defined(TARGET_IS_MSP432P4XX)
457 #define ROM_CS_disableDCOExternalResistor \
458 ((void (*)(void))ROM_CSTABLE[7])
460 #if defined(TARGET_IS_MSP432P4XX)
461 #define ROM_CS_getEnabledInterruptStatus \
462 ((uint32_t (*)(void))ROM_CSTABLE[10])
464 #if defined(TARGET_IS_MSP432P4XX)
465 #define ROM_CS_getInterruptStatus \
466 ((uint32_t (*)(void))ROM_CSTABLE[11])
469 //*****************************************************************************
471 // Macros for calling ROM functions in the DMA API.
473 //*****************************************************************************
474 #if defined(TARGET_IS_MSP432P4XX)
475 #define ROM_DMA_enableModule \
476 ((void (*)(void))ROM_DMATABLE[0])
478 #if defined(TARGET_IS_MSP432P4XX)
479 #define ROM_DMA_disableModule \
480 ((void (*)(void))ROM_DMATABLE[1])
482 #if defined(TARGET_IS_MSP432P4XX)
483 #define ROM_DMA_getErrorStatus \
484 ((uint32_t (*)(void))ROM_DMATABLE[2])
486 #if defined(TARGET_IS_MSP432P4XX)
487 #define ROM_DMA_clearErrorStatus \
488 ((void (*)(void))ROM_DMATABLE[3])
490 #if defined(TARGET_IS_MSP432P4XX)
491 #define ROM_DMA_enableChannel \
492 ((void (*)(uint32_t channelNum))ROM_DMATABLE[4])
494 #if defined(TARGET_IS_MSP432P4XX)
495 #define ROM_DMA_disableChannel \
496 ((void (*)(uint32_t channelNum))ROM_DMATABLE[5])
498 #if defined(TARGET_IS_MSP432P4XX)
499 #define ROM_DMA_isChannelEnabled \
500 ((bool (*)(uint32_t channelNum))ROM_DMATABLE[6])
502 #if defined(TARGET_IS_MSP432P4XX)
503 #define ROM_DMA_setControlBase \
504 ((void (*)(void *controlTable))ROM_DMATABLE[7])
506 #if defined(TARGET_IS_MSP432P4XX)
507 #define ROM_DMA_getControlBase \
508 ((void* (*)(void))ROM_DMATABLE[8])
510 #if defined(TARGET_IS_MSP432P4XX)
511 #define ROM_DMA_getControlAlternateBase \
512 ((void* (*)(void))ROM_DMATABLE[9])
514 #if defined(TARGET_IS_MSP432P4XX)
515 #define ROM_DMA_requestChannel \
516 ((void (*)(uint32_t channelNum))ROM_DMATABLE[10])
518 #if defined(TARGET_IS_MSP432P4XX)
519 #define ROM_DMA_enableChannelAttribute \
520 ((void (*)(uint32_t channelNum, \
521 uint32_t attr))ROM_DMATABLE[11])
523 #if defined(TARGET_IS_MSP432P4XX)
524 #define ROM_DMA_disableChannelAttribute \
525 ((void (*)(uint32_t channelNum, \
526 uint32_t attr))ROM_DMATABLE[12])
528 #if defined(TARGET_IS_MSP432P4XX)
529 #define ROM_DMA_getChannelAttribute \
530 ((uint32_t (*)(uint32_t channelNum))ROM_DMATABLE[13])
532 #if defined(TARGET_IS_MSP432P4XX)
533 #define ROM_DMA_setChannelControl \
534 ((void (*)(uint32_t channelStructIndex, \
535 uint32_t control))ROM_DMATABLE[14])
537 #if defined(TARGET_IS_MSP432P4XX)
538 #define ROM_DMA_setChannelTransfer \
539 ((void (*)(uint32_t channelStructIndex, \
543 uint32_t transferSize))ROM_DMATABLE[15])
545 #if defined(TARGET_IS_MSP432P4XX)
546 #define ROM_DMA_setChannelScatterGather \
547 ((void (*)(uint32_t channelNum, \
548 uint32_t taskCount, \
550 uint32_t isPeriphSG))ROM_DMATABLE[16])
552 #if defined(TARGET_IS_MSP432P4XX)
553 #define ROM_DMA_getChannelSize \
554 ((uint32_t (*)(uint32_t channelStructIndex))ROM_DMATABLE[17])
556 #if defined(TARGET_IS_MSP432P4XX)
557 #define ROM_DMA_getChannelMode \
558 ((uint32_t (*)(uint32_t channelStructIndex))ROM_DMATABLE[18])
560 #if defined(TARGET_IS_MSP432P4XX)
561 #define ROM_DMA_assignChannel \
562 ((void (*)(uint32_t mapping))ROM_DMATABLE[19])
564 #if defined(TARGET_IS_MSP432P4XX)
565 #define ROM_DMA_requestSoftwareTransfer \
566 ((void (*)(uint32_t channel))ROM_DMATABLE[20])
568 #if defined(TARGET_IS_MSP432P4XX)
569 #define ROM_DMA_assignInterrupt \
570 ((void (*)(uint32_t interruptNumber, \
571 uint32_t channel))ROM_DMATABLE[21])
573 #if defined(TARGET_IS_MSP432P4XX)
574 #define ROM_DMA_enableInterrupt \
575 ((void (*)(uint32_t interruptNumber))ROM_DMATABLE[22])
577 #if defined(TARGET_IS_MSP432P4XX)
578 #define ROM_DMA_disableInterrupt \
579 ((void (*)(uint32_t interruptNumber))ROM_DMATABLE[23])
581 #if defined(TARGET_IS_MSP432P4XX)
582 #define ROM_DMA_getInterruptStatus \
583 ((uint32_t (*)(void))ROM_DMATABLE[24])
585 #if defined(TARGET_IS_MSP432P4XX)
586 #define ROM_DMA_clearInterruptFlag \
587 ((void (*)(uint32_t intChannel))ROM_DMATABLE[25])
590 //*****************************************************************************
592 // Macros for calling ROM functions in the Flash API.
594 //*****************************************************************************
595 #if defined(TARGET_IS_MSP432P4XX)
596 #define ROM_FlashCtl_enableReadBuffering \
597 ((void (*)(uint_fast8_t memoryBank, \
598 uint_fast8_t accessMethod))ROM_FLASHCTLTABLE[2])
600 #if defined(TARGET_IS_MSP432P4XX)
601 #define ROM_FlashCtl_disableReadBuffering \
602 ((void (*)(uint_fast8_t memoryBank, \
603 uint_fast8_t accessMethod))ROM_FLASHCTLTABLE[3])
605 #if defined(TARGET_IS_MSP432P4XX)
606 #define ROM_FlashCtl_unprotectSector \
607 ((bool (*)(uint_fast8_t memorySpace, \
608 uint32_t sectorMask))ROM_FLASHCTLTABLE[4])
610 #if defined(TARGET_IS_MSP432P4XX)
611 #define ROM_FlashCtl_protectSector \
612 ((bool (*)(uint_fast8_t memorySpace, \
613 uint32_t sectorMask))ROM_FLASHCTLTABLE[5])
615 #if defined(TARGET_IS_MSP432P4XX)
616 #define ROM_FlashCtl_isSectorProtected \
617 ((bool (*)(uint_fast8_t memorySpace, \
618 uint32_t sector))ROM_FLASHCTLTABLE[6])
620 #if defined(TARGET_IS_MSP432P4XX)
621 #define ROM_FlashCtl_setProgramVerification \
622 ((void (*)(uint32_t verificationSetting))ROM_FLASHCTLTABLE[11])
624 #if defined(TARGET_IS_MSP432P4XX)
625 #define ROM_FlashCtl_clearProgramVerification \
626 ((void (*)(uint32_t verificationSetting))ROM_FLASHCTLTABLE[12])
628 #if defined(TARGET_IS_MSP432P4XX)
629 #define ROM_FlashCtl_enableWordProgramming \
630 ((void (*)(uint32_t mode))ROM_FLASHCTLTABLE[13])
632 #if defined(TARGET_IS_MSP432P4XX)
633 #define ROM_FlashCtl_disableWordProgramming \
634 ((void (*)(void))ROM_FLASHCTLTABLE[14])
636 #if defined(TARGET_IS_MSP432P4XX)
637 #define ROM_FlashCtl_isWordProgrammingEnabled \
638 ((uint32_t (*)(void))ROM_FLASHCTLTABLE[15])
640 #if defined(TARGET_IS_MSP432P4XX)
641 #define ROM_FlashCtl_enableInterrupt \
642 ((void (*)(uint32_t flags))ROM_FLASHCTLTABLE[16])
644 #if defined(TARGET_IS_MSP432P4XX)
645 #define ROM_FlashCtl_disableInterrupt \
646 ((void (*)(uint32_t flags))ROM_FLASHCTLTABLE[17])
648 #if defined(TARGET_IS_MSP432P4XX)
649 #define ROM_FlashCtl_getEnabledInterruptStatus \
650 ((uint32_t (*)(void))ROM_FLASHCTLTABLE[18])
652 #if defined(TARGET_IS_MSP432P4XX)
653 #define ROM_FlashCtl_getInterruptStatus \
654 ((uint32_t (*)(void))ROM_FLASHCTLTABLE[19])
656 #if defined(TARGET_IS_MSP432P4XX)
657 #define ROM_FlashCtl_clearInterruptFlag \
658 ((void (*)(uint32_t flags))ROM_FLASHCTLTABLE[20])
660 #if defined(TARGET_IS_MSP432P4XX)
661 #define ROM_FlashCtl_setWaitState \
662 ((void (*)(uint32_t bank, \
663 uint32_t waitState))ROM_FLASHCTLTABLE[21])
665 #if defined(TARGET_IS_MSP432P4XX)
666 #define ROM_FlashCtl_getWaitState \
667 ((uint32_t (*)(uint32_t bank))ROM_FLASHCTLTABLE[22])
669 #if defined(TARGET_IS_MSP432P4XX)
670 #define ROM_FlashCtl_setReadMode \
671 ((bool (*)(uint32_t flashBank, \
672 uint32_t readMode))ROM_FLASHCTLTABLE[23])
674 #if defined(TARGET_IS_MSP432P4XX)
675 #define ROM_FlashCtl_getReadMode \
676 ((uint32_t (*)(uint32_t flashBank))ROM_FLASHCTLTABLE[24])
679 //*****************************************************************************
681 // Macros for calling ROM functions in the FPU API.
683 //*****************************************************************************
684 #if defined(TARGET_IS_MSP432P4XX)
685 #define ROM_FPU_enableModule \
686 ((void (*)(void))ROM_FPUTABLE[0])
688 #if defined(TARGET_IS_MSP432P4XX)
689 #define ROM_FPU_disableModule \
690 ((void (*)(void))ROM_FPUTABLE[1])
692 #if defined(TARGET_IS_MSP432P4XX)
693 #define ROM_FPU_enableStacking \
694 ((void (*)(void))ROM_FPUTABLE[2])
696 #if defined(TARGET_IS_MSP432P4XX)
697 #define ROM_FPU_enableLazyStacking \
698 ((void (*)(void))ROM_FPUTABLE[3])
700 #if defined(TARGET_IS_MSP432P4XX)
701 #define ROM_FPU_disableStacking \
702 ((void (*)(void))ROM_FPUTABLE[4])
704 #if defined(TARGET_IS_MSP432P4XX)
705 #define ROM_FPU_setHalfPrecisionMode \
706 ((void (*)(uint32_t mode))ROM_FPUTABLE[5])
708 #if defined(TARGET_IS_MSP432P4XX)
709 #define ROM_FPU_setNaNMode \
710 ((void (*)(uint32_t mode))ROM_FPUTABLE[6])
712 #if defined(TARGET_IS_MSP432P4XX)
713 #define ROM_FPU_setFlushToZeroMode \
714 ((void (*)(uint32_t mode))ROM_FPUTABLE[7])
716 #if defined(TARGET_IS_MSP432P4XX)
717 #define ROM_FPU_setRoundingMode \
718 ((void (*)(uint32_t mode))ROM_FPUTABLE[8])
721 //*****************************************************************************
723 // Macros for calling ROM functions in the GPIO API.
725 //*****************************************************************************
728 //*****************************************************************************
730 // Macros for calling ROM functions in the I2C API.
732 //*****************************************************************************
733 #if defined(TARGET_IS_MSP432P4XX)
734 #define ROM_I2C_initMaster \
735 ((void (*)(uint32_t moduleInstance, \
736 const eUSCI_I2C_MasterConfig *config))ROM_I2CTABLE[0])
738 #if defined(TARGET_IS_MSP432P4XX)
739 #define ROM_I2C_enableModule \
740 ((void (*)(uint32_t moduleInstance))ROM_I2CTABLE[2])
742 #if defined(TARGET_IS_MSP432P4XX)
743 #define ROM_I2C_disableModule \
744 ((void (*)(uint32_t moduleInstance))ROM_I2CTABLE[3])
746 #if defined(TARGET_IS_MSP432P4XX)
747 #define ROM_I2C_setMode \
748 ((void (*)(uint32_t moduleInstance, \
749 uint_fast8_t mode))ROM_I2CTABLE[5])
751 #if defined(TARGET_IS_MSP432P4XX)
752 #define ROM_I2C_slavePutData \
753 ((void (*)(uint32_t moduleInstance, \
754 uint8_t transmitData))ROM_I2CTABLE[6])
756 #if defined(TARGET_IS_MSP432P4XX)
757 #define ROM_I2C_slaveGetData \
758 ((uint8_t (*)(uint32_t moduleInstance))ROM_I2CTABLE[7])
760 #if defined(TARGET_IS_MSP432P4XX)
761 #define ROM_I2C_isBusBusy \
762 ((uint8_t (*)(uint32_t moduleInstance))ROM_I2CTABLE[8])
764 #if defined(TARGET_IS_MSP432P4XX)
765 #define ROM_I2C_masterSendSingleByte \
766 ((void (*)(uint32_t moduleInstance, \
767 uint8_t txData))ROM_I2CTABLE[9])
769 #if defined(TARGET_IS_MSP432P4XX)
770 #define ROM_I2C_masterSendSingleByteWithTimeout \
771 ((bool (*)(uint32_t moduleInstance, \
773 uint32_t timeout))ROM_I2CTABLE[10])
775 #if defined(TARGET_IS_MSP432P4XX)
776 #define ROM_I2C_masterSendMultiByteStart \
777 ((void (*)(uint32_t moduleInstance, \
778 uint8_t txData))ROM_I2CTABLE[11])
780 #if defined(TARGET_IS_MSP432P4XX)
781 #define ROM_I2C_masterSendMultiByteStartWithTimeout \
782 ((bool (*)(uint32_t moduleInstance, \
784 uint32_t timeout))ROM_I2CTABLE[12])
786 #if defined(TARGET_IS_MSP432P4XX)
787 #define ROM_I2C_masterSendMultiByteNext \
788 ((void (*)(uint32_t moduleInstance, \
789 uint8_t txData))ROM_I2CTABLE[13])
791 #if defined(TARGET_IS_MSP432P4XX)
792 #define ROM_I2C_masterSendMultiByteNextWithTimeout \
793 ((bool (*)(uint32_t moduleInstance, \
795 uint32_t timeout))ROM_I2CTABLE[14])
797 #if defined(TARGET_IS_MSP432P4XX)
798 #define ROM_I2C_masterSendMultiByteFinish \
799 ((void (*)(uint32_t moduleInstance, \
800 uint8_t txData))ROM_I2CTABLE[15])
802 #if defined(TARGET_IS_MSP432P4XX)
803 #define ROM_I2C_masterSendMultiByteFinishWithTimeout \
804 ((bool (*)(uint32_t moduleInstance, \
806 uint32_t timeout))ROM_I2CTABLE[16])
808 #if defined(TARGET_IS_MSP432P4XX)
809 #define ROM_I2C_masterSendMultiByteStop \
810 ((void (*)(uint32_t moduleInstance))ROM_I2CTABLE[17])
812 #if defined(TARGET_IS_MSP432P4XX)
813 #define ROM_I2C_masterSendMultiByteStopWithTimeout \
814 ((bool (*)(uint32_t moduleInstance, \
815 uint32_t timeout))ROM_I2CTABLE[18])
817 #if defined(TARGET_IS_MSP432P4XX)
818 #define ROM_I2C_masterReceiveStart \
819 ((void (*)(uint32_t moduleInstance))ROM_I2CTABLE[19])
821 #if defined(TARGET_IS_MSP432P4XX)
822 #define ROM_I2C_masterReceiveMultiByteNext \
823 ((uint8_t (*)(uint32_t moduleInstance))ROM_I2CTABLE[20])
825 #if defined(TARGET_IS_MSP432P4XX)
826 #define ROM_I2C_masterReceiveMultiByteFinish \
827 ((uint8_t (*)(uint32_t moduleInstance))ROM_I2CTABLE[21])
829 #if defined(TARGET_IS_MSP432P4XX)
830 #define ROM_I2C_masterReceiveMultiByteFinishWithTimeout \
831 ((bool (*)(uint32_t moduleInstance, \
833 uint32_t timeout))ROM_I2CTABLE[22])
835 #if defined(TARGET_IS_MSP432P4XX)
836 #define ROM_I2C_masterReceiveMultiByteStop \
837 ((void (*)(uint32_t moduleInstance))ROM_I2CTABLE[23])
839 #if defined(TARGET_IS_MSP432P4XX)
840 #define ROM_I2C_masterReceiveSingleByte \
841 ((uint8_t (*)(uint32_t moduleInstance))ROM_I2CTABLE[24])
843 #if defined(TARGET_IS_MSP432P4XX)
844 #define ROM_I2C_masterReceiveSingle \
845 ((uint8_t (*)(uint32_t moduleInstance))ROM_I2CTABLE[25])
847 #if defined(TARGET_IS_MSP432P4XX)
848 #define ROM_I2C_getReceiveBufferAddressForDMA \
849 ((uint32_t (*)(uint32_t moduleInstance))ROM_I2CTABLE[26])
851 #if defined(TARGET_IS_MSP432P4XX)
852 #define ROM_I2C_getTransmitBufferAddressForDMA \
853 ((uint32_t (*)(uint32_t moduleInstance))ROM_I2CTABLE[27])
855 #if defined(TARGET_IS_MSP432P4XX)
856 #define ROM_I2C_masterIsStopSent \
857 ((uint8_t (*)(uint32_t moduleInstance))ROM_I2CTABLE[28])
859 #if defined(TARGET_IS_MSP432P4XX)
860 #define ROM_I2C_masterIsStartSent \
861 ((bool (*)(uint32_t moduleInstance))ROM_I2CTABLE[29])
863 #if defined(TARGET_IS_MSP432P4XX)
864 #define ROM_I2C_masterSendStart \
865 ((void (*)(uint32_t moduleInstance))ROM_I2CTABLE[30])
867 #if defined(TARGET_IS_MSP432P4XX)
868 #define ROM_I2C_enableMultiMasterMode \
869 ((void (*)(uint32_t moduleInstance))ROM_I2CTABLE[31])
871 #if defined(TARGET_IS_MSP432P4XX)
872 #define ROM_I2C_disableMultiMasterMode \
873 ((void (*)(uint32_t moduleInstance))ROM_I2CTABLE[32])
875 #if defined(TARGET_IS_MSP432P4XX)
876 #define ROM_I2C_enableInterrupt \
877 ((void (*)(uint32_t moduleInstance, \
878 uint_fast16_t mask))ROM_I2CTABLE[33])
880 #if defined(TARGET_IS_MSP432P4XX)
881 #define ROM_I2C_disableInterrupt \
882 ((void (*)(uint32_t moduleInstance, \
883 uint_fast16_t mask))ROM_I2CTABLE[34])
885 #if defined(TARGET_IS_MSP432P4XX)
886 #define ROM_I2C_clearInterruptFlag \
887 ((void (*)(uint32_t moduleInstance, \
888 uint_fast16_t mask))ROM_I2CTABLE[35])
890 #if defined(TARGET_IS_MSP432P4XX)
891 #define ROM_I2C_getEnabledInterruptStatus \
892 ((uint_fast16_t (*)(uint32_t moduleInstance))ROM_I2CTABLE[37])
894 #if defined(TARGET_IS_MSP432P4XX)
895 #define ROM_I2C_getMode \
896 ((uint_fast8_t (*)(uint32_t moduleInstance))ROM_I2CTABLE[38])
899 //*****************************************************************************
901 // Macros for calling ROM functions in the Interrupt API.
903 //*****************************************************************************
904 #if defined(TARGET_IS_MSP432P4XX)
905 #define ROM_Interrupt_enableMaster \
906 ((bool (*)(void))ROM_INTTABLE[0])
908 #if defined(TARGET_IS_MSP432P4XX)
909 #define ROM_Interrupt_disableMaster \
910 ((bool (*)(void))ROM_INTTABLE[1])
912 #if defined(TARGET_IS_MSP432P4XX)
913 #define ROM_Interrupt_setPriorityGrouping \
914 ((void (*)(uint32_t bits))ROM_INTTABLE[2])
916 #if defined(TARGET_IS_MSP432P4XX)
917 #define ROM_Interrupt_getPriorityGrouping \
918 ((uint32_t (*)(void))ROM_INTTABLE[3])
920 #if defined(TARGET_IS_MSP432P4XX)
921 #define ROM_Interrupt_setPriority \
922 ((void (*)(uint32_t interruptNumber, \
923 uint8_t priority))ROM_INTTABLE[4])
925 #if defined(TARGET_IS_MSP432P4XX)
926 #define ROM_Interrupt_getPriority \
927 ((uint8_t (*)(uint32_t interruptNumber))ROM_INTTABLE[5])
929 #if defined(TARGET_IS_MSP432P4XX)
930 #define ROM_Interrupt_enableInterrupt \
931 ((void (*)(uint32_t interruptNumber))ROM_INTTABLE[6])
933 #if defined(TARGET_IS_MSP432P4XX)
934 #define ROM_Interrupt_disableInterrupt \
935 ((void (*)(uint32_t interruptNumber))ROM_INTTABLE[7])
937 #if defined(TARGET_IS_MSP432P4XX)
938 #define ROM_Interrupt_isEnabled \
939 ((bool (*)(uint32_t interruptNumber))ROM_INTTABLE[8])
941 #if defined(TARGET_IS_MSP432P4XX)
942 #define ROM_Interrupt_pendInterrupt \
943 ((void (*)(uint32_t interruptNumber))ROM_INTTABLE[9])
945 #if defined(TARGET_IS_MSP432P4XX)
946 #define ROM_Interrupt_setPriorityMask \
947 ((void (*)(uint8_t priorityMask))ROM_INTTABLE[10])
949 #if defined(TARGET_IS_MSP432P4XX)
950 #define ROM_Interrupt_getPriorityMask \
951 ((uint8_t (*)(void))ROM_INTTABLE[11])
953 #if defined(TARGET_IS_MSP432P4XX)
954 #define ROM_Interrupt_setVectorTableAddress \
955 ((void (*)(uint32_t addr))ROM_INTTABLE[12])
957 #if defined(TARGET_IS_MSP432P4XX)
958 #define ROM_Interrupt_getVectorTableAddress \
959 ((uint32_t (*)(void))ROM_INTTABLE[13])
961 #if defined(TARGET_IS_MSP432P4XX)
962 #define ROM_Interrupt_enableSleepOnIsrExit \
963 ((void (*)(void))ROM_INTTABLE[14])
965 #if defined(TARGET_IS_MSP432P4XX)
966 #define ROM_Interrupt_disableSleepOnIsrExit \
967 ((void (*)(void))ROM_INTTABLE[15])
970 //*****************************************************************************
972 // Macros for calling ROM functions in the MPU API.
974 //*****************************************************************************
975 #if defined(TARGET_IS_MSP432P4XX)
976 #define ROM_MPU_enableModule \
977 ((void (*)(uint32_t mpuConfig))ROM_MPUTABLE[0])
979 #if defined(TARGET_IS_MSP432P4XX)
980 #define ROM_MPU_disableModule \
981 ((void (*)(void))ROM_MPUTABLE[1])
983 #if defined(TARGET_IS_MSP432P4XX)
984 #define ROM_MPU_getRegionCount \
985 ((uint32_t (*)(void))ROM_MPUTABLE[2])
987 #if defined(TARGET_IS_MSP432P4XX)
988 #define ROM_MPU_enableRegion \
989 ((void (*)(uint32_t region))ROM_MPUTABLE[3])
991 #if defined(TARGET_IS_MSP432P4XX)
992 #define ROM_MPU_disableRegion \
993 ((void (*)(uint32_t region))ROM_MPUTABLE[4])
995 #if defined(TARGET_IS_MSP432P4XX)
996 #define ROM_MPU_setRegion \
997 ((void (*)(uint32_t region, \
999 uint32_t flags))ROM_MPUTABLE[5])
1001 #if defined(TARGET_IS_MSP432P4XX)
1002 #define ROM_MPU_getRegion \
1003 ((void (*)(uint32_t region, \
1005 uint32_t *pflags))ROM_MPUTABLE[6])
1007 #if defined(TARGET_IS_MSP432P4XX)
1008 #define ROM_MPU_enableInterrupt \
1009 ((void (*)(void))ROM_MPUTABLE[7])
1011 #if defined(TARGET_IS_MSP432P4XX)
1012 #define ROM_MPU_disableInterrupt \
1013 ((void (*)(void))ROM_MPUTABLE[8])
1016 //*****************************************************************************
1018 // Macros for calling ROM functions in the PCM API.
1020 //*****************************************************************************
1021 #if defined(TARGET_IS_MSP432P4XX)
1022 #define ROM_PCM_setCoreVoltageLevel \
1023 ((bool (*)(uint_fast8_t voltageLevel))ROM_PCMTABLE[0])
1025 #if defined(TARGET_IS_MSP432P4XX)
1026 #define ROM_PCM_getCoreVoltageLevel \
1027 ((uint8_t (*)(void))ROM_PCMTABLE[1])
1029 #if defined(TARGET_IS_MSP432P4XX)
1030 #define ROM_PCM_setCoreVoltageLevelWithTimeout \
1031 ((bool (*)(uint_fast8_t voltageLevel, \
1032 uint32_t timeOut))ROM_PCMTABLE[2])
1034 #if defined(TARGET_IS_MSP432P4XX)
1035 #define ROM_PCM_setPowerMode \
1036 ((bool (*)(uint_fast8_t powerMode))ROM_PCMTABLE[3])
1038 #if defined(TARGET_IS_MSP432P4XX)
1039 #define ROM_PCM_setPowerModeWithTimeout \
1040 ((bool (*)(uint_fast8_t powerMode, \
1041 uint32_t timeOut))ROM_PCMTABLE[4])
1043 #if defined(TARGET_IS_MSP432P4XX)
1044 #define ROM_PCM_getPowerMode \
1045 ((uint8_t (*)(void))ROM_PCMTABLE[5])
1047 #if defined(TARGET_IS_MSP432P4XX)
1048 #define ROM_PCM_setPowerState \
1049 ((bool (*)(uint_fast8_t powerState))ROM_PCMTABLE[6])
1051 #if defined(TARGET_IS_MSP432P4XX)
1052 #define ROM_PCM_getPowerState \
1053 ((uint8_t (*)(void))ROM_PCMTABLE[8])
1055 #if defined(TARGET_IS_MSP432P4XX)
1056 #define ROM_PCM_gotoLPM0 \
1057 ((bool (*)(void))ROM_PCMTABLE[10])
1059 #if defined(TARGET_IS_MSP432P4XX)
1060 #define ROM_PCM_gotoLPM3 \
1061 ((bool (*)(void))ROM_PCMTABLE[11])
1063 #if defined(TARGET_IS_MSP432P4XX)
1064 #define ROM_PCM_enableInterrupt \
1065 ((void (*)(uint32_t flags))ROM_PCMTABLE[12])
1067 #if defined(TARGET_IS_MSP432P4XX)
1068 #define ROM_PCM_disableInterrupt \
1069 ((void (*)(uint32_t flags))ROM_PCMTABLE[13])
1071 #if defined(TARGET_IS_MSP432P4XX)
1072 #define ROM_PCM_getInterruptStatus \
1073 ((uint32_t (*)(void))ROM_PCMTABLE[14])
1075 #if defined(TARGET_IS_MSP432P4XX)
1076 #define ROM_PCM_getEnabledInterruptStatus \
1077 ((uint32_t (*)(void))ROM_PCMTABLE[15])
1079 #if defined(TARGET_IS_MSP432P4XX)
1080 #define ROM_PCM_clearInterruptFlag \
1081 ((void (*)(uint32_t flags))ROM_PCMTABLE[16])
1084 //*****************************************************************************
1086 // Macros for calling ROM functions in the PMAP API.
1088 //*****************************************************************************
1089 #if defined(TARGET_IS_MSP432P4XX)
1090 #define ROM_PMAP_configurePorts \
1091 ((void (*)(const uint8_t *portMapping, \
1093 uint8_t numberOfPorts, \
1094 uint8_t portMapReconfigure))ROM_PMAPTABLE[0])
1097 //*****************************************************************************
1099 // Macros for calling ROM functions in the PSS API.
1101 //*****************************************************************************
1102 #if defined(TARGET_IS_MSP432P4XX)
1103 #define ROM_PSS_enableHighSidePinToggle \
1104 ((void (*)(bool activeLow))ROM_PSSTABLE[0])
1106 #if defined(TARGET_IS_MSP432P4XX)
1107 #define ROM_PSS_disableHighSidePinToggle \
1108 ((void (*)(void))ROM_PSSTABLE[1])
1110 #if defined(TARGET_IS_MSP432P4XX)
1111 #define ROM_PSS_enableHighSide \
1112 ((void (*)(void))ROM_PSSTABLE[2])
1114 #if defined(TARGET_IS_MSP432P4XX)
1115 #define ROM_PSS_disableHighSide \
1116 ((void (*)(void))ROM_PSSTABLE[3])
1118 #if defined(TARGET_IS_MSP432P4XX)
1119 #define ROM_PSS_setHighSidePerformanceMode \
1120 ((void (*)(uint_fast8_t powerMode))ROM_PSSTABLE[6])
1122 #if defined(TARGET_IS_MSP432P4XX)
1123 #define ROM_PSS_getHighSidePerformanceMode \
1124 ((uint_fast8_t (*)(void))ROM_PSSTABLE[7])
1126 #if defined(TARGET_IS_MSP432P4XX)
1127 #define ROM_PSS_enableHighSideMonitor \
1128 ((void (*)(void))ROM_PSSTABLE[10])
1130 #if defined(TARGET_IS_MSP432P4XX)
1131 #define ROM_PSS_disableHighSideMonitor \
1132 ((void (*)(void))ROM_PSSTABLE[11])
1134 #if defined(TARGET_IS_MSP432P4XX)
1135 #define ROM_PSS_setHighSideVoltageTrigger \
1136 ((void (*)(uint_fast8_t triggerVoltage))ROM_PSSTABLE[12])
1138 #if defined(TARGET_IS_MSP432P4XX)
1139 #define ROM_PSS_getHighSideVoltageTrigger \
1140 ((uint_fast8_t (*)(void))ROM_PSSTABLE[13])
1142 #if defined(TARGET_IS_MSP432P4XX)
1143 #define ROM_PSS_enableInterrupt \
1144 ((void (*)(void))ROM_PSSTABLE[14])
1146 #if defined(TARGET_IS_MSP432P4XX)
1147 #define ROM_PSS_disableInterrupt \
1148 ((void (*)(void))ROM_PSSTABLE[15])
1150 #if defined(TARGET_IS_MSP432P4XX)
1151 #define ROM_PSS_getInterruptStatus \
1152 ((uint32_t (*)(void))ROM_PSSTABLE[16])
1154 #if defined(TARGET_IS_MSP432P4XX)
1155 #define ROM_PSS_clearInterruptFlag \
1156 ((void (*)(void))ROM_PSSTABLE[17])
1159 //*****************************************************************************
1161 // Macros for calling ROM functions in the Ref API.
1163 //*****************************************************************************
1164 #if defined(TARGET_IS_MSP432P4XX)
1165 #define ROM_REF_A_setReferenceVoltage \
1166 ((void (*)(uint_fast8_t referenceVoltageSelect))ROM_REFTABLE[0])
1168 #if defined(TARGET_IS_MSP432P4XX)
1169 #define ROM_REF_A_disableTempSensor \
1170 ((void (*)(void))ROM_REFTABLE[1])
1172 #if defined(TARGET_IS_MSP432P4XX)
1173 #define ROM_REF_A_enableTempSensor \
1174 ((void (*)(void))ROM_REFTABLE[2])
1176 #if defined(TARGET_IS_MSP432P4XX)
1177 #define ROM_REF_A_enableReferenceVoltageOutput \
1178 ((void (*)(void))ROM_REFTABLE[3])
1180 #if defined(TARGET_IS_MSP432P4XX)
1181 #define ROM_REF_A_disableReferenceVoltageOutput \
1182 ((void (*)(void))ROM_REFTABLE[4])
1184 #if defined(TARGET_IS_MSP432P4XX)
1185 #define ROM_REF_A_enableReferenceVoltage \
1186 ((void (*)(void))ROM_REFTABLE[5])
1188 #if defined(TARGET_IS_MSP432P4XX)
1189 #define ROM_REF_A_disableReferenceVoltage \
1190 ((void (*)(void))ROM_REFTABLE[6])
1192 #if defined(TARGET_IS_MSP432P4XX)
1193 #define ROM_REF_A_getBandgapMode \
1194 ((uint_fast8_t (*)(void))ROM_REFTABLE[7])
1196 #if defined(TARGET_IS_MSP432P4XX)
1197 #define ROM_REF_A_isBandgapActive \
1198 ((bool (*)(void))ROM_REFTABLE[8])
1200 #if defined(TARGET_IS_MSP432P4XX)
1201 #define ROM_REF_A_isRefGenBusy \
1202 ((bool (*)(void))ROM_REFTABLE[9])
1204 #if defined(TARGET_IS_MSP432P4XX)
1205 #define ROM_REF_A_isRefGenActive \
1206 ((bool (*)(void))ROM_REFTABLE[10])
1208 #if defined(TARGET_IS_MSP432P4XX)
1209 #define ROM_REF_A_getBufferedBandgapVoltageStatus \
1210 ((bool (*)(void))ROM_REFTABLE[11])
1212 #if defined(TARGET_IS_MSP432P4XX)
1213 #define ROM_REF_A_getVariableReferenceVoltageStatus \
1214 ((bool (*)(void))ROM_REFTABLE[12])
1216 #if defined(TARGET_IS_MSP432P4XX)
1217 #define ROM_REF_A_setReferenceVoltageOneTimeTrigger \
1218 ((void (*)(void))ROM_REFTABLE[13])
1220 #if defined(TARGET_IS_MSP432P4XX)
1221 #define ROM_REF_A_setBufferedBandgapVoltageOneTimeTrigger \
1222 ((void (*)(void))ROM_REFTABLE[14])
1225 //*****************************************************************************
1227 // Macros for calling ROM functions in the ResetCtl API.
1229 //*****************************************************************************
1230 #if defined(TARGET_IS_MSP432P4XX)
1231 #define ROM_ResetCtl_initiateSoftReset \
1232 ((void (*)(void))ROM_RESETCTLTABLE[0])
1234 #if defined(TARGET_IS_MSP432P4XX)
1235 #define ROM_ResetCtl_initiateSoftResetWithSource \
1236 ((void (*)(uint32_t source))ROM_RESETCTLTABLE[1])
1238 #if defined(TARGET_IS_MSP432P4XX)
1239 #define ROM_ResetCtl_getSoftResetSource \
1240 ((uint32_t (*)(void))ROM_RESETCTLTABLE[2])
1242 #if defined(TARGET_IS_MSP432P4XX)
1243 #define ROM_ResetCtl_clearSoftResetSource \
1244 ((void (*)(uint32_t mask))ROM_RESETCTLTABLE[3])
1246 #if defined(TARGET_IS_MSP432P4XX)
1247 #define ROM_ResetCtl_initiateHardReset \
1248 ((void (*)(void))ROM_RESETCTLTABLE[4])
1250 #if defined(TARGET_IS_MSP432P4XX)
1251 #define ROM_ResetCtl_initiateHardResetWithSource \
1252 ((void (*)(uint32_t source))ROM_RESETCTLTABLE[5])
1254 #if defined(TARGET_IS_MSP432P4XX)
1255 #define ROM_ResetCtl_getHardResetSource \
1256 ((uint32_t (*)(void))ROM_RESETCTLTABLE[6])
1258 #if defined(TARGET_IS_MSP432P4XX)
1259 #define ROM_ResetCtl_clearHardResetSource \
1260 ((void (*)(uint32_t mask))ROM_RESETCTLTABLE[7])
1262 #if defined(TARGET_IS_MSP432P4XX)
1263 #define ROM_ResetCtl_getPSSSource \
1264 ((uint32_t (*)(void))ROM_RESETCTLTABLE[8])
1266 #if defined(TARGET_IS_MSP432P4XX)
1267 #define ROM_ResetCtl_clearPSSFlags \
1268 ((void (*)(void))ROM_RESETCTLTABLE[9])
1270 #if defined(TARGET_IS_MSP432P4XX)
1271 #define ROM_ResetCtl_getPCMSource \
1272 ((uint32_t (*)(void))ROM_RESETCTLTABLE[10])
1274 #if defined(TARGET_IS_MSP432P4XX)
1275 #define ROM_ResetCtl_clearPCMFlags \
1276 ((void (*)(void))ROM_RESETCTLTABLE[11])
1279 //*****************************************************************************
1281 // Macros for calling ROM functions in the RTC API.
1283 //*****************************************************************************
1284 #if defined(TARGET_IS_MSP432P4XX)
1285 #define ROM_RTC_C_startClock \
1286 ((void (*)(void))ROM_RTCTABLE[0])
1288 #if defined(TARGET_IS_MSP432P4XX)
1289 #define ROM_RTC_C_holdClock \
1290 ((void (*)(void))ROM_RTCTABLE[1])
1292 #if defined(TARGET_IS_MSP432P4XX)
1293 #define ROM_RTC_C_setCalibrationFrequency \
1294 ((void (*)(uint_fast16_t frequencySelect))ROM_RTCTABLE[2])
1296 #if defined(TARGET_IS_MSP432P4XX)
1297 #define ROM_RTC_C_setCalibrationData \
1298 ((void (*)(uint_fast8_t offsetDirection, \
1299 uint_fast8_t offsetValue))ROM_RTCTABLE[3])
1301 #if defined(TARGET_IS_MSP432P4XX)
1302 #define ROM_RTC_C_setTemperatureCompensation \
1303 ((bool (*)(uint_fast16_t offsetDirection, \
1304 uint_fast8_t offsetValue))ROM_RTCTABLE[4])
1306 #if defined(TARGET_IS_MSP432P4XX)
1307 #define ROM_RTC_C_initCalendar \
1308 ((void (*)(const RTC_C_Calendar *calendarTime, \
1309 uint_fast16_t formatSelect))ROM_RTCTABLE[5])
1311 #if defined(TARGET_IS_MSP432P4XX)
1312 #define ROM_RTC_C_getCalendarTime \
1313 ((RTC_C_Calendar (*)(void))ROM_RTCTABLE[6])
1315 #if defined(TARGET_IS_MSP432P4XX)
1316 #define ROM_RTC_C_setCalendarAlarm \
1317 ((void (*)(uint_fast8_t minutesAlarm, \
1318 uint_fast8_t hoursAlarm, \
1319 uint_fast8_t dayOfWeekAlarm, \
1320 uint_fast8_t dayOfmonthAlarm))ROM_RTCTABLE[7])
1322 #if defined(TARGET_IS_MSP432P4XX)
1323 #define ROM_RTC_C_setCalendarEvent \
1324 ((void (*)(uint_fast16_t eventSelect))ROM_RTCTABLE[8])
1326 #if defined(TARGET_IS_MSP432P4XX)
1327 #define ROM_RTC_C_definePrescaleEvent \
1328 ((void (*)(uint_fast8_t prescaleSelect, \
1329 uint_fast8_t prescaleEventDivider))ROM_RTCTABLE[9])
1331 #if defined(TARGET_IS_MSP432P4XX)
1332 #define ROM_RTC_C_convertBCDToBinary \
1333 ((uint16_t (*)(uint16_t valueToConvert))ROM_RTCTABLE[12])
1335 #if defined(TARGET_IS_MSP432P4XX)
1336 #define ROM_RTC_C_convertBinaryToBCD \
1337 ((uint16_t (*)(uint16_t valueToConvert))ROM_RTCTABLE[13])
1339 #if defined(TARGET_IS_MSP432P4XX)
1340 #define ROM_RTC_C_enableInterrupt \
1341 ((void (*)(uint8_t interruptMask))ROM_RTCTABLE[14])
1343 #if defined(TARGET_IS_MSP432P4XX)
1344 #define ROM_RTC_C_disableInterrupt \
1345 ((void (*)(uint8_t interruptMask))ROM_RTCTABLE[15])
1347 #if defined(TARGET_IS_MSP432P4XX)
1348 #define ROM_RTC_C_getInterruptStatus \
1349 ((uint_fast8_t (*)(void))ROM_RTCTABLE[16])
1351 #if defined(TARGET_IS_MSP432P4XX)
1352 #define ROM_RTC_C_getEnabledInterruptStatus \
1353 ((uint_fast8_t (*)(void))ROM_RTCTABLE[17])
1355 #if defined(TARGET_IS_MSP432P4XX)
1356 #define ROM_RTC_C_clearInterruptFlag \
1357 ((void (*)(uint_fast8_t interruptFlagMask))ROM_RTCTABLE[18])
1360 //*****************************************************************************
1362 // Macros for calling ROM functions in the SPI API.
1364 //*****************************************************************************
1365 #if defined(TARGET_IS_MSP432P4XX)
1366 #define ROM_SPI_initMaster \
1367 ((bool (*)(uint32_t moduleInstance, \
1368 const eUSCI_SPI_MasterConfig *config))ROM_SPITABLE[0])
1370 #if defined(TARGET_IS_MSP432P4XX)
1371 #define ROM_SPI_selectFourPinFunctionality \
1372 ((void (*)(uint32_t moduleInstance, \
1373 uint_fast8_t select4PinFunctionality))ROM_SPITABLE[1])
1375 #if defined(TARGET_IS_MSP432P4XX)
1376 #define ROM_SPI_changeMasterClock \
1377 ((void (*)(uint32_t moduleInstance, \
1378 uint32_t clockSourceFrequency, \
1379 uint32_t desiredSpiClock))ROM_SPITABLE[2])
1381 #if defined(TARGET_IS_MSP432P4XX)
1382 #define ROM_SPI_initSlave \
1383 ((bool (*)(uint32_t moduleInstance, \
1384 const eUSCI_SPI_SlaveConfig *config))ROM_SPITABLE[3])
1386 #if defined(TARGET_IS_MSP432P4XX)
1387 #define ROM_SPI_changeClockPhasePolarity \
1388 ((void (*)(uint32_t moduleInstance, \
1389 uint_fast16_t clockPhase, \
1390 uint_fast16_t clockPolarity))ROM_SPITABLE[4])
1392 #if defined(TARGET_IS_MSP432P4XX)
1393 #define ROM_SPI_transmitData \
1394 ((void (*)(uint32_t moduleInstance, \
1395 uint_fast8_t transmitData))ROM_SPITABLE[5])
1397 #if defined(TARGET_IS_MSP432P4XX)
1398 #define ROM_SPI_receiveData \
1399 ((uint8_t (*)(uint32_t moduleInstance))ROM_SPITABLE[6])
1401 #if defined(TARGET_IS_MSP432P4XX)
1402 #define ROM_SPI_enableModule \
1403 ((void (*)(uint32_t moduleInstance))ROM_SPITABLE[7])
1405 #if defined(TARGET_IS_MSP432P4XX)
1406 #define ROM_SPI_disableModule \
1407 ((void (*)(uint32_t moduleInstance))ROM_SPITABLE[8])
1409 #if defined(TARGET_IS_MSP432P4XX)
1410 #define ROM_SPI_getReceiveBufferAddressForDMA \
1411 ((uint32_t (*)(uint32_t moduleInstance))ROM_SPITABLE[9])
1413 #if defined(TARGET_IS_MSP432P4XX)
1414 #define ROM_SPI_getTransmitBufferAddressForDMA \
1415 ((uint32_t (*)(uint32_t moduleInstance))ROM_SPITABLE[10])
1417 #if defined(TARGET_IS_MSP432P4XX)
1418 #define ROM_SPI_isBusy \
1419 ((uint_fast8_t (*)(uint32_t moduleInstance))ROM_SPITABLE[11])
1421 #if defined(TARGET_IS_MSP432P4XX)
1422 #define ROM_SPI_enableInterrupt \
1423 ((void (*)(uint32_t moduleInstance, \
1424 uint_fast8_t mask))ROM_SPITABLE[12])
1426 #if defined(TARGET_IS_MSP432P4XX)
1427 #define ROM_SPI_disableInterrupt \
1428 ((void (*)(uint32_t moduleInstance, \
1429 uint_fast8_t mask))ROM_SPITABLE[13])
1431 #if defined(TARGET_IS_MSP432P4XX)
1432 #define ROM_SPI_getEnabledInterruptStatus \
1433 ((uint_fast8_t (*)(uint32_t moduleInstance))ROM_SPITABLE[15])
1435 #if defined(TARGET_IS_MSP432P4XX)
1436 #define ROM_SPI_clearInterruptFlag \
1437 ((void (*)(uint32_t moduleInstance, \
1438 uint_fast8_t mask))ROM_SPITABLE[16])
1441 //*****************************************************************************
1443 // Macros for calling ROM functions in the SysCtl API.
1445 //*****************************************************************************
1446 #if defined(TARGET_IS_MSP432P4XX)
1447 #define ROM_SysCtl_getSRAMSize \
1448 ((uint_least32_t (*)(void))ROM_SYSCTLTABLE[0])
1450 #if defined(TARGET_IS_MSP432P4XX)
1451 #define ROM_SysCtl_getFlashSize \
1452 ((uint_least32_t (*)(void))ROM_SYSCTLTABLE[1])
1454 #if defined(TARGET_IS_MSP432P4XX)
1455 #define ROM_SysCtl_rebootDevice \
1456 ((void (*)(void))ROM_SYSCTLTABLE[2])
1458 #if defined(TARGET_IS_MSP432P4XX)
1459 #define ROM_SysCtl_enablePeripheralAtCPUHalt \
1460 ((void (*)(uint_fast16_t devices))ROM_SYSCTLTABLE[7])
1462 #if defined(TARGET_IS_MSP432P4XX)
1463 #define ROM_SysCtl_disablePeripheralAtCPUHalt \
1464 ((void (*)(uint_fast16_t devices))ROM_SYSCTLTABLE[8])
1466 #if defined(TARGET_IS_MSP432P4XX)
1467 #define ROM_SysCtl_setWDTTimeoutResetType \
1468 ((void (*)(uint_fast8_t resetType))ROM_SYSCTLTABLE[9])
1470 #if defined(TARGET_IS_MSP432P4XX)
1471 #define ROM_SysCtl_setWDTPasswordViolationResetType \
1472 ((void (*)(uint_fast8_t resetType))ROM_SYSCTLTABLE[10])
1474 #if defined(TARGET_IS_MSP432P4XX)
1475 #define ROM_SysCtl_disableNMISource \
1476 ((void (*)(uint_fast8_t flags))ROM_SYSCTLTABLE[11])
1478 #if defined(TARGET_IS_MSP432P4XX)
1479 #define ROM_SysCtl_enableNMISource \
1480 ((void (*)(uint_fast8_t flags))ROM_SYSCTLTABLE[12])
1482 #if defined(TARGET_IS_MSP432P4XX)
1483 #define ROM_SysCtl_getNMISourceStatus \
1484 ((uint_fast8_t (*)(void))ROM_SYSCTLTABLE[13])
1487 //*****************************************************************************
1489 // Macros for calling ROM functions in the SysTick API.
1491 //*****************************************************************************
1492 #if defined(TARGET_IS_MSP432P4XX)
1493 #define ROM_SysTick_enableModule \
1494 ((void (*)(void))ROM_SYSTICKTABLE[0])
1496 #if defined(TARGET_IS_MSP432P4XX)
1497 #define ROM_SysTick_disableModule \
1498 ((void (*)(void))ROM_SYSTICKTABLE[1])
1500 #if defined(TARGET_IS_MSP432P4XX)
1501 #define ROM_SysTick_enableInterrupt \
1502 ((void (*)(void))ROM_SYSTICKTABLE[2])
1504 #if defined(TARGET_IS_MSP432P4XX)
1505 #define ROM_SysTick_disableInterrupt \
1506 ((void (*)(void))ROM_SYSTICKTABLE[3])
1508 #if defined(TARGET_IS_MSP432P4XX)
1509 #define ROM_SysTick_setPeriod \
1510 ((void (*)(uint32_t period))ROM_SYSTICKTABLE[4])
1512 #if defined(TARGET_IS_MSP432P4XX)
1513 #define ROM_SysTick_getPeriod \
1514 ((uint32_t (*)(void))ROM_SYSTICKTABLE[5])
1516 #if defined(TARGET_IS_MSP432P4XX)
1517 #define ROM_SysTick_getValue \
1518 ((uint32_t (*)(void))ROM_SYSTICKTABLE[6])
1521 //*****************************************************************************
1523 // Macros for calling ROM functions in the Timer_A API.
1525 //*****************************************************************************
1526 #if defined(TARGET_IS_MSP432P4XX)
1527 #define ROM_Timer_A_startCounter \
1528 ((void (*)(uint32_t timer, \
1529 uint_fast16_t timerMode))ROM_TIMER_ATABLE[0])
1531 #if defined(TARGET_IS_MSP432P4XX)
1532 #define ROM_Timer_A_configureContinuousMode \
1533 ((void (*)(uint32_t timer, \
1534 const Timer_A_ContinuousModeConfig *config))ROM_TIMER_ATABLE[1])
1536 #if defined(TARGET_IS_MSP432P4XX)
1537 #define ROM_Timer_A_configureUpMode \
1538 ((void (*)(uint32_t timer, \
1539 const Timer_A_UpModeConfig *config))ROM_TIMER_ATABLE[2])
1541 #if defined(TARGET_IS_MSP432P4XX)
1542 #define ROM_Timer_A_configureUpDownMode \
1543 ((void (*)(uint32_t timer, \
1544 const Timer_A_UpDownModeConfig *config))ROM_TIMER_ATABLE[3])
1546 #if defined(TARGET_IS_MSP432P4XX)
1547 #define ROM_Timer_A_initCapture \
1548 ((void (*)(uint32_t timer, \
1549 const Timer_A_CaptureModeConfig *config))ROM_TIMER_ATABLE[4])
1551 #if defined(TARGET_IS_MSP432P4XX)
1552 #define ROM_Timer_A_initCompare \
1553 ((void (*)(uint32_t timer, \
1554 const Timer_A_CompareModeConfig *config))ROM_TIMER_ATABLE[5])
1556 #if defined(TARGET_IS_MSP432P4XX)
1557 #define ROM_Timer_A_clearTimer \
1558 ((void (*)(uint32_t timer))ROM_TIMER_ATABLE[6])
1560 #if defined(TARGET_IS_MSP432P4XX)
1561 #define ROM_Timer_A_getSynchronizedCaptureCompareInput \
1562 ((uint_fast8_t (*)(uint32_t timer, \
1563 uint_fast16_t captureCompareRegister, \
1564 uint_fast16_t synchronizedSetting))ROM_TIMER_ATABLE[7])
1566 #if defined(TARGET_IS_MSP432P4XX)
1567 #define ROM_Timer_A_getOutputForOutputModeOutBitValue \
1568 ((uint_fast8_t (*)(uint32_t timer, \
1569 uint_fast16_t captureCompareRegister))ROM_TIMER_ATABLE[8])
1571 #if defined(TARGET_IS_MSP432P4XX)
1572 #define ROM_Timer_A_getCaptureCompareCount \
1573 ((uint_fast16_t (*)(uint32_t timer, \
1574 uint_fast16_t captureCompareRegister))ROM_TIMER_ATABLE[9])
1576 #if defined(TARGET_IS_MSP432P4XX)
1577 #define ROM_Timer_A_setOutputForOutputModeOutBitValue \
1578 ((void (*)(uint32_t timer, \
1579 uint_fast16_t captureCompareRegister, \
1580 uint_fast8_t outputModeOutBitValue))ROM_TIMER_ATABLE[10])
1582 #if defined(TARGET_IS_MSP432P4XX)
1583 #define ROM_Timer_A_generatePWM \
1584 ((void (*)(uint32_t timer, \
1585 const Timer_A_PWMConfig *config))ROM_TIMER_ATABLE[11])
1587 #if defined(TARGET_IS_MSP432P4XX)
1588 #define ROM_Timer_A_stopTimer \
1589 ((void (*)(uint32_t timer))ROM_TIMER_ATABLE[12])
1591 #if defined(TARGET_IS_MSP432P4XX)
1592 #define ROM_Timer_A_setCompareValue \
1593 ((void (*)(uint32_t timer, \
1594 uint_fast16_t compareRegister, \
1595 uint_fast16_t compareValue))ROM_TIMER_ATABLE[13])
1597 #if defined(TARGET_IS_MSP432P4XX)
1598 #define ROM_Timer_A_clearInterruptFlag \
1599 ((void (*)(uint32_t timer))ROM_TIMER_ATABLE[14])
1601 #if defined(TARGET_IS_MSP432P4XX)
1602 #define ROM_Timer_A_clearCaptureCompareInterrupt \
1603 ((void (*)(uint32_t timer, \
1604 uint_fast16_t captureCompareRegister))ROM_TIMER_ATABLE[15])
1606 #if defined(TARGET_IS_MSP432P4XX)
1607 #define ROM_Timer_A_enableInterrupt \
1608 ((void (*)(uint32_t timer))ROM_TIMER_ATABLE[16])
1610 #if defined(TARGET_IS_MSP432P4XX)
1611 #define ROM_Timer_A_disableInterrupt \
1612 ((void (*)(uint32_t timer))ROM_TIMER_ATABLE[17])
1614 #if defined(TARGET_IS_MSP432P4XX)
1615 #define ROM_Timer_A_getInterruptStatus \
1616 ((uint32_t (*)(uint32_t timer))ROM_TIMER_ATABLE[18])
1618 #if defined(TARGET_IS_MSP432P4XX)
1619 #define ROM_Timer_A_getEnabledInterruptStatus \
1620 ((uint32_t (*)(uint32_t timer))ROM_TIMER_ATABLE[19])
1622 #if defined(TARGET_IS_MSP432P4XX)
1623 #define ROM_Timer_A_enableCaptureCompareInterrupt \
1624 ((void (*)(uint32_t timer, \
1625 uint_fast16_t captureCompareRegister))ROM_TIMER_ATABLE[20])
1627 #if defined(TARGET_IS_MSP432P4XX)
1628 #define ROM_Timer_A_disableCaptureCompareInterrupt \
1629 ((void (*)(uint32_t timer, \
1630 uint_fast16_t captureCompareRegister))ROM_TIMER_ATABLE[21])
1632 #if defined(TARGET_IS_MSP432P4XX)
1633 #define ROM_Timer_A_getCaptureCompareInterruptStatus \
1635 ))ROM_TIMER_ATABLE[22])
1637 #if defined(TARGET_IS_MSP432P4XX)
1638 #define ROM_Timer_A_getCaptureCompareEnabledInterruptStatus \
1639 ((uint32_t (*)(uint32_t timer, \
1640 uint_fast16_t captureCompareRegister))ROM_TIMER_ATABLE[23])
1643 //*****************************************************************************
1645 // Macros for calling ROM functions in the Timer32 API.
1647 //*****************************************************************************
1648 #if defined(TARGET_IS_MSP432P4XX)
1649 #define ROM_Timer32_initModule \
1650 ((void (*)(uint32_t timer, \
1651 uint32_t preScaler, \
1652 uint32_t resolution, \
1653 uint32_t mode))ROM_TIMER32TABLE[0])
1655 #if defined(TARGET_IS_MSP432P4XX)
1656 #define ROM_Timer32_setCount \
1657 ((void (*)(uint32_t timer, \
1658 uint32_t count))ROM_TIMER32TABLE[1])
1660 #if defined(TARGET_IS_MSP432P4XX)
1661 #define ROM_Timer32_setCountInBackground \
1662 ((void (*)(uint32_t timer, \
1663 uint32_t count))ROM_TIMER32TABLE[2])
1665 #if defined(TARGET_IS_MSP432P4XX)
1666 #define ROM_Timer32_getValue \
1667 ((uint32_t (*)(uint32_t timer))ROM_TIMER32TABLE[3])
1669 #if defined(TARGET_IS_MSP432P4XX)
1670 #define ROM_Timer32_startTimer \
1671 ((void (*)(uint32_t timer, \
1672 bool oneShot))ROM_TIMER32TABLE[4])
1674 #if defined(TARGET_IS_MSP432P4XX)
1675 #define ROM_Timer32_haltTimer \
1676 ((void (*)(uint32_t timer))ROM_TIMER32TABLE[5])
1678 #if defined(TARGET_IS_MSP432P4XX)
1679 #define ROM_Timer32_enableInterrupt \
1680 ((void (*)(uint32_t timer))ROM_TIMER32TABLE[6])
1682 #if defined(TARGET_IS_MSP432P4XX)
1683 #define ROM_Timer32_disableInterrupt \
1684 ((void (*)(uint32_t timer))ROM_TIMER32TABLE[7])
1686 #if defined(TARGET_IS_MSP432P4XX)
1687 #define ROM_Timer32_clearInterruptFlag \
1688 ((void (*)(uint32_t timer))ROM_TIMER32TABLE[8])
1690 #if defined(TARGET_IS_MSP432P4XX)
1691 #define ROM_Timer32_getInterruptStatus \
1692 ((uint32_t (*)(uint32_t timer))ROM_TIMER32TABLE[9])
1695 //*****************************************************************************
1697 // Macros for calling ROM functions in the UART API.
1699 //*****************************************************************************
1700 #if defined(TARGET_IS_MSP432P4XX)
1701 #define ROM_UART_initModule \
1702 ((bool (*)(uint32_t moduleInstance, \
1703 const eUSCI_UART_Config *config))ROM_UARTTABLE[0])
1705 #if defined(TARGET_IS_MSP432P4XX)
1706 #define ROM_UART_transmitData \
1707 ((void (*)(uint32_t moduleInstance, \
1708 uint_fast8_t transmitData))ROM_UARTTABLE[1])
1710 #if defined(TARGET_IS_MSP432P4XX)
1711 #define ROM_UART_enableModule \
1712 ((void (*)(uint32_t moduleInstance))ROM_UARTTABLE[2])
1714 #if defined(TARGET_IS_MSP432P4XX)
1715 #define ROM_UART_disableModule \
1716 ((void (*)(uint32_t moduleInstance))ROM_UARTTABLE[3])
1718 #if defined(TARGET_IS_MSP432P4XX)
1719 #define ROM_UART_queryStatusFlags \
1720 ((uint_fast8_t (*)(uint32_t moduleInstance, \
1721 uint_fast8_t mask))ROM_UARTTABLE[4])
1723 #if defined(TARGET_IS_MSP432P4XX)
1724 #define ROM_UART_setDormant \
1725 ((void (*)(uint32_t moduleInstance))ROM_UARTTABLE[5])
1727 #if defined(TARGET_IS_MSP432P4XX)
1728 #define ROM_UART_resetDormant \
1729 ((void (*)(uint32_t moduleInstance))ROM_UARTTABLE[6])
1731 #if defined(TARGET_IS_MSP432P4XX)
1732 #define ROM_UART_transmitAddress \
1733 ((void (*)(uint32_t moduleInstance, \
1734 uint_fast8_t transmitAddress))ROM_UARTTABLE[7])
1736 #if defined(TARGET_IS_MSP432P4XX)
1737 #define ROM_UART_transmitBreak \
1738 ((void (*)(uint32_t moduleInstance))ROM_UARTTABLE[8])
1740 #if defined(TARGET_IS_MSP432P4XX)
1741 #define ROM_UART_getReceiveBufferAddressForDMA \
1742 ((uint32_t (*)(uint32_t moduleInstance))ROM_UARTTABLE[9])
1744 #if defined(TARGET_IS_MSP432P4XX)
1745 #define ROM_UART_getTransmitBufferAddressForDMA \
1746 ((uint32_t (*)(uint32_t moduleInstance))ROM_UARTTABLE[10])
1748 #if defined(TARGET_IS_MSP432P4XX)
1749 #define ROM_UART_selectDeglitchTime \
1750 ((void (*)(uint32_t moduleInstance, \
1751 uint32_t deglitchTime))ROM_UARTTABLE[11])
1753 #if defined(TARGET_IS_MSP432P4XX)
1754 #define ROM_UART_enableInterrupt \
1755 ((void (*)(uint32_t moduleInstance, \
1756 uint_fast8_t mask))ROM_UARTTABLE[12])
1758 #if defined(TARGET_IS_MSP432P4XX)
1759 #define ROM_UART_disableInterrupt \
1760 ((void (*)(uint32_t moduleInstance, \
1761 uint_fast8_t mask))ROM_UARTTABLE[13])
1763 #if defined(TARGET_IS_MSP432P4XX)
1764 #define ROM_UART_clearInterruptFlag \
1765 ((void (*)(uint32_t moduleInstance, \
1766 uint_fast8_t mask))ROM_UARTTABLE[15])
1768 #if defined(TARGET_IS_MSP432P4XX)
1769 #define ROM_UART_receiveData \
1770 ((uint8_t (*)(uint32_t moduleInstance))ROM_UARTTABLE[16])
1772 #if defined(TARGET_IS_MSP432P4XX)
1773 #define ROM_UART_getEnabledInterruptStatus \
1774 ((uint_fast8_t (*)(uint32_t moduleInstance))ROM_UARTTABLE[17])
1777 //*****************************************************************************
1779 // Macros for calling ROM functions in the WDT API.
1781 //*****************************************************************************
1782 #if defined(TARGET_IS_MSP432P4XX)
1783 #define ROM_WDT_A_holdTimer \
1784 ((void (*)(void))ROM_WDTTABLE[0])
1786 #if defined(TARGET_IS_MSP432P4XX)
1787 #define ROM_WDT_A_startTimer \
1788 ((void (*)(void))ROM_WDTTABLE[1])
1790 #if defined(TARGET_IS_MSP432P4XX)
1791 #define ROM_WDT_A_clearTimer \
1792 ((void (*)(void))ROM_WDTTABLE[2])
1794 #if defined(TARGET_IS_MSP432P4XX)
1795 #define ROM_WDT_A_initWatchdogTimer \
1796 ((void (*)(uint_fast8_t clockSelect, \
1797 uint_fast8_t clockDivider))ROM_WDTTABLE[3])
1799 #if defined(TARGET_IS_MSP432P4XX)
1800 #define ROM_WDT_A_initIntervalTimer \
1801 ((void (*)(uint_fast8_t clockSelect, \
1802 uint_fast8_t clockDivider))ROM_WDTTABLE[4])