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);
- implementation
- end.
|