Basic vanilla C boilerplate for STM32L100xC (Discovery L100C). Uses GCC. This was some class project without much practical use
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
 
 
 
 
 

388 lines
22 KiB

#pragma once
#include "common.h"
// AUTHOR : Ondrej Hruska
// DATE : 12/2015
// DESCR : Control registers and bit masks for NVIC (interrupt vector controller)
//****************************************************************************
//*
//* REGISTERS
//*
//****************************************************************************
// system handler
#define SCS_SHPR(ipr_id) MMIO8(SCS_BASE + 0xD18 + ipr_id)
#define NVIC_NMI_IRQ -14
#define NVIC_HARD_FAULT_IRQ -13
#define NVIC_MEM_MANAGE_IRQ -12
#define NVIC_BUS_FAULT_IRQ -11
#define NVIC_USAGE_FAULT_IRQ -10
/* irq numbers -6 to -9 are reserved */
#define NVIC_SV_CALL_IRQ -5
#define DEBUG_MONITOR_IRQ -4
/* irq number -3 reserved */
#define NVIC_PENDSV_IRQ -2
#define NVIC_SYSTICK_IRQ -1
// NVIC
#define NVIC_ISER_BASE (NVIC + 0x000)
#define NVIC_ISER0 MMIO32(NVIC + 0x000) // (R/W) Interrupt Set Enable Register
#define NVIC_ISER1 MMIO32(NVIC + 0x004) // (R/W) Interrupt Set Enable Register
#define NVIC_ISER2 MMIO32(NVIC + 0x008) // (R/W) Interrupt Set Enable Register
#define NVIC_ISER3 MMIO32(NVIC + 0x00C) // (R/W) Interrupt Set Enable Register
#define NVIC_ISER4 MMIO32(NVIC + 0x010) // (R/W) Interrupt Set Enable Register
#define NVIC_ISER5 MMIO32(NVIC + 0x014) // (R/W) Interrupt Set Enable Register
#define NVIC_ISER6 MMIO32(NVIC + 0x018) // (R/W) Interrupt Set Enable Register
#define NVIC_ISER7 MMIO32(NVIC + 0x01C) // (R/W) Interrupt Set Enable Register
#define NVIC_ISER8 MMIO32(NVIC + 0x020) // (R/W) Interrupt Set Enable Register
#define NVIC_ICER_BASE (NVIC + 0x080)
#define NVIC_ICER0 MMIO32(NVIC + 0x080) // (R/W) Interrupt Clear Enable Register
#define NVIC_ICER1 MMIO32(NVIC + 0x084) // (R/W) Interrupt Clear Enable Register
#define NVIC_ICER2 MMIO32(NVIC + 0x088) // (R/W) Interrupt Clear Enable Register
#define NVIC_ICER3 MMIO32(NVIC + 0x08C) // (R/W) Interrupt Clear Enable Register
#define NVIC_ICER4 MMIO32(NVIC + 0x090) // (R/W) Interrupt Clear Enable Register
#define NVIC_ICER5 MMIO32(NVIC + 0x094) // (R/W) Interrupt Clear Enable Register
#define NVIC_ICER6 MMIO32(NVIC + 0x098) // (R/W) Interrupt Clear Enable Register
#define NVIC_ICER7 MMIO32(NVIC + 0x09C) // (R/W) Interrupt Clear Enable Register
#define NVIC_ISPR_BASE (NVIC + 0x100)
#define NVIC_ISPR0 MMIO32(NVIC + 0x100) // (R/W) Interrupt Set Pending Register
#define NVIC_ISPR1 MMIO32(NVIC + 0x104) // (R/W) Interrupt Set Pending Register
#define NVIC_ISPR2 MMIO32(NVIC + 0x108) // (R/W) Interrupt Set Pending Register
#define NVIC_ISPR3 MMIO32(NVIC + 0x10C) // (R/W) Interrupt Set Pending Register
#define NVIC_ISPR4 MMIO32(NVIC + 0x110) // (R/W) Interrupt Set Pending Register
#define NVIC_ISPR5 MMIO32(NVIC + 0x114) // (R/W) Interrupt Set Pending Register
#define NVIC_ISPR6 MMIO32(NVIC + 0x118) // (R/W) Interrupt Set Pending Register
#define NVIC_ISPR7 MMIO32(NVIC + 0x11C) // (R/W) Interrupt Set Pending Register
#define NVIC_ICPR_BASE (NVIC + 0x180)
#define NVIC_ICPR0 MMIO32(NVIC + 0x180) // (R/W) Interrupt Clear Pending Register
#define NVIC_ICPR1 MMIO32(NVIC + 0x184) // (R/W) Interrupt Clear Pending Register
#define NVIC_ICPR2 MMIO32(NVIC + 0x188) // (R/W) Interrupt Clear Pending Register
#define NVIC_ICPR3 MMIO32(NVIC + 0x18C) // (R/W) Interrupt Clear Pending Register
#define NVIC_ICPR4 MMIO32(NVIC + 0x190) // (R/W) Interrupt Clear Pending Register
#define NVIC_ICPR5 MMIO32(NVIC + 0x194) // (R/W) Interrupt Clear Pending Register
#define NVIC_ICPR6 MMIO32(NVIC + 0x198) // (R/W) Interrupt Clear Pending Register
#define NVIC_ICPR7 MMIO32(NVIC + 0x19C) // (R/W) Interrupt Clear Pending Register
#define NVIC_IABR_BASE (NVIC + 0x200)
#define NVIC_IABR0 MMIO32(NVIC + 0x200) // (R/W) Interrupt Active bit Register
#define NVIC_IABR1 MMIO32(NVIC + 0x204) // (R/W) Interrupt Active bit Register
#define NVIC_IABR2 MMIO32(NVIC + 0x208) // (R/W) Interrupt Active bit Register
#define NVIC_IABR3 MMIO32(NVIC + 0x20C) // (R/W) Interrupt Active bit Register
#define NVIC_IABR4 MMIO32(NVIC + 0x210) // (R/W) Interrupt Active bit Register
#define NVIC_IABR5 MMIO32(NVIC + 0x214) // (R/W) Interrupt Active bit Register
#define NVIC_IABR6 MMIO32(NVIC + 0x218) // (R/W) Interrupt Active bit Register
#define NVIC_IABR7 MMIO32(NVIC + 0x21C) // (R/W) Interrupt Active bit Register
#define NVIC_IPR_BASE (NVIC + 0x300) // (R/W) Interrupt Priority Register (8Bit wide) +240
#define NVIC_IPR(n) MMIO8(NVIC_IPR_BASE + (n))
#define NVIC_ISER(n) MMIO32(NVIC_ISER_BASE + (n*4))
#define NVIC_ICER(n) MMIO32(NVIC_ICER_BASE + (n*4))
#define NVIC_ISPR(n) MMIO32(NVIC_ISPR_BASE + (n*4))
#define NVIC_ICPR(n) MMIO32(NVIC_ICPR_BASE + (n*4))
#define NVIC_IABR(n) MMIO32(NVIC_IABR_BASE + (n*4))
#define NVIC_STIR MMIO32(NVIC + 0xE00) // ( /W) Software Trigger Interrupt Register
//****************************************************************************
//*
//* BIT MASKS AND DEFINITIONS
//*
//****************************************************************************
//***************** Bit definition for NVIC_ISER register ******************
#define NVIC_ISER_SETENA 0xFFFFFFFF // Interrupt set enable bits
#define NVIC_ISER_SETENA_0 0x00000001 // bit 0
#define NVIC_ISER_SETENA_1 0x00000002 // bit 1
#define NVIC_ISER_SETENA_2 0x00000004 // bit 2
#define NVIC_ISER_SETENA_3 0x00000008 // bit 3
#define NVIC_ISER_SETENA_4 0x00000010 // bit 4
#define NVIC_ISER_SETENA_5 0x00000020 // bit 5
#define NVIC_ISER_SETENA_6 0x00000040 // bit 6
#define NVIC_ISER_SETENA_7 0x00000080 // bit 7
#define NVIC_ISER_SETENA_8 0x00000100 // bit 8
#define NVIC_ISER_SETENA_9 0x00000200 // bit 9
#define NVIC_ISER_SETENA_10 0x00000400 // bit 10
#define NVIC_ISER_SETENA_11 0x00000800 // bit 11
#define NVIC_ISER_SETENA_12 0x00001000 // bit 12
#define NVIC_ISER_SETENA_13 0x00002000 // bit 13
#define NVIC_ISER_SETENA_14 0x00004000 // bit 14
#define NVIC_ISER_SETENA_15 0x00008000 // bit 15
#define NVIC_ISER_SETENA_16 0x00010000 // bit 16
#define NVIC_ISER_SETENA_17 0x00020000 // bit 17
#define NVIC_ISER_SETENA_18 0x00040000 // bit 18
#define NVIC_ISER_SETENA_19 0x00080000 // bit 19
#define NVIC_ISER_SETENA_20 0x00100000 // bit 20
#define NVIC_ISER_SETENA_21 0x00200000 // bit 21
#define NVIC_ISER_SETENA_22 0x00400000 // bit 22
#define NVIC_ISER_SETENA_23 0x00800000 // bit 23
#define NVIC_ISER_SETENA_24 0x01000000 // bit 24
#define NVIC_ISER_SETENA_25 0x02000000 // bit 25
#define NVIC_ISER_SETENA_26 0x04000000 // bit 26
#define NVIC_ISER_SETENA_27 0x08000000 // bit 27
#define NVIC_ISER_SETENA_28 0x10000000 // bit 28
#define NVIC_ISER_SETENA_29 0x20000000 // bit 29
#define NVIC_ISER_SETENA_30 0x40000000 // bit 30
#define NVIC_ISER_SETENA_31 0x80000000 // bit 31
//***************** Bit definition for NVIC_ICER register ******************
#define NVIC_ICER_CLRENA 0xFFFFFFFF // Interrupt clear-enable bits
#define NVIC_ICER_CLRENA_0 0x00000001 // bit 0
#define NVIC_ICER_CLRENA_1 0x00000002 // bit 1
#define NVIC_ICER_CLRENA_2 0x00000004 // bit 2
#define NVIC_ICER_CLRENA_3 0x00000008 // bit 3
#define NVIC_ICER_CLRENA_4 0x00000010 // bit 4
#define NVIC_ICER_CLRENA_5 0x00000020 // bit 5
#define NVIC_ICER_CLRENA_6 0x00000040 // bit 6
#define NVIC_ICER_CLRENA_7 0x00000080 // bit 7
#define NVIC_ICER_CLRENA_8 0x00000100 // bit 8
#define NVIC_ICER_CLRENA_9 0x00000200 // bit 9
#define NVIC_ICER_CLRENA_10 0x00000400 // bit 10
#define NVIC_ICER_CLRENA_11 0x00000800 // bit 11
#define NVIC_ICER_CLRENA_12 0x00001000 // bit 12
#define NVIC_ICER_CLRENA_13 0x00002000 // bit 13
#define NVIC_ICER_CLRENA_14 0x00004000 // bit 14
#define NVIC_ICER_CLRENA_15 0x00008000 // bit 15
#define NVIC_ICER_CLRENA_16 0x00010000 // bit 16
#define NVIC_ICER_CLRENA_17 0x00020000 // bit 17
#define NVIC_ICER_CLRENA_18 0x00040000 // bit 18
#define NVIC_ICER_CLRENA_19 0x00080000 // bit 19
#define NVIC_ICER_CLRENA_20 0x00100000 // bit 20
#define NVIC_ICER_CLRENA_21 0x00200000 // bit 21
#define NVIC_ICER_CLRENA_22 0x00400000 // bit 22
#define NVIC_ICER_CLRENA_23 0x00800000 // bit 23
#define NVIC_ICER_CLRENA_24 0x01000000 // bit 24
#define NVIC_ICER_CLRENA_25 0x02000000 // bit 25
#define NVIC_ICER_CLRENA_26 0x04000000 // bit 26
#define NVIC_ICER_CLRENA_27 0x08000000 // bit 27
#define NVIC_ICER_CLRENA_28 0x10000000 // bit 28
#define NVIC_ICER_CLRENA_29 0x20000000 // bit 29
#define NVIC_ICER_CLRENA_30 0x40000000 // bit 30
#define NVIC_ICER_CLRENA_31 0x80000000 // bit 31
//***************** Bit definition for NVIC_ISPR register ******************
#define NVIC_ISPR_SETPEND 0xFFFFFFFF // Interrupt set-pending bits
#define NVIC_ISPR_SETPEND_0 0x00000001 // bit 0
#define NVIC_ISPR_SETPEND_1 0x00000002 // bit 1
#define NVIC_ISPR_SETPEND_2 0x00000004 // bit 2
#define NVIC_ISPR_SETPEND_3 0x00000008 // bit 3
#define NVIC_ISPR_SETPEND_4 0x00000010 // bit 4
#define NVIC_ISPR_SETPEND_5 0x00000020 // bit 5
#define NVIC_ISPR_SETPEND_6 0x00000040 // bit 6
#define NVIC_ISPR_SETPEND_7 0x00000080 // bit 7
#define NVIC_ISPR_SETPEND_8 0x00000100 // bit 8
#define NVIC_ISPR_SETPEND_9 0x00000200 // bit 9
#define NVIC_ISPR_SETPEND_10 0x00000400 // bit 10
#define NVIC_ISPR_SETPEND_11 0x00000800 // bit 11
#define NVIC_ISPR_SETPEND_12 0x00001000 // bit 12
#define NVIC_ISPR_SETPEND_13 0x00002000 // bit 13
#define NVIC_ISPR_SETPEND_14 0x00004000 // bit 14
#define NVIC_ISPR_SETPEND_15 0x00008000 // bit 15
#define NVIC_ISPR_SETPEND_16 0x00010000 // bit 16
#define NVIC_ISPR_SETPEND_17 0x00020000 // bit 17
#define NVIC_ISPR_SETPEND_18 0x00040000 // bit 18
#define NVIC_ISPR_SETPEND_19 0x00080000 // bit 19
#define NVIC_ISPR_SETPEND_20 0x00100000 // bit 20
#define NVIC_ISPR_SETPEND_21 0x00200000 // bit 21
#define NVIC_ISPR_SETPEND_22 0x00400000 // bit 22
#define NVIC_ISPR_SETPEND_23 0x00800000 // bit 23
#define NVIC_ISPR_SETPEND_24 0x01000000 // bit 24
#define NVIC_ISPR_SETPEND_25 0x02000000 // bit 25
#define NVIC_ISPR_SETPEND_26 0x04000000 // bit 26
#define NVIC_ISPR_SETPEND_27 0x08000000 // bit 27
#define NVIC_ISPR_SETPEND_28 0x10000000 // bit 28
#define NVIC_ISPR_SETPEND_29 0x20000000 // bit 29
#define NVIC_ISPR_SETPEND_30 0x40000000 // bit 30
#define NVIC_ISPR_SETPEND_31 0x80000000 // bit 31
//***************** Bit definition for NVIC_ICPR register ******************
#define NVIC_ICPR_CLRPEND 0xFFFFFFFF // Interrupt clear-pending bits
#define NVIC_ICPR_CLRPEND_0 0x00000001 // bit 0
#define NVIC_ICPR_CLRPEND_1 0x00000002 // bit 1
#define NVIC_ICPR_CLRPEND_2 0x00000004 // bit 2
#define NVIC_ICPR_CLRPEND_3 0x00000008 // bit 3
#define NVIC_ICPR_CLRPEND_4 0x00000010 // bit 4
#define NVIC_ICPR_CLRPEND_5 0x00000020 // bit 5
#define NVIC_ICPR_CLRPEND_6 0x00000040 // bit 6
#define NVIC_ICPR_CLRPEND_7 0x00000080 // bit 7
#define NVIC_ICPR_CLRPEND_8 0x00000100 // bit 8
#define NVIC_ICPR_CLRPEND_9 0x00000200 // bit 9
#define NVIC_ICPR_CLRPEND_10 0x00000400 // bit 10
#define NVIC_ICPR_CLRPEND_11 0x00000800 // bit 11
#define NVIC_ICPR_CLRPEND_12 0x00001000 // bit 12
#define NVIC_ICPR_CLRPEND_13 0x00002000 // bit 13
#define NVIC_ICPR_CLRPEND_14 0x00004000 // bit 14
#define NVIC_ICPR_CLRPEND_15 0x00008000 // bit 15
#define NVIC_ICPR_CLRPEND_16 0x00010000 // bit 16
#define NVIC_ICPR_CLRPEND_17 0x00020000 // bit 17
#define NVIC_ICPR_CLRPEND_18 0x00040000 // bit 18
#define NVIC_ICPR_CLRPEND_19 0x00080000 // bit 19
#define NVIC_ICPR_CLRPEND_20 0x00100000 // bit 20
#define NVIC_ICPR_CLRPEND_21 0x00200000 // bit 21
#define NVIC_ICPR_CLRPEND_22 0x00400000 // bit 22
#define NVIC_ICPR_CLRPEND_23 0x00800000 // bit 23
#define NVIC_ICPR_CLRPEND_24 0x01000000 // bit 24
#define NVIC_ICPR_CLRPEND_25 0x02000000 // bit 25
#define NVIC_ICPR_CLRPEND_26 0x04000000 // bit 26
#define NVIC_ICPR_CLRPEND_27 0x08000000 // bit 27
#define NVIC_ICPR_CLRPEND_28 0x10000000 // bit 28
#define NVIC_ICPR_CLRPEND_29 0x20000000 // bit 29
#define NVIC_ICPR_CLRPEND_30 0x40000000 // bit 30
#define NVIC_ICPR_CLRPEND_31 0x80000000 // bit 31
//***************** Bit definition for NVIC_IABR register ******************
#define NVIC_IABR_ACTIVE 0xFFFFFFFF // Interrupt active flags
#define NVIC_IABR_ACTIVE_0 0x00000001 // bit 0
#define NVIC_IABR_ACTIVE_1 0x00000002 // bit 1
#define NVIC_IABR_ACTIVE_2 0x00000004 // bit 2
#define NVIC_IABR_ACTIVE_3 0x00000008 // bit 3
#define NVIC_IABR_ACTIVE_4 0x00000010 // bit 4
#define NVIC_IABR_ACTIVE_5 0x00000020 // bit 5
#define NVIC_IABR_ACTIVE_6 0x00000040 // bit 6
#define NVIC_IABR_ACTIVE_7 0x00000080 // bit 7
#define NVIC_IABR_ACTIVE_8 0x00000100 // bit 8
#define NVIC_IABR_ACTIVE_9 0x00000200 // bit 9
#define NVIC_IABR_ACTIVE_10 0x00000400 // bit 10
#define NVIC_IABR_ACTIVE_11 0x00000800 // bit 11
#define NVIC_IABR_ACTIVE_12 0x00001000 // bit 12
#define NVIC_IABR_ACTIVE_13 0x00002000 // bit 13
#define NVIC_IABR_ACTIVE_14 0x00004000 // bit 14
#define NVIC_IABR_ACTIVE_15 0x00008000 // bit 15
#define NVIC_IABR_ACTIVE_16 0x00010000 // bit 16
#define NVIC_IABR_ACTIVE_17 0x00020000 // bit 17
#define NVIC_IABR_ACTIVE_18 0x00040000 // bit 18
#define NVIC_IABR_ACTIVE_19 0x00080000 // bit 19
#define NVIC_IABR_ACTIVE_20 0x00100000 // bit 20
#define NVIC_IABR_ACTIVE_21 0x00200000 // bit 21
#define NVIC_IABR_ACTIVE_22 0x00400000 // bit 22
#define NVIC_IABR_ACTIVE_23 0x00800000 // bit 23
#define NVIC_IABR_ACTIVE_24 0x01000000 // bit 24
#define NVIC_IABR_ACTIVE_25 0x02000000 // bit 25
#define NVIC_IABR_ACTIVE_26 0x04000000 // bit 26
#define NVIC_IABR_ACTIVE_27 0x08000000 // bit 27
#define NVIC_IABR_ACTIVE_28 0x10000000 // bit 28
#define NVIC_IABR_ACTIVE_29 0x20000000 // bit 29
#define NVIC_IABR_ACTIVE_30 0x40000000 // bit 30
#define NVIC_IABR_ACTIVE_31 0x80000000 // bit 31
//***************** Bit definition for NVIC_PRI0 register ******************
#define NVIC_IPR0_PRI_0 0x000000FF // Priority of interrupt 0
#define NVIC_IPR0_PRI_1 0x0000FF00 // Priority of interrupt 1
#define NVIC_IPR0_PRI_2 0x00FF0000 // Priority of interrupt 2
#define NVIC_IPR0_PRI_3 0xFF000000 // Priority of interrupt 3
//***************** Bit definition for NVIC_PRI1 register ******************
#define NVIC_IPR1_PRI_4 0x000000FF // Priority of interrupt 4
#define NVIC_IPR1_PRI_5 0x0000FF00 // Priority of interrupt 5
#define NVIC_IPR1_PRI_6 0x00FF0000 // Priority of interrupt 6
#define NVIC_IPR1_PRI_7 0xFF000000 // Priority of interrupt 7
//***************** Bit definition for NVIC_PRI2 register ******************
#define NVIC_IPR2_PRI_8 0x000000FF // Priority of interrupt 8
#define NVIC_IPR2_PRI_9 0x0000FF00 // Priority of interrupt 9
#define NVIC_IPR2_PRI_10 0x00FF0000 // Priority of interrupt 10
#define NVIC_IPR2_PRI_11 0xFF000000 // Priority of interrupt 11
//***************** Bit definition for NVIC_PRI3 register ******************
#define NVIC_IPR3_PRI_12 0x000000FF // Priority of interrupt 12
#define NVIC_IPR3_PRI_13 0x0000FF00 // Priority of interrupt 13
#define NVIC_IPR3_PRI_14 0x00FF0000 // Priority of interrupt 14
#define NVIC_IPR3_PRI_15 0xFF000000 // Priority of interrupt 15
//***************** Bit definition for NVIC_PRI4 register ******************
#define NVIC_IPR4_PRI_16 0x000000FF // Priority of interrupt 16
#define NVIC_IPR4_PRI_17 0x0000FF00 // Priority of interrupt 17
#define NVIC_IPR4_PRI_18 0x00FF0000 // Priority of interrupt 18
#define NVIC_IPR4_PRI_19 0xFF000000 // Priority of interrupt 19
//***************** Bit definition for NVIC_PRI5 register ******************
#define NVIC_IPR5_PRI_20 0x000000FF // Priority of interrupt 20
#define NVIC_IPR5_PRI_21 0x0000FF00 // Priority of interrupt 21
#define NVIC_IPR5_PRI_22 0x00FF0000 // Priority of interrupt 22
#define NVIC_IPR5_PRI_23 0xFF000000 // Priority of interrupt 23
//***************** Bit definition for NVIC_PRI6 register ******************
#define NVIC_IPR6_PRI_24 0x000000FF // Priority of interrupt 24
#define NVIC_IPR6_PRI_25 0x0000FF00 // Priority of interrupt 25
#define NVIC_IPR6_PRI_26 0x00FF0000 // Priority of interrupt 26
#define NVIC_IPR6_PRI_27 0xFF000000 // Priority of interrupt 27
//***************** Bit definition for NVIC_PRI7 register ******************
#define NVIC_IPR7_PRI_28 0x000000FF // Priority of interrupt 28
#define NVIC_IPR7_PRI_29 0x0000FF00 // Priority of interrupt 29
#define NVIC_IPR7_PRI_30 0x00FF0000 // Priority of interrupt 30
#define NVIC_IPR7_PRI_31 0xFF000000 // Priority of interrupt 31
//---------- definitions for L100 ---------------
// copied from libopencm3
#define NVIC_WWDG_IRQ 0
#define NVIC_PVD_IRQ 1
#define NVIC_TAMPER_STAMP_IRQ 2
#define NVIC_RTC_WKUP_IRQ 3
#define NVIC_FLASH_IRQ 4
#define NVIC_RCC_IRQ 5
#define NVIC_EXTI0_IRQ 6
#define NVIC_EXTI1_IRQ 7
#define NVIC_EXTI2_IRQ 8
#define NVIC_EXTI3_IRQ 9
#define NVIC_EXTI4_IRQ 10
#define NVIC_DMA1_CHANNEL1_IRQ 11
#define NVIC_DMA1_CHANNEL2_IRQ 12
#define NVIC_DMA1_CHANNEL3_IRQ 13
#define NVIC_DMA1_CHANNEL4_IRQ 14
#define NVIC_DMA1_CHANNEL5_IRQ 15
#define NVIC_DMA1_CHANNEL6_IRQ 16
#define NVIC_DMA1_CHANNEL7_IRQ 17
#define NVIC_ADC1_IRQ 18
#define NVIC_USB_HP_IRQ 19
#define NVIC_USB_LP_IRQ 20
#define NVIC_DAC_IRQ 21
#define NVIC_COMP_IRQ 22
#define NVIC_EXTI9_5_IRQ 23
#define NVIC_LCD_IRQ 24
#define NVIC_TIM9_IRQ 25
#define NVIC_TIM10_IRQ 26
#define NVIC_TIM11_IRQ 27
#define NVIC_TIM2_IRQ 28
#define NVIC_TIM3_IRQ 29
#define NVIC_TIM4_IRQ 30
#define NVIC_I2C1_EV_IRQ 31
#define NVIC_I2C1_ER_IRQ 32
#define NVIC_I2C2_EV_IRQ 33
#define NVIC_I2C2_ER_IRQ 34
#define NVIC_SPI1_IRQ 35
#define NVIC_SPI2_IRQ 36
#define NVIC_USART1_IRQ 37
#define NVIC_USART2_IRQ 38
#define NVIC_USART3_IRQ 39
#define NVIC_EXTI15_10_IRQ 40
#define NVIC_RTC_ALARM_IRQ 41
#define NVIC_USB_FS_WAKEUP_IRQ 42
#define NVIC_TIM6_IRQ 43
#define NVIC_TIM7_IRQ 44
#define NVIC_SDIO_IRQ 45
#define NVIC_TIM5_IRQ 46
#define NVIC_SPI3_IRQ 47
#define NVIC_UART4_IRQ 48
#define NVIC_UART5_IRQ 49
#define NVIC_DMA2_CH1_IRQ 50
#define NVIC_DMA2_CH2_IRQ 51
#define NVIC_DMA2_CH3_IRQ 52
#define NVIC_DMA2_CH4_IRQ 53
#define NVIC_DMA2_CH5_IRQ 54
#define NVIC_AES_IRQ 55
#define NVIC_COMP_ACQ_IRQ 56
#define NVIC_IRQ_COUNT 57