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