1 /****************************************************************************** 2 * Filename: hw_nvic_h 3 ****************************************************************************** 4 * Copyright (c) 2021 Texas Instruments Incorporated. All rights reserved. 5 * 6 * Redistribution and use in source and binary forms, with or without 7 * modification, are permitted provided that the following conditions are met: 8 * 9 * 1) Redistributions of source code must retain the above copyright notice, 10 * this list of conditions and the following disclaimer. 11 * 12 * 2) Redistributions in binary form must reproduce the above copyright notice, 13 * this list of conditions and the following disclaimer in the documentation 14 * and/or other materials provided with the distribution. 15 * 16 * 3) Neither the name of the copyright holder nor the names of its contributors 17 * may be used to endorse or promote products derived from this software 18 * without specific prior written permission. 19 * 20 * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" 21 * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE 22 * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE 23 * ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE 24 * LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR 25 * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF 26 * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS 27 * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN 28 * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) 29 * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE 30 * POSSIBILITY OF SUCH DAMAGE. 31 ******************************************************************************/ 32 33 #ifndef __HW_NVIC_H__ 34 #define __HW_NVIC_H__ 35 36 //***************************************************************************** 37 // 38 // This section defines the register offsets of 39 // NVIC component 40 // 41 //***************************************************************************** 42 // Interrupt Set-Enable Register 43 #define NVIC_O_ISER 0x00000100U 44 45 // Interrupt Clear-Enable Register 46 #define NVIC_O_ICER 0x00000180U 47 48 // Interrupt Set-Pending Register 49 #define NVIC_O_ISPR 0x00000200U 50 51 // Interrupt Clear-Pending Register 52 #define NVIC_O_ICPR 0x00000280U 53 54 // Interrupt Priority Register 0 55 #define NVIC_O_IPR0 0x00000400U 56 57 // Interrupt Priority Register 1 58 #define NVIC_O_IPR1 0x00000404U 59 60 // Interrupt Priority Register 2 61 #define NVIC_O_IPR2 0x00000408U 62 63 // Interrupt Priority Register 3 64 #define NVIC_O_IPR3 0x0000040CU 65 66 // Interrupt Priority Register 4 67 #define NVIC_O_IPR4 0x00000410U 68 69 // Interrupt Priority Register 5 70 #define NVIC_O_IPR5 0x00000414U 71 72 // Interrupt Priority Register 6 73 #define NVIC_O_IPR6 0x00000418U 74 75 // Interrupt Priority Register 7 76 #define NVIC_O_IPR7 0x0000041CU 77 78 //***************************************************************************** 79 // 80 // Register: NVIC_O_ISER 81 // 82 //***************************************************************************** 83 // Field: [31:0] SETENA 84 // 85 // Writing 0 to a SETENA bit has no effect, writing 1 to a bit enables the 86 // corresponding interrupt. Reading the bit returns its current enable state. 87 // Reset clears the SETENA fields. 88 #define NVIC_ISER_SETENA_W 32U 89 #define NVIC_ISER_SETENA_M 0xFFFFFFFFU 90 #define NVIC_ISER_SETENA_S 0U 91 92 //***************************************************************************** 93 // 94 // Register: NVIC_O_ICER 95 // 96 //***************************************************************************** 97 // Field: [31:0] CLRENA 98 // 99 // Writing 0 to a CLRENA bit has no effect, writing 1 to a bit disables the 100 // corresponding interrupt. Reading the bit returns its current enable state. 101 // Reset clears the CLRENA field. 102 #define NVIC_ICER_CLRENA_W 32U 103 #define NVIC_ICER_CLRENA_M 0xFFFFFFFFU 104 #define NVIC_ICER_CLRENA_S 0U 105 106 //***************************************************************************** 107 // 108 // Register: NVIC_O_ISPR 109 // 110 //***************************************************************************** 111 // Field: [31:0] SETPEND 112 // 113 // Interrupt set-pending bits for a: Write: 1 = pend interrupt 0 = no effect; 114 // Read: 1 = interrupt is pending 0 = interrupt is not pending. 115 #define NVIC_ISPR_SETPEND_W 32U 116 #define NVIC_ISPR_SETPEND_M 0xFFFFFFFFU 117 #define NVIC_ISPR_SETPEND_S 0U 118 119 //***************************************************************************** 120 // 121 // Register: NVIC_O_ICPR 122 // 123 //***************************************************************************** 124 // Field: [31:0] CLRPEND 125 // 126 // Interrupt clear-pending bits: Write: 1 = clear interrupt pending bit, 0 = no 127 // effect; Read: 1 = interrupt is pending 0 = interrupt is not pending. 128 #define NVIC_ICPR_CLRPEND_W 32U 129 #define NVIC_ICPR_CLRPEND_M 0xFFFFFFFFU 130 #define NVIC_ICPR_CLRPEND_S 0U 131 132 //***************************************************************************** 133 // 134 // Register: NVIC_O_IPR0 135 // 136 //***************************************************************************** 137 // Field: [31:30] IP_3 138 // 139 // Priority of interrupt 3 140 #define NVIC_IPR0_IP_3_W 2U 141 #define NVIC_IPR0_IP_3_M 0xC0000000U 142 #define NVIC_IPR0_IP_3_S 30U 143 144 // Field: [23:22] IP_2 145 // 146 // Priority of interrupt 2 147 #define NVIC_IPR0_IP_2_W 2U 148 #define NVIC_IPR0_IP_2_M 0x00C00000U 149 #define NVIC_IPR0_IP_2_S 22U 150 151 // Field: [15:14] IP_1 152 // 153 // Priority of interrupt 1 154 #define NVIC_IPR0_IP_1_W 2U 155 #define NVIC_IPR0_IP_1_M 0x0000C000U 156 #define NVIC_IPR0_IP_1_S 14U 157 158 // Field: [7:6] IP_0 159 // 160 // Priority of interrupt 0 161 #define NVIC_IPR0_IP_0_W 2U 162 #define NVIC_IPR0_IP_0_M 0x000000C0U 163 #define NVIC_IPR0_IP_0_S 6U 164 165 //***************************************************************************** 166 // 167 // Register: NVIC_O_IPR1 168 // 169 //***************************************************************************** 170 // Field: [31:30] IP_7 171 // 172 // Priority of interrupt 7 173 #define NVIC_IPR1_IP_7_W 2U 174 #define NVIC_IPR1_IP_7_M 0xC0000000U 175 #define NVIC_IPR1_IP_7_S 30U 176 177 // Field: [23:22] IP_6 178 // 179 // Priority of interrupt 6 180 #define NVIC_IPR1_IP_6_W 2U 181 #define NVIC_IPR1_IP_6_M 0x00C00000U 182 #define NVIC_IPR1_IP_6_S 22U 183 184 // Field: [15:14] IP_5 185 // 186 // Priority of interrupt 5 187 #define NVIC_IPR1_IP_5_W 2U 188 #define NVIC_IPR1_IP_5_M 0x0000C000U 189 #define NVIC_IPR1_IP_5_S 14U 190 191 // Field: [7:6] IP_4 192 // 193 // Priority of interrupt 4 194 #define NVIC_IPR1_IP_4_W 2U 195 #define NVIC_IPR1_IP_4_M 0x000000C0U 196 #define NVIC_IPR1_IP_4_S 6U 197 198 //***************************************************************************** 199 // 200 // Register: NVIC_O_IPR2 201 // 202 //***************************************************************************** 203 // Field: [31:30] IP_11 204 // 205 // Priority of interrupt 11 206 #define NVIC_IPR2_IP_11_W 2U 207 #define NVIC_IPR2_IP_11_M 0xC0000000U 208 #define NVIC_IPR2_IP_11_S 30U 209 210 // Field: [23:22] IP_10 211 // 212 // Priority of interrupt 10 213 #define NVIC_IPR2_IP_10_W 2U 214 #define NVIC_IPR2_IP_10_M 0x00C00000U 215 #define NVIC_IPR2_IP_10_S 22U 216 217 // Field: [15:14] IP_9 218 // 219 // Priority of interrupt 9 220 #define NVIC_IPR2_IP_9_W 2U 221 #define NVIC_IPR2_IP_9_M 0x0000C000U 222 #define NVIC_IPR2_IP_9_S 14U 223 224 // Field: [7:6] IP_8 225 // 226 // Priority of interrupt 8 227 #define NVIC_IPR2_IP_8_W 2U 228 #define NVIC_IPR2_IP_8_M 0x000000C0U 229 #define NVIC_IPR2_IP_8_S 6U 230 231 //***************************************************************************** 232 // 233 // Register: NVIC_O_IPR3 234 // 235 //***************************************************************************** 236 // Field: [31:30] IP_15 237 // 238 // Priority of interrupt 15 239 #define NVIC_IPR3_IP_15_W 2U 240 #define NVIC_IPR3_IP_15_M 0xC0000000U 241 #define NVIC_IPR3_IP_15_S 30U 242 243 // Field: [23:22] IP_14 244 // 245 // Priority of interrupt 14 246 #define NVIC_IPR3_IP_14_W 2U 247 #define NVIC_IPR3_IP_14_M 0x00C00000U 248 #define NVIC_IPR3_IP_14_S 22U 249 250 // Field: [15:14] IP_13 251 // 252 // Priority of interrupt 13 253 #define NVIC_IPR3_IP_13_W 2U 254 #define NVIC_IPR3_IP_13_M 0x0000C000U 255 #define NVIC_IPR3_IP_13_S 14U 256 257 // Field: [7:6] IP_12 258 // 259 // Priority of interrupt 12 260 #define NVIC_IPR3_IP_12_W 2U 261 #define NVIC_IPR3_IP_12_M 0x000000C0U 262 #define NVIC_IPR3_IP_12_S 6U 263 264 //***************************************************************************** 265 // 266 // Register: NVIC_O_IPR4 267 // 268 //***************************************************************************** 269 // Field: [31:30] IP_19 270 // 271 // Priority of interrupt 19 272 #define NVIC_IPR4_IP_19_W 2U 273 #define NVIC_IPR4_IP_19_M 0xC0000000U 274 #define NVIC_IPR4_IP_19_S 30U 275 276 // Field: [23:22] IP_18 277 // 278 // Priority of interrupt 18 279 #define NVIC_IPR4_IP_18_W 2U 280 #define NVIC_IPR4_IP_18_M 0x00C00000U 281 #define NVIC_IPR4_IP_18_S 22U 282 283 // Field: [15:14] IP_17 284 // 285 // Priority of interrupt 17 286 #define NVIC_IPR4_IP_17_W 2U 287 #define NVIC_IPR4_IP_17_M 0x0000C000U 288 #define NVIC_IPR4_IP_17_S 14U 289 290 // Field: [7:6] IP_16 291 // 292 // Priority of interrupt 16 293 #define NVIC_IPR4_IP_16_W 2U 294 #define NVIC_IPR4_IP_16_M 0x000000C0U 295 #define NVIC_IPR4_IP_16_S 6U 296 297 //***************************************************************************** 298 // 299 // Register: NVIC_O_IPR5 300 // 301 //***************************************************************************** 302 // Field: [31:30] IP_23 303 // 304 // Priority of interrupt 23 305 #define NVIC_IPR5_IP_23_W 2U 306 #define NVIC_IPR5_IP_23_M 0xC0000000U 307 #define NVIC_IPR5_IP_23_S 30U 308 309 // Field: [23:22] IP_22 310 // 311 // Priority of interrupt 22 312 #define NVIC_IPR5_IP_22_W 2U 313 #define NVIC_IPR5_IP_22_M 0x00C00000U 314 #define NVIC_IPR5_IP_22_S 22U 315 316 // Field: [15:14] IP_21 317 // 318 // Priority of interrupt 21 319 #define NVIC_IPR5_IP_21_W 2U 320 #define NVIC_IPR5_IP_21_M 0x0000C000U 321 #define NVIC_IPR5_IP_21_S 14U 322 323 // Field: [7:6] IP_20 324 // 325 // Priority of interrupt 20 326 #define NVIC_IPR5_IP_20_W 2U 327 #define NVIC_IPR5_IP_20_M 0x000000C0U 328 #define NVIC_IPR5_IP_20_S 6U 329 330 //***************************************************************************** 331 // 332 // Register: NVIC_O_IPR6 333 // 334 //***************************************************************************** 335 // Field: [31:30] IP_27 336 // 337 // Priority of interrupt 27 338 #define NVIC_IPR6_IP_27_W 2U 339 #define NVIC_IPR6_IP_27_M 0xC0000000U 340 #define NVIC_IPR6_IP_27_S 30U 341 342 // Field: [23:22] IP_26 343 // 344 // Priority of interrupt 26 345 #define NVIC_IPR6_IP_26_W 2U 346 #define NVIC_IPR6_IP_26_M 0x00C00000U 347 #define NVIC_IPR6_IP_26_S 22U 348 349 // Field: [15:14] IP_25 350 // 351 // Priority of interrupt 25 352 #define NVIC_IPR6_IP_25_W 2U 353 #define NVIC_IPR6_IP_25_M 0x0000C000U 354 #define NVIC_IPR6_IP_25_S 14U 355 356 // Field: [7:6] IP_24 357 // 358 // Priority of interrupt 24 359 #define NVIC_IPR6_IP_24_W 2U 360 #define NVIC_IPR6_IP_24_M 0x000000C0U 361 #define NVIC_IPR6_IP_24_S 6U 362 363 //***************************************************************************** 364 // 365 // Register: NVIC_O_IPR7 366 // 367 //***************************************************************************** 368 // Field: [31:30] IP_31 369 // 370 // Priority of interrupt 31 371 #define NVIC_IPR7_IP_31_W 2U 372 #define NVIC_IPR7_IP_31_M 0xC0000000U 373 #define NVIC_IPR7_IP_31_S 30U 374 375 // Field: [23:22] IP_30 376 // 377 // Priority of interrupt 30 378 #define NVIC_IPR7_IP_30_W 2U 379 #define NVIC_IPR7_IP_30_M 0x00C00000U 380 #define NVIC_IPR7_IP_30_S 22U 381 382 // Field: [15:14] IP_29 383 // 384 // Priority of interrupt 29 385 #define NVIC_IPR7_IP_29_W 2U 386 #define NVIC_IPR7_IP_29_M 0x0000C000U 387 #define NVIC_IPR7_IP_29_S 14U 388 389 // Field: [7:6] IP_28 390 // 391 // Priority of interrupt 28 392 #define NVIC_IPR7_IP_28_W 2U 393 #define NVIC_IPR7_IP_28_M 0x000000C0U 394 #define NVIC_IPR7_IP_28_S 6U 395 396 397 #endif // __NVIC__ 398