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

Copyright 2014, Texas Instruments Incorporated