YAHAL
Yet Another Hardware Abstraction Library
Loading...
Searching...
No Matches
include
MCU
msp432p401r
msp_compatibility.h
1
//*****************************************************************************
2
//
3
// Copyright (C) 2013 - 2015 Texas Instruments Incorporated - http://www.ti.com/
4
//
5
// Redistribution and use in source and binary forms, with or without
6
// modification, are permitted provided that the following conditions
7
// are met:
8
//
9
// Redistributions of source code must retain the above copyright
10
// notice, this list of conditions and the following disclaimer.
11
//
12
// Redistributions in binary form must reproduce the above copyright
13
// notice, this list of conditions and the following disclaimer in the
14
// documentation and/or other materials provided with the
15
// distribution.
16
//
17
// Neither the name of Texas Instruments Incorporated nor the names of
18
// its contributors may be used to endorse or promote products derived
19
// from this software without specific prior written permission.
20
//
21
// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
22
// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
23
// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
24
// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
25
// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
26
// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
27
// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
28
// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
29
// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
30
// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
31
// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
32
//
33
// MSP430 intrinsic redefinitions for use with MSP432 Family Devices
34
//
35
//****************************************************************************
36
37
/******************************************************************************
38
* Definitions for 8/16/32-bit wide memory access *
39
******************************************************************************/
40
#define HWREG8(x) (*((volatile uint8_t *)(x)))
41
#define HWREG16(x) (*((volatile uint16_t *)(x)))
42
#define HWREG32(x) (*((volatile uint32_t *)(x)))
43
#define HWREG(x) (HWREG16(x))
44
#define HWREG8_L(x) (*((volatile uint8_t *)((uint8_t *)&x)))
45
#define HWREG8_H(x) (*((volatile uint8_t *)(((uint8_t *)&x)+1)))
46
#define HWREG16_L(x) (*((volatile uint16_t *)((uint16_t *)&x)))
47
#define HWREG16_H(x) (*((volatile uint16_t *)(((uint16_t *)&x)+1)))
48
49
/******************************************************************************
50
* Definitions for 8/16/32-bit wide bit band access *
51
******************************************************************************/
52
#define HWREGBIT8(x, b) (HWREG8(((uint32_t)(x) & 0xF0000000) | 0x02000000 | (((uint32_t)(x) & 0x000FFFFF) << 5) | ((b) << 2)))
53
#define HWREGBIT16(x, b) (HWREG16(((uint32_t)(x) & 0xF0000000) | 0x02000000 | (((uint32_t)(x) & 0x000FFFFF) << 5) | ((b) << 2)))
54
#define HWREGBIT32(x, b) (HWREG32(((uint32_t)(x) & 0xF0000000) | 0x02000000 | (((uint32_t)(x) & 0x000FFFFF) << 5) | ((b) << 2)))
55
56
// Intrinsics with ARM equivalents
57
#if defined ( __TI_ARM__ )
/* TI CGT Compiler */
58
59
#define __sleep() __wfi()
60
#define __deep_sleep() { (*((volatile uint32_t *)(0xE000ED10))) |= 0x00000004; __wfi(); (*((volatile uint32_t *)(0xE000ED10))) &= ~0x00000004; }
61
#define __low_power_mode_off_on_exit() { (*((volatile uint32_t *)(0xE000ED10))) &= ~0x00000002; }
62
#define __get_SP_register() __get_MSP()
63
#define __set_SP_register(x) __set_MSP(x)
64
#define __get_interrupt_state() __get_PRIMASK()
65
#define __set_interrupt_state(x) __set_PRIMASK(x)
66
#define __enable_interrupt() _enable_IRQ()
67
#define __enable_interrupts() _enable_IRQ()
68
#define __disable_interrupt() _disable_IRQ()
69
#define __disable_interrupts() _disable_IRQ()
70
#define __no_operation() __asm(" nop")
71
72
#elif defined ( __ICCARM__ )
/* IAR Compiler */
73
74
#include <stdint.h>
75
76
#define __INLINE inline
77
#define __sleep() __WFI()
78
#define __deep_sleep() { (*((volatile uint32_t *)(0xE000ED10))) |= 0x00000004; __WFI(); (*((volatile uint32_t *)(0xE000ED10))) &= ~0x00000004; }
79
#define __low_power_mode_off_on_exit() { (*((volatile uint32_t *)(0xE000ED10))) &= ~0x00000002; }
80
81
#if (__VER__ < 8020002)
82
#define __get_SP_register() __get_MSP()
83
#define __set_SP_register() __set_MSP()
84
#define __get_interrupt_state() __get_PRIMASK()
85
#define __set_interrupt_state(x) __set_PRIMASK(x)
86
#define __enable_interrupt() __asm(" cpsie i")
87
#define __enable_interrupts() __asm(" cpsie i")
88
#define __disable_interrupt() __asm(" cpsid i")
89
#define __disable_interrupts() __asm(" cpsid i")
90
#define __no_operation() __asm(" nop")
91
#endif
92
93
// Intrinsics without ARM equivalents
94
#define __bcd_add_short(x,y) { while(1);
/* Using not-supported MSP430 intrinsic. No replacement available. */
}
95
#define __bcd_add_long(x,y) { while(1);
/* Using not-supported MSP430 intrinsic. No replacement available. */
}
96
#define __bcd_add_long_long(x,y) { while(1);
/* Using not-supported MSP430 intrinsic. No replacement available. */
}
97
#define __even_in_range(x,y) { while(1);
/* Using not-supported MSP430 intrinsic. No replacement available. */
}
98
#define __data20_write_char(x,y) { while(1);
/* Using not-supported MSP430 intrinsic. No replacement available. */
}
99
#define __data20_write_short(x,y) { while(1);
/* Using not-supported MSP430 intrinsic. No replacement available. */
}
100
#define __data20_write_long(x,y) { while(1);
/* Using not-supported MSP430 intrinsic. No replacement available. */
}
101
#define __never_executed() { while(1);
/* Using not-supported MSP430 intrinsic. No replacement available. */
}
102
#define __op_code() { while(1);
/* Using not-supported MSP430 intrinsic. No replacement available. */
}
103
#define __code_distance() { while(1);
/* Using not-supported MSP430 intrinsic. No replacement available. */
}
104
#define __bic_SR_register(x) { while(1);
/* Using not-supported MSP430 intrinsic. No replacement available. */
}
105
#define __bis_SR_register(x) { while(1);
/* Using not-supported MSP430 intrinsic. No replacement available. */
}
106
#define __bis_SR_register_on_exit(x) { while(1);
/* Using not-supported MSP430 intrinsic. Recommended to write to SCS_SCR register. */
}
107
#define __bic_SR_register_on_exit(x) { while(1);
/* Using not-supported MSP430 intrinsic. Recommended to write to SCS_SCR register. */
}
108
#define __delay_cycles(x) { while(1);
/* Using not-supported MSP430 intrinsic. Recommended to use a timer or a custom for loop. */
}
109
110
#elif defined ( __CC_ARM )
/* ARM Compiler */
111
112
#define __sleep() __wfi()
113
#define __deep_sleep() { (*((volatile uint32_t *)(0xE000ED10))) |= 0x00000004; __wfi(); (*((volatile uint32_t *)(0xE000ED10))) &= ~0x00000004; }
114
#define __low_power_mode_off_on_exit() { (*((volatile uint32_t *)(0xE000ED10))) &= ~0x00000002; }
115
#define __get_SP_register() __get_MSP()
116
#define __set_SP_register(x) __set_MSP(x)
117
#define __get_interrupt_state() __get_PRIMASK()
118
#define __set_interrupt_state(x) __set_PRIMASK(x)
119
#define __enable_interrupt() __asm(" cpsie i")
120
#define __enable_interrupts() __asm(" cpsie i")
121
#define __disable_interrupt() __asm(" cpsid i")
122
#define __disable_interrupts() __asm(" cpsid i")
123
#define __no_operation() __asm(" nop")
124
125
// Intrinsics without ARM equivalents
126
#define __bcd_add_short(x,y) { while(1);
/* Using not-supported MSP430 intrinsic. No replacement available. */
}
127
#define __bcd_add_long(x,y) { while(1);
/* Using not-supported MSP430 intrinsic. No replacement available. */
}
128
#define __bcd_add_long_long(x,y) { while(1);
/* Using not-supported MSP430 intrinsic. No replacement available. */
}
129
#define __even_in_range(x,y) { while(1);
/* Using not-supported MSP430 intrinsic. No replacement available. */
}
130
#define __data20_write_char(x,y) { while(1);
/* Using not-supported MSP430 intrinsic. No replacement available. */
}
131
#define __data20_write_short(x,y) { while(1);
/* Using not-supported MSP430 intrinsic. No replacement available. */
}
132
#define __data20_write_long(x,y) { while(1);
/* Using not-supported MSP430 intrinsic. No replacement available. */
}
133
#define __never_executed() { while(1);
/* Using not-supported MSP430 intrinsic. No replacement available. */
}
134
#define __op_code() { while(1);
/* Using not-supported MSP430 intrinsic. No replacement available. */
}
135
#define __code_distance() { while(1);
/* Using not-supported MSP430 intrinsic. No replacement available. */
}
136
#define __bic_SR_register(x) { while(1);
/* Using not-supported MSP430 intrinsic. No replacement available. */
}
137
#define __bis_SR_register(x) { while(1);
/* Using not-supported MSP430 intrinsic. No replacement available. */
}
138
#define __bis_SR_register_on_exit(x) { while(1);
/* Using not-supported MSP430 intrinsic. Recommended to write to SCS_SCR register. */
}
139
#define __bic_SR_register_on_exit(x) { while(1);
/* Using not-supported MSP430 intrinsic. Recommended to write to SCS_SCR register. */
}
140
#define __delay_cycles(x) { while(1);
/* Using not-supported MSP430 intrinsic. Recommended to use a timer or a custom for loop. */
}
141
142
#elif defined ( __GNUC__ )
/* GCC Compiler */
143
#undef __wfi
144
#define __wfi() __asm(" wfi")
145
#define __sleep() __wfi()
146
#define __deep_sleep() { (*((volatile uint32_t *)(0xE000ED10))) |= 0x00000004; __wfi(); (*((volatile uint32_t *)(0xE000ED10))) &= ~0x00000004; }
147
#define __low_power_mode_off_on_exit() { (*((volatile uint32_t *)(0xE000ED10))) &= ~0x00000002; }
148
#define __get_SP_register() __get_MSP()
149
#define __set_SP_register(x) __set_MSP(x)
150
#define __get_interrupt_state() __get_PRIMASK()
151
#define __set_interrupt_state(x) __set_PRIMASK(x)
152
#define __enable_interrupt() __asm(" cpsie i")
153
#define __enable_interrupts() __asm(" cpsie i")
154
#define __disable_interrupt() __asm(" cpsid i")
155
#define __disable_interrupts() __asm(" cpsid i")
156
#define __no_operation() __asm(" nop")
157
158
// Intrinsics without ARM equivalents
159
#define __bcd_add_short(x,y) { while(1);
/* Using not-supported MSP430 intrinsic. No replacement available. */
}
160
#define __bcd_add_long(x,y) { while(1);
/* Using not-supported MSP430 intrinsic. No replacement available. */
}
161
#define __bcd_add_long_long(x,y) { while(1);
/* Using not-supported MSP430 intrinsic. No replacement available. */
}
162
#define __even_in_range(x,y) { while(1);
/* Using not-supported MSP430 intrinsic. No replacement available. */
}
163
#define __data20_write_char(x,y) { while(1);
/* Using not-supported MSP430 intrinsic. No replacement available. */
}
164
#define __data20_write_short(x,y) { while(1);
/* Using not-supported MSP430 intrinsic. No replacement available. */
}
165
#define __data20_write_long(x,y) { while(1);
/* Using not-supported MSP430 intrinsic. No replacement available. */
}
166
#define __never_executed() { while(1);
/* Using not-supported MSP430 intrinsic. No replacement available. */
}
167
#define __op_code() { while(1);
/* Using not-supported MSP430 intrinsic. No replacement available. */
}
168
#define __code_distance() { while(1);
/* Using not-supported MSP430 intrinsic. No replacement available. */
}
169
#define __bic_SR_register(x) { while(1);
/* Using not-supported MSP430 intrinsic. No replacement available. */
}
170
#define __bis_SR_register(x) { while(1);
/* Using not-supported MSP430 intrinsic. No replacement available. */
}
171
#define __bis_SR_register_on_exit(x) { while(1);
/* Using not-supported MSP430 intrinsic. Recommended to write to SCS_SCR register. */
}
172
#define __bic_SR_register_on_exit(x) { while(1);
/* Using not-supported MSP430 intrinsic. Recommended to write to SCS_SCR register. */
}
173
#define __delay_cycles(x) { while(1);
/* Using not-supported MSP430 intrinsic. Recommended to use a timer or a custom for loop. */
}
174
175
#endif
176
177
// Intrinsics without ARM equivalents
178
#define __low_power_mode_0() { __sleep(); }
179
#define __low_power_mode_1() { __sleep(); }
180
#define __low_power_mode_2() { __sleep(); }
181
#define __low_power_mode_3() { __deep_sleep(); }
182
#define __low_power_mode_4() { __deep_sleep(); }
183
#define __data16_read_addr(x) (*((volatile uint32_t *)(x)))
184
#define __data20_read_char(x) (*((volatile uint8_t *)(x)))
185
#define __data20_read_short(x) (*((volatile uint16_t *)(x)))
186
#define __data20_read_long(x) (*((volatile uint32_t *)(x)))
187
#define __data16_write_addr(x,y) { (*((volatile uint32_t *)(x))) }
188
#define __get_SR_register() 0
189
#define __get_SR_register_on_exit() 0
190
191
// the following defines are deprecated and will be removed in future releases
192
#define ATLBASE ALTBASE
193
#define CS_CTL1_SELM_7 ((uint32_t)0x00000007)
194
/* compatibilities. */
195
#define CS_CTL1_SELS_7 ((uint32_t)0x00000070)
196
/* compatibilities. */
197
#define CS_CTL1_SELA_3 ((uint32_t)0x00000300)
198
/* compatibilities. */
199
#define CS_CTL1_SELA_4 ((uint32_t)0x00000400)
200
/* compatibilities. */
201
#define CS_CTL1_SELA_5 ((uint32_t)0x00000500)
202
/* compatibilities. */
203
#define CS_CTL1_SELA_6 ((uint32_t)0x00000600)
204
/* compatibilities. */
205
#define CS_CTL1_SELA_7 ((uint32_t)0x00000700)
206
/* compatibilities. */
207
/* CS_CTL2[LFXTAGCOFF] Bits */
208
#define CS_CTL2_LFXTAGCOFF_OFS ( 7)
209
#define CS_CTL2_LFXTAGCOFF ((uint32_t)0x00000080)
211
/* CS_CTL3[FCNTHF2] Bits */
212
#define CS_CTL3_FCNTHF2_OFS ( 8)
213
#define CS_CTL3_FCNTHF2_MASK ((uint32_t)0x00000300)
214
#define CS_CTL3_FCNTHF20 ((uint32_t)0x00000100)
215
#define CS_CTL3_FCNTHF21 ((uint32_t)0x00000200)
216
#define CS_CTL3_FCNTHF2_0 ((uint32_t)0x00000000)
217
#define CS_CTL3_FCNTHF2_1 ((uint32_t)0x00000100)
218
#define CS_CTL3_FCNTHF2_2 ((uint32_t)0x00000200)
219
#define CS_CTL3_FCNTHF2_3 ((uint32_t)0x00000300)
220
#define CS_CTL3_FCNTHF2__2048 ((uint32_t)0x00000000)
221
#define CS_CTL3_FCNTHF2__4096 ((uint32_t)0x00000100)
222
#define CS_CTL3_FCNTHF2__8192 ((uint32_t)0x00000200)
223
#define CS_CTL3_FCNTHF2__16384 ((uint32_t)0x00000300)
224
/* CS_CTL3[RFCNTHF2] Bits */
225
#define CS_CTL3_RFCNTHF2_OFS (10)
226
#define CS_CTL3_RFCNTHF2 ((uint32_t)0x00000400)
227
/* CS_CTL3[FCNTHF2_EN] Bits */
228
#define CS_CTL3_FCNTHF2_EN_OFS (11)
229
#define CS_CTL3_FCNTHF2_EN ((uint32_t)0x00000800)
230
/* CS_STAT[HFXT2_ON] Bits */
231
#define CS_STAT_HFXT2_ON_OFS ( 3)
232
#define CS_STAT_HFXT2_ON ((uint32_t)0x00000008)
233
/* CS_IE[HFXT2IE] Bits */
234
#define CS_IE_HFXT2IE_OFS ( 2)
235
#define CS_IE_HFXT2IE ((uint32_t)0x00000004)
236
/* CS_IE[FCNTHF2IE] Bits */
237
#define CS_IE_FCNTHF2IE_OFS (10)
238
#define CS_IE_FCNTHF2IE ((uint32_t)0x00000400)
239
/* CS_IE[PLLOOLIE] Bits */
240
#define CS_IE_PLLOOLIE_OFS (12)
241
#define CS_IE_PLLOOLIE ((uint32_t)0x00001000)
242
/* CS_IE[PLLLOSIE] Bits */
243
#define CS_IE_PLLLOSIE_OFS (13)
244
#define CS_IE_PLLLOSIE ((uint32_t)0x00002000)
245
/* CS_IE[PLLOORIE] Bits */
246
#define CS_IE_PLLOORIE_OFS (14)
247
#define CS_IE_PLLOORIE ((uint32_t)0x00004000)
248
/* CS_IE[CALIE] Bits */
249
#define CS_IE_CALIE_OFS (15)
250
#define CS_IE_CALIE ((uint32_t)0x00008000)
251
/* CS_IFG[HFXT2IFG] Bits */
252
#define CS_IFG_HFXT2IFG_OFS ( 2)
253
#define CS_IFG_HFXT2IFG ((uint32_t)0x00000004)
254
/* CS_IFG[FCNTHF2IFG] Bits */
255
#define CS_IFG_FCNTHF2IFG_OFS (11)
256
#define CS_IFG_FCNTHF2IFG ((uint32_t)0x00000800)
257
/* CS_IFG[PLLOOLIFG] Bits */
258
#define CS_IFG_PLLOOLIFG_OFS (12)
259
#define CS_IFG_PLLOOLIFG ((uint32_t)0x00001000)
260
/* CS_IFG[PLLLOSIFG] Bits */
261
#define CS_IFG_PLLLOSIFG_OFS (13)
262
#define CS_IFG_PLLLOSIFG ((uint32_t)0x00002000)
263
/* CS_IFG[PLLOORIFG] Bits */
264
#define CS_IFG_PLLOORIFG_OFS (14)
265
#define CS_IFG_PLLOORIFG ((uint32_t)0x00004000)
266
/* CS_IFG[CALIFG] Bits */
267
#define CS_IFG_CALIFG_OFS (15)
268
#define CS_IFG_CALIFG ((uint32_t)0x00008000)
269
/* CS_CLRIFG[CLR_HFXT2IFG] Bits */
270
#define CS_CLRIFG_CLR_HFXT2IFG_OFS ( 2)
271
#define CS_CLRIFG_CLR_HFXT2IFG ((uint32_t)0x00000004)
272
/* CS_CLRIFG[CLR_CALIFG] Bits */
273
#define CS_CLRIFG_CLR_CALIFG_OFS (15)
274
#define CS_CLRIFG_CLR_CALIFG ((uint32_t)0x00008000)
275
/* CS_CLRIFG[CLR_FCNTHF2IFG] Bits */
276
#define CS_CLRIFG_CLR_FCNTHF2IFG_OFS (10)
277
#define CS_CLRIFG_CLR_FCNTHF2IFG ((uint32_t)0x00000400)
278
/* CS_CLRIFG[CLR_PLLOOLIFG] Bits */
279
#define CS_CLRIFG_CLR_PLLOOLIFG_OFS (12)
280
#define CS_CLRIFG_CLR_PLLOOLIFG ((uint32_t)0x00001000)
281
/* CS_CLRIFG[CLR_PLLLOSIFG] Bits */
282
#define CS_CLRIFG_CLR_PLLLOSIFG_OFS (13)
283
#define CS_CLRIFG_CLR_PLLLOSIFG ((uint32_t)0x00002000)
284
/* CS_CLRIFG[CLR_PLLOORIFG] Bits */
285
#define CS_CLRIFG_CLR_PLLOORIFG_OFS (14)
286
#define CS_CLRIFG_CLR_PLLOORIFG ((uint32_t)0x00004000)
287
/* CS_SETIFG[SET_HFXT2IFG] Bits */
288
#define CS_SETIFG_SET_HFXT2IFG_OFS ( 2)
289
#define CS_SETIFG_SET_HFXT2IFG ((uint32_t)0x00000004)
290
/* CS_SETIFG[SET_CALIFG] Bits */
291
#define CS_SETIFG_SET_CALIFG_OFS (15)
292
#define CS_SETIFG_SET_CALIFG ((uint32_t)0x00008000)
293
/* CS_SETIFG[SET_FCNTHF2IFG] Bits */
294
#define CS_SETIFG_SET_FCNTHF2IFG_OFS (10)
295
#define CS_SETIFG_SET_FCNTHF2IFG ((uint32_t)0x00000400)
296
/* CS_SETIFG[SET_PLLOOLIFG] Bits */
297
#define CS_SETIFG_SET_PLLOOLIFG_OFS (12)
298
#define CS_SETIFG_SET_PLLOOLIFG ((uint32_t)0x00001000)
299
/* CS_SETIFG[SET_PLLLOSIFG] Bits */
300
#define CS_SETIFG_SET_PLLLOSIFG_OFS (13)
301
#define CS_SETIFG_SET_PLLLOSIFG ((uint32_t)0x00002000)
302
/* CS_SETIFG[SET_PLLOORIFG] Bits */
303
#define CS_SETIFG_SET_PLLOORIFG_OFS (14)
304
#define CS_SETIFG_SET_PLLOORIFG ((uint32_t)0x00004000)
306
/* EUSCI_x_CTLW0[SSEL] Bits */
307
#define EUSCI_A_CTLW0_SSEL_0 ((uint16_t)0x0000)
308
#define EUSCI_B_CTLW0_SSEL_0 ((uint16_t)0x0000)
309
#define EUSCI_B_CTLW0_SSEL_3 ((uint16_t)0x00C0)
311
/* RSTCTL_PSSRESET_STAT[SVSL] Bits */
312
#define RSTCTL_PSSRESET_STAT_SVSL_OFS ( 0)
313
#define RSTCTL_PSSRESET_STAT_SVSL ((uint32_t)0x00000001)
315
/* SYSCTL_SYSTEM_STAT[DBG_SEC_ACT] Bits */
316
#define SYSCTL_SYSTEM_STAT_DBG_SEC_ACT_OFS ( 3)
317
#define SYSCTL_SYSTEM_STAT_DBG_SEC_ACT ((uint32_t)0x00000008)
318
/* SYSCTL_SYSTEM_STAT[JTAG_SWD_LOCK_ACT] Bits */
319
#define SYSCTL_SYSTEM_STAT_JTAG_SWD_LOCK_ACT_OFS ( 4)
320
#define SYSCTL_SYSTEM_STAT_JTAG_SWD_LOCK_ACT ((uint32_t)0x00000010)
321
/* SYSCTL_SYSTEM_STAT[IP_PROT_ACT] Bits */
322
#define SYSCTL_SYSTEM_STAT_IP_PROT_ACT_OFS ( 5)
323
#define SYSCTL_SYSTEM_STAT_IP_PROT_ACT ((uint32_t)0x00000020)
Generated by
1.12.0