| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778 | { System register definitions and utility code for Cortex-M0 Created by Jeppe Johansen 2012 - [email protected] Modified for M0 by Michael Ring 2013 - [email protected]}unit cortexm0;interface{$PACKRECORDS 2}const SCS_BASE   = $E000E000; SysTick_BASE = SCS_BASE+$0010; NVIC_BASE = SCS_BASE+$0100; SCB_BASE = SCS_BASE+$0D00; DWT_BASE   = $E0001000; FP_BASE    = $E0002000; ITM_BASE   = $E0000000; TPIU_BASE  = $E0040000; ETM_BASE   = $E0041000;type TNVICRegisters = record   ISER : dword;   RESERVED0 : array[0..30] of dword;   ICER : dword;   RSERVED1 : array[0..30] of dword;   ISPR : dword;   RESERVED2 : array[0..30] of dword;   ICPR : dword;   RESERVED3 : array[0..30] of dword;   RESERVED4 : array[0..63] of dword;   IPR : array[0..7] of dword; end; TSCBRegisters = record  CPUID,                            {!< CPU ID Base Register                                     }  ICSR,                             {!< Interrupt Control State Register                         }  RESERVED0,  AIRCR,                            {!< Application Interrupt / Reset Control Register           }  SCR,                              {!< System Control Register                                  }  CCR: dword;                       {!< Configuration Control Register                           }  RESERVED1 : dword;  SHP: array[0..1] of dword;        {!< System Handlers Priority Registers (4-7, 8-11, 12-15)    } end; TSysTickRegisters = record  Ctrl,  Load,  Val,  Calib: dword; end; TCoreDebugRegisters = record  DHCSR,  DCRSR,  DCRDR,  DEMCR: longword; end;var // System Control InterruptControlType: longword     absolute (SCS_BASE+$0004); SCB: TSCBRegisters                 absolute (SCS_BASE+$0D00); SysTick: TSysTickRegisters         absolute (SCS_BASE+$0010); NVIC: TNVICRegisters               absolute (SCS_BASE+$0100); SoftwareTriggerInterrupt: longword absolute (SCS_BASE+$0000); // Core Debug CoreDebug: TCoreDebugRegisters     absolute (SCS_BASE+$0DF0);implementationend.
 |