1 2 3 4 5 6 7 8 9 10 11
12 import ti.catalog.msp430.peripherals.clock.UCS as UCS;
13
14 /*!
15 * ======== GPIO for MSP430F543xA ========
16 * MSP430 General Purpose Input Output Ports
17 */
18 metaonly module GPIO_MSP430F543xA inherits IGPIO {
19 /*!
20 * ======== create ========
21 * Create an instance of this peripheral. Use a customized
22 * init function so that we can get access to the UCS
23 * instances.
24 */
25 create(UCS.Instance clock);
26
27 instance:
28 /*! @_nodoc */
29 config UCS.Instance clock;
30
31 /*! Define an array to describe all device pins. The 1st dimension
32 * denotes the port, the second the pin on that port. On an
33 * MSP430F543x(A) device, there are 8 + 2 = 10 pins total.
34 */
35
36 37
38 config DevicePin_t devicePins[12][8];
39
40 /*! Implementation of Device Pin Functional Configuration */
41 override config DevicePinFunctionSetting_t devicePinSetting[12][8];
42
43 /*! Determine if each Register needs to be forced set or not */
44 readonly config ForceSetDefaultRegister_t forceSetDefaultRegister[] =
45 [
46 { register : "P1OUT" , regForceSet : true },
47 { register : "P1SEL" , regForceSet : false },
48 { register : "P1DIR" , regForceSet : false },
49 { register : "P1REN" , regForceSet : false },
50 { register : "P1IES" , regForceSet : true },
51 { register : "P1IFG" , regForceSet : true },
52 { register : "P1IE" , regForceSet : false },
53 { register : "P2OUT" , regForceSet : true },
54 { register : "P2SEL" , regForceSet : false },
55 { register : "P2DIR" , regForceSet : false },
56 { register : "P2REN" , regForceSet : false },
57 { register : "P2IES" , regForceSet : true },
58 { register : "P2IFG" , regForceSet : true },
59 { register : "P2IE" , regForceSet : false },
60 { register : "P3OUT" , regForceSet : true },
61 { register : "P3SEL" , regForceSet : false },
62 { register : "P3DIR" , regForceSet : false },
63 { register : "P3REN" , regForceSet : false },
64 { register : "P4OUT" , regForceSet : true },
65 { register : "P4SEL" , regForceSet : false },
66 { register : "P4DIR" , regForceSet : false },
67 { register : "P4REN" , regForceSet : false },
68 { register : "P5OUT" , regForceSet : true },
69 { register : "P5SEL" , regForceSet : false },
70 { register : "P5DIR" , regForceSet : false },
71 { register : "P5REN" , regForceSet : false },
72 { register : "P6OUT" , regForceSet : true },
73 { register : "P6SEL" , regForceSet : false },
74 { register : "P6DIR" , regForceSet : false },
75 { register : "P6REN" , regForceSet : false },
76 { register : "P7OUT" , regForceSet : true },
77 { register : "P7SEL" , regForceSet : false },
78 { register : "P7DIR" , regForceSet : false },
79 { register : "P7REN" , regForceSet : false },
80 { register : "P8OUT" , regForceSet : true },
81 { register : "P8SEL" , regForceSet : false },
82 { register : "P8DIR" , regForceSet : false },
83 { register : "P8REN" , regForceSet : false },
84 { register : "P9OUT" , regForceSet : true },
85 { register : "P9SEL" , regForceSet : false },
86 { register : "P9DIR" , regForceSet : false },
87 { register : "P9REN" , regForceSet : false },
88 { register : "P10OUT" , regForceSet : true },
89 { register : "P10SEL" , regForceSet : false },
90 { register : "P10DIR" , regForceSet : false },
91 { register : "P10REN" , regForceSet : false },
92 { register : "P11OUT" , regForceSet : true },
93 { register : "P11SEL" , regForceSet : false },
94 { register : "P11DIR" , regForceSet : false },
95 { register : "P11REN" , regForceSet : false },
96 { register : "PJOUT" , regForceSet : true },
97 { register : "PJSEL" , regForceSet : false },
98 { register : "PJDIR" , regForceSet : false },
99 { register : "PJREN" , regForceSet : false }
100 ];
101
102 103 104 105 106 107
108
109 /*! Port 1 Output Register */
110 config GpioBits8PxOut_t P1OUT = {
111 Bit0 : BIT0_OFF,
112 Bit1 : BIT1_OFF,
113 Bit2 : BIT2_OFF,
114 Bit3 : BIT3_OFF,
115 Bit4 : BIT4_OFF,
116 Bit5 : BIT5_OFF,
117 Bit6 : BIT6_OFF,
118 Bit7 : BIT7_OFF
119 };
120
121 /*! Port 1 Port Select Register */
122 config GpioBits8PxSel_t P1SEL = {
123 Bit0 : BIT0_OFF,
124 Bit1 : BIT1_OFF,
125 Bit2 : BIT2_OFF,
126 Bit3 : BIT3_OFF,
127 Bit4 : BIT4_OFF,
128 Bit5 : BIT5_OFF,
129 Bit6 : BIT6_OFF,
130 Bit7 : BIT7_OFF
131 };
132
133 /*! Port 1 Direction Register */
134 config GpioBits8PxDir_t P1DIR = {
135 Bit0 : BIT0_OFF,
136 Bit1 : BIT1_OFF,
137 Bit2 : BIT2_OFF,
138 Bit3 : BIT3_OFF,
139 Bit4 : BIT4_OFF,
140 Bit5 : BIT5_OFF,
141 Bit6 : BIT6_OFF,
142 Bit7 : BIT7_OFF
143 };
144
145 /*! Port 1 Resistor Enable Register */
146 config GpioBits8PxRen_t P1REN = {
147 Bit0 : BIT0_OFF,
148 Bit1 : BIT1_OFF,
149 Bit2 : BIT2_OFF,
150 Bit3 : BIT3_OFF,
151 Bit4 : BIT4_OFF,
152 Bit5 : BIT5_OFF,
153 Bit6 : BIT6_OFF,
154 Bit7 : BIT7_OFF
155 };
156
157 /*! Port 2 Output Register */
158 config GpioBits8PxOut_t P2OUT = {
159 Bit0 : BIT0_OFF,
160 Bit1 : BIT1_OFF,
161 Bit2 : BIT2_OFF,
162 Bit3 : BIT3_OFF,
163 Bit4 : BIT4_OFF,
164 Bit5 : BIT5_OFF,
165 Bit6 : BIT6_OFF,
166 Bit7 : BIT7_OFF
167 };
168
169 /*! Port 2 Port Select Register */
170 config GpioBits8PxSel_t P2SEL = {
171 Bit0 : BIT0_OFF,
172 Bit1 : BIT1_OFF,
173 Bit2 : BIT2_OFF,
174 Bit3 : BIT3_OFF,
175 Bit4 : BIT4_OFF,
176 Bit5 : BIT5_OFF,
177 Bit6 : BIT6_OFF,
178 Bit7 : BIT7_OFF
179 };
180
181 /*! Port 2 Direction Register */
182 config GpioBits8PxDir_t P2DIR = {
183 Bit0 : BIT0_OFF,
184 Bit1 : BIT1_OFF,
185 Bit2 : BIT2_OFF,
186 Bit3 : BIT3_OFF,
187 Bit4 : BIT4_OFF,
188 Bit5 : BIT5_OFF,
189 Bit6 : BIT6_OFF,
190 Bit7 : BIT7_OFF
191 };
192
193 /*! Port 2 Resistor Enable Register */
194 config GpioBits8PxRen_t P2REN = {
195 Bit0 : BIT0_OFF,
196 Bit1 : BIT1_OFF,
197 Bit2 : BIT2_OFF,
198 Bit3 : BIT3_OFF,
199 Bit4 : BIT4_OFF,
200 Bit5 : BIT5_OFF,
201 Bit6 : BIT6_OFF,
202 Bit7 : BIT7_OFF
203 };
204
205 /*! Port 3 Output Register */
206 config GpioBits8PxOut_t P3OUT = {
207 Bit0 : BIT0_OFF,
208 Bit1 : BIT1_OFF,
209 Bit2 : BIT2_OFF,
210 Bit3 : BIT3_OFF,
211 Bit4 : BIT4_OFF,
212 Bit5 : BIT5_OFF,
213 Bit6 : BIT6_OFF,
214 Bit7 : BIT7_OFF
215 };
216
217 /*! Port 3 Port Select Register */
218 config GpioBits8PxSel_t P3SEL = {
219 Bit0 : BIT0_OFF,
220 Bit1 : BIT1_OFF,
221 Bit2 : BIT2_OFF,
222 Bit3 : BIT3_OFF,
223 Bit4 : BIT4_OFF,
224 Bit5 : BIT5_OFF,
225 Bit6 : BIT6_OFF,
226 Bit7 : BIT7_OFF
227 };
228
229 /*! Port 3 Direction Register */
230 config GpioBits8PxDir_t P3DIR = {
231 Bit0 : BIT0_OFF,
232 Bit1 : BIT1_OFF,
233 Bit2 : BIT2_OFF,
234 Bit3 : BIT3_OFF,
235 Bit4 : BIT4_OFF,
236 Bit5 : BIT5_OFF,
237 Bit6 : BIT6_OFF,
238 Bit7 : BIT7_OFF
239 };
240
241 /*! Port 3 Resistor Enable Register */
242 config GpioBits8PxRen_t P3REN = {
243 Bit0 : BIT0_OFF,
244 Bit1 : BIT1_OFF,
245 Bit2 : BIT2_OFF,
246 Bit3 : BIT3_OFF,
247 Bit4 : BIT4_OFF,
248 Bit5 : BIT5_OFF,
249 Bit6 : BIT6_OFF,
250 Bit7 : BIT7_OFF
251 };
252
253 /*! Port 4 Output Register */
254 config GpioBits8PxOut_t P4OUT = {
255 Bit0 : BIT0_OFF,
256 Bit1 : BIT1_OFF,
257 Bit2 : BIT2_OFF,
258 Bit3 : BIT3_OFF,
259 Bit4 : BIT4_OFF,
260 Bit5 : BIT5_OFF,
261 Bit6 : BIT6_OFF,
262 Bit7 : BIT7_OFF
263 };
264
265 /*! Port 4 Port Select Register */
266 config GpioBits8PxSel_t P4SEL = {
267 Bit0 : BIT0_OFF,
268 Bit1 : BIT1_OFF,
269 Bit2 : BIT2_OFF,
270 Bit3 : BIT3_OFF,
271 Bit4 : BIT4_OFF,
272 Bit5 : BIT5_OFF,
273 Bit6 : BIT6_OFF,
274 Bit7 : BIT7_OFF
275 };
276
277 /*! Port 4 Direction Register */
278 config GpioBits8PxDir_t P4DIR = {
279 Bit0 : BIT0_OFF,
280 Bit1 : BIT1_OFF,
281 Bit2 : BIT2_OFF,
282 Bit3 : BIT3_OFF,
283 Bit4 : BIT4_OFF,
284 Bit5 : BIT5_OFF,
285 Bit6 : BIT6_OFF,
286 Bit7 : BIT7_OFF
287 };
288
289 /*! Port 4 Resistor Enable Register */
290 config GpioBits8PxRen_t P4REN = {
291 Bit0 : BIT0_OFF,
292 Bit1 : BIT1_OFF,
293 Bit2 : BIT2_OFF,
294 Bit3 : BIT3_OFF,
295 Bit4 : BIT4_OFF,
296 Bit5 : BIT5_OFF,
297 Bit6 : BIT6_OFF,
298 Bit7 : BIT7_OFF
299 };
300
301 /*! Port 5 Output Register */
302 config GpioBits8PxOut_t P5OUT = {
303 Bit0 : BIT0_OFF,
304 Bit1 : BIT1_OFF,
305 Bit2 : BIT2_OFF,
306 Bit3 : BIT3_OFF,
307 Bit4 : BIT4_OFF,
308 Bit5 : BIT5_OFF,
309 Bit6 : BIT6_OFF,
310 Bit7 : BIT7_OFF
311 };
312
313 /*! Port 5 Port Select Register */
314 config GpioBits8PxSel_t P5SEL = {
315 Bit0 : BIT0_OFF,
316 Bit1 : BIT1_OFF,
317 Bit2 : BIT2_OFF,
318 Bit3 : BIT3_OFF,
319 Bit4 : BIT4_OFF,
320 Bit5 : BIT5_OFF,
321 Bit6 : BIT6_OFF,
322 Bit7 : BIT7_OFF
323 };
324
325 /*! Port 5 Direction Register */
326 config GpioBits8PxDir_t P5DIR = {
327 Bit0 : BIT0_OFF,
328 Bit1 : BIT1_OFF,
329 Bit2 : BIT2_OFF,
330 Bit3 : BIT3_OFF,
331 Bit4 : BIT4_OFF,
332 Bit5 : BIT5_OFF,
333 Bit6 : BIT6_OFF,
334 Bit7 : BIT7_OFF
335 };
336
337 /*! Port 5 Resistor Enable Register */
338 config GpioBits8PxRen_t P5REN = {
339 Bit0 : BIT0_OFF,
340 Bit1 : BIT1_OFF,
341 Bit2 : BIT2_OFF,
342 Bit3 : BIT3_OFF,
343 Bit4 : BIT4_OFF,
344 Bit5 : BIT5_OFF,
345 Bit6 : BIT6_OFF,
346 Bit7 : BIT7_OFF
347 };
348
349 /*! Port 6 Output Register */
350 config GpioBits8PxOut_t P6OUT = {
351 Bit0 : BIT0_OFF,
352 Bit1 : BIT1_OFF,
353 Bit2 : BIT2_OFF,
354 Bit3 : BIT3_OFF,
355 Bit4 : BIT4_OFF,
356 Bit5 : BIT5_OFF,
357 Bit6 : BIT6_OFF,
358 Bit7 : BIT7_OFF
359 };
360
361 /*! Port 6 Port Select Register */
362 config GpioBits8PxSel_t P6SEL = {
363 Bit0 : BIT0_OFF,
364 Bit1 : BIT1_OFF,
365 Bit2 : BIT2_OFF,
366 Bit3 : BIT3_OFF,
367 Bit4 : BIT4_OFF,
368 Bit5 : BIT5_OFF,
369 Bit6 : BIT6_OFF,
370 Bit7 : BIT7_OFF
371 };
372
373 /*! Port 6 Direction Register */
374 config GpioBits8PxDir_t P6DIR = {
375 Bit0 : BIT0_OFF,
376 Bit1 : BIT1_OFF,
377 Bit2 : BIT2_OFF,
378 Bit3 : BIT3_OFF,
379 Bit4 : BIT4_OFF,
380 Bit5 : BIT5_OFF,
381 Bit6 : BIT6_OFF,
382 Bit7 : BIT7_OFF
383 };
384
385 /*! Port 6 Resistor Enable Register */
386 config GpioBits8PxRen_t P6REN = {
387 Bit0 : BIT0_OFF,
388 Bit1 : BIT1_OFF,
389 Bit2 : BIT2_OFF,
390 Bit3 : BIT3_OFF,
391 Bit4 : BIT4_OFF,
392 Bit5 : BIT5_OFF,
393 Bit6 : BIT6_OFF,
394 Bit7 : BIT7_OFF
395 };
396
397 /*! Port 7 Output Register */
398 config GpioBits8PxOut_t P7OUT = {
399 Bit0 : BIT0_OFF,
400 Bit1 : BIT1_OFF,
401 Bit2 : BIT2_OFF,
402 Bit3 : BIT3_OFF,
403 Bit4 : BIT4_OFF,
404 Bit5 : BIT5_OFF,
405 Bit6 : BIT6_OFF,
406 Bit7 : BIT7_OFF
407 };
408
409 /*! Port 7 Port Select Register */
410 config GpioBits8PxSel_t P7SEL = {
411 Bit0 : BIT0_OFF,
412 Bit1 : BIT1_OFF,
413 Bit2 : BIT2_OFF,
414 Bit3 : BIT3_OFF,
415 Bit4 : BIT4_OFF,
416 Bit5 : BIT5_OFF,
417 Bit6 : BIT6_OFF,
418 Bit7 : BIT7_OFF
419 };
420
421 /*! Port 7 Direction Register */
422 config GpioBits8PxDir_t P7DIR = {
423 Bit0 : BIT0_OFF,
424 Bit1 : BIT1_OFF,
425 Bit2 : BIT2_OFF,
426 Bit3 : BIT3_OFF,
427 Bit4 : BIT4_OFF,
428 Bit5 : BIT5_OFF,
429 Bit6 : BIT6_OFF,
430 Bit7 : BIT7_OFF
431 };
432
433 /*! Port 7 Resistor Enable Register */
434 config GpioBits8PxRen_t P7REN = {
435 Bit0 : BIT0_OFF,
436 Bit1 : BIT1_OFF,
437 Bit2 : BIT2_OFF,
438 Bit3 : BIT3_OFF,
439 Bit4 : BIT4_OFF,
440 Bit5 : BIT5_OFF,
441 Bit6 : BIT6_OFF,
442 Bit7 : BIT7_OFF
443 };
444
445 /*! Port 8 Output Register */
446 config GpioBits8PxOut_t P8OUT = {
447 Bit0 : BIT0_OFF,
448 Bit1 : BIT1_OFF,
449 Bit2 : BIT2_OFF,
450 Bit3 : BIT3_OFF,
451 Bit4 : BIT4_OFF,
452 Bit5 : BIT5_OFF,
453 Bit6 : BIT6_OFF,
454 Bit7 : BIT7_OFF
455 };
456
457 /*! Port 8 Port Select Register */
458 config GpioBits8PxSel_t P8SEL = {
459 Bit0 : BIT0_OFF,
460 Bit1 : BIT1_OFF,
461 Bit2 : BIT2_OFF,
462 Bit3 : BIT3_OFF,
463 Bit4 : BIT4_OFF,
464 Bit5 : BIT5_OFF,
465 Bit6 : BIT6_OFF,
466 Bit7 : BIT7_OFF
467 };
468
469 /*! Port 8 Direction Register */
470 config GpioBits8PxDir_t P8DIR = {
471 Bit0 : BIT0_OFF,
472 Bit1 : BIT1_OFF,
473 Bit2 : BIT2_OFF,
474 Bit3 : BIT3_OFF,
475 Bit4 : BIT4_OFF,
476 Bit5 : BIT5_OFF,
477 Bit6 : BIT6_OFF,
478 Bit7 : BIT7_OFF
479 };
480
481 /*! Port 8 Resistor Enable Register */
482 config GpioBits8PxRen_t P8REN = {
483 Bit0 : BIT0_OFF,
484 Bit1 : BIT1_OFF,
485 Bit2 : BIT2_OFF,
486 Bit3 : BIT3_OFF,
487 Bit4 : BIT4_OFF,
488 Bit5 : BIT5_OFF,
489 Bit6 : BIT6_OFF,
490 Bit7 : BIT7_OFF
491 };
492
493 /*! Port 9 Output Register */
494 config GpioBits8PxOut_t P9OUT = {
495 Bit0 : BIT0_OFF,
496 Bit1 : BIT1_OFF,
497 Bit2 : BIT2_OFF,
498 Bit3 : BIT3_OFF,
499 Bit4 : BIT4_OFF,
500 Bit5 : BIT5_OFF,
501 Bit6 : BIT6_OFF,
502 Bit7 : BIT7_OFF
503 };
504
505 /*! Port 9 Port Select Register */
506 config GpioBits8PxSel_t P9SEL = {
507 Bit0 : BIT0_OFF,
508 Bit1 : BIT1_OFF,
509 Bit2 : BIT2_OFF,
510 Bit3 : BIT3_OFF,
511 Bit4 : BIT4_OFF,
512 Bit5 : BIT5_OFF,
513 Bit6 : BIT6_OFF,
514 Bit7 : BIT7_OFF
515 };
516
517 /*! Port 9 Direction Register */
518 config GpioBits8PxDir_t P9DIR = {
519 Bit0 : BIT0_OFF,
520 Bit1 : BIT1_OFF,
521 Bit2 : BIT2_OFF,
522 Bit3 : BIT3_OFF,
523 Bit4 : BIT4_OFF,
524 Bit5 : BIT5_OFF,
525 Bit6 : BIT6_OFF,
526 Bit7 : BIT7_OFF
527 };
528
529 /*! Port 9 Resistor Enable Register */
530 config GpioBits8PxRen_t P9REN = {
531 Bit0 : BIT0_OFF,
532 Bit1 : BIT1_OFF,
533 Bit2 : BIT2_OFF,
534 Bit3 : BIT3_OFF,
535 Bit4 : BIT4_OFF,
536 Bit5 : BIT5_OFF,
537 Bit6 : BIT6_OFF,
538 Bit7 : BIT7_OFF
539 };
540
541 /*! Port 10 Output Register */
542 config GpioBits8PxOut_t P10OUT = {
543 Bit0 : BIT0_OFF,
544 Bit1 : BIT1_OFF,
545 Bit2 : BIT2_OFF,
546 Bit3 : BIT3_OFF,
547 Bit4 : BIT4_OFF,
548 Bit5 : BIT5_OFF,
549 Bit6 : BIT6_OFF,
550 Bit7 : BIT7_OFF
551 };
552
553 /*! Port 10 Port Select Register */
554 config GpioBits8PxSel_t P10SEL = {
555 Bit0 : BIT0_OFF,
556 Bit1 : BIT1_OFF,
557 Bit2 : BIT2_OFF,
558 Bit3 : BIT3_OFF,
559 Bit4 : BIT4_OFF,
560 Bit5 : BIT5_OFF,
561 Bit6 : BIT6_OFF,
562 Bit7 : BIT7_OFF
563 };
564
565 /*! Port 10 Direction Register */
566 config GpioBits8PxDir_t P10DIR = {
567 Bit0 : BIT0_OFF,
568 Bit1 : BIT1_OFF,
569 Bit2 : BIT2_OFF,
570 Bit3 : BIT3_OFF,
571 Bit4 : BIT4_OFF,
572 Bit5 : BIT5_OFF,
573 Bit6 : BIT6_OFF,
574 Bit7 : BIT7_OFF
575 };
576
577 /*! Port 10 Resistor Enable Register */
578 config GpioBits8PxRen_t P10REN = {
579 Bit0 : BIT0_OFF,
580 Bit1 : BIT1_OFF,
581 Bit2 : BIT2_OFF,
582 Bit3 : BIT3_OFF,
583 Bit4 : BIT4_OFF,
584 Bit5 : BIT5_OFF,
585 Bit6 : BIT6_OFF,
586 Bit7 : BIT7_OFF
587 };
588
589 /*! Port 11 Output Register */
590 config GpioBits8PxOut_t P11OUT = {
591 Bit0 : BIT0_OFF,
592 Bit1 : BIT1_OFF,
593 Bit2 : BIT2_OFF,
594 Bit3 : BIT3_OFF,
595 Bit4 : BIT4_OFF,
596 Bit5 : BIT5_OFF,
597 Bit6 : BIT6_OFF,
598 Bit7 : BIT7_OFF
599 };
600
601 /*! Port 11 Port Select Register */
602 config GpioBits8PxSel_t P11SEL = {
603 Bit0 : BIT0_OFF,
604 Bit1 : BIT1_OFF,
605 Bit2 : BIT2_OFF,
606 Bit3 : BIT3_OFF,
607 Bit4 : BIT4_OFF,
608 Bit5 : BIT5_OFF,
609 Bit6 : BIT6_OFF,
610 Bit7 : BIT7_OFF
611 };
612
613 /*! Port 11 Direction Register */
614 config GpioBits8PxDir_t P11DIR = {
615 Bit0 : BIT0_OFF,
616 Bit1 : BIT1_OFF,
617 Bit2 : BIT2_OFF,
618 Bit3 : BIT3_OFF,
619 Bit4 : BIT4_OFF,
620 Bit5 : BIT5_OFF,
621 Bit6 : BIT6_OFF,
622 Bit7 : BIT7_OFF
623 };
624
625 /*! Port 11 Resistor Enable Register */
626 config GpioBits8PxRen_t P11REN = {
627 Bit0 : BIT0_OFF,
628 Bit1 : BIT1_OFF,
629 Bit2 : BIT2_OFF,
630 Bit3 : BIT3_OFF,
631 Bit4 : BIT4_OFF,
632 Bit5 : BIT5_OFF,
633 Bit6 : BIT6_OFF,
634 Bit7 : BIT7_OFF
635 };
636 }