Updates to Zig 0.11.0 (#22)

Co-authored-by: Felix "xq" Queißner <git@random-projects.net>
wch-ch32v003
Felix Queißner 1 year ago committed by GitHub
parent 6e68f32b4b
commit 80e5e69420
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23

@ -1,6 +0,0 @@
steps:
- group: Build and Test
steps:
- command: zig build
- label: 🔨 Test
command: renode-test test/nrf52840.robot

@ -0,0 +1 @@
github: MasterQ32

@ -0,0 +1,19 @@
name: Build
on:
push:
jobs:
build:
runs-on: ${{ matrix.os }}
strategy:
matrix:
os: [ubuntu-latest, windows-latest, macos-latest]
optimize: [Debug, ReleaseSmall, ReleaseFast, ReleaseSafe]
steps:
- uses: actions/checkout@v2
- uses: goto-bus-stop/setup-zig@v2.1.1
with:
version: 0.11.0
- name: Build
run: zig build install "-Doptimize=${{matrix.optimize}}"

@ -1,14 +1,11 @@
const std = @import("std"); const std = @import("std");
const microzig = @import("deps/microzig/build.zig"); const microzig = @import("microzig");
pub const chips = @import("src/chips.zig"); pub const chips = @import("src/chips.zig");
pub fn build(b: *std.build.Builder) void { pub fn build(b: *std.build.Builder) void {
const optimize = b.standardOptimizeOption(.{}); const optimize = b.standardOptimizeOption(.{});
inline for (@typeInfo(chips).Struct.decls) |decl| { inline for (@typeInfo(chips).Struct.decls) |decl| {
if (!decl.is_pub)
continue;
const exe = microzig.addEmbeddedExecutable(b, .{ const exe = microzig.addEmbeddedExecutable(b, .{
.name = decl.name ++ ".minimal", .name = decl.name ++ ".minimal",
.source_file = .{ .source_file = .{

@ -0,0 +1,10 @@
.{
.name = "microzig-nordic-nrf5x",
.version = "0.1.0",
.dependencies = .{
.microzig = .{
.url = "https://github.com/ZigEmbeddedGroup/microzig/archive/0b3be0a4cc7e6d45714cb09961efc771e364723c.tar.gz",
.hash = "1220ada6d01db7b3d0aa8642df89b1af9ee71b681438249e9a7efb2275fc4cf32152",
},
},
}

1
deps/microzig vendored

@ -1 +0,0 @@
Subproject commit 9392fe0f7bddde26155c181ab80b70097b49c791

@ -1,5 +1,5 @@
const std = @import("std"); const std = @import("std");
const micro = @import("../deps/microzig/build.zig"); const micro = @import("microzig");
const Chip = micro.Chip; const Chip = micro.Chip;
const MemoryRegion = micro.MemoryRegion; const MemoryRegion = micro.MemoryRegion;
@ -9,19 +9,17 @@ fn root_dir() []const u8 {
pub const nrf52840 = Chip{ pub const nrf52840 = Chip{
.name = "nrf52840", .name = "nrf52840",
.source = .{ .source = .{ .path = root_dir() ++ "/chips/nrf52840.zig" },
.path = root_dir() ++ "/chips/nrf52840.zig", .json_register_schema = .{ .path = root_dir() ++ "/chips.nrf52840.json" },
},
.json_register_schema = .{
.path = root_dir() ++ "/chips.nrf52840.json",
},
.cpu = micro.cpus.cortex_m4, .cpu = micro.cpus.cortex_m4,
.memory_regions = &.{ .memory_regions = &.{
MemoryRegion{ .offset = 0x00000000, .length = 0x100000, .kind = .flash }, MemoryRegion{ .offset = 0x00000000, .length = 0x100000, .kind = .flash },
MemoryRegion{ .offset = 0x20000000, .length = 0x40000, .kind = .ram }, MemoryRegion{ .offset = 0x20000000, .length = 0x40000, .kind = .ram },
// EXTFLASH // EXTFLASH
MemoryRegion{ .offset = 0x12000000, .length = 0x8000000, .kind = .flash }, MemoryRegion{ .offset = 0x12000000, .length = 0x8000000, .kind = .flash },
// CODE_RAM // CODE_RAM
MemoryRegion{ .offset = 0x800000, .length = 0x40000, .kind = .ram }, MemoryRegion{ .offset = 0x800000, .length = 0x40000, .kind = .ram },
}, },
@ -29,13 +27,10 @@ pub const nrf52840 = Chip{
pub const nrf52832 = Chip{ pub const nrf52832 = Chip{
.name = "nrf52", .name = "nrf52",
.source = .{ .source = .{ .path = root_dir() ++ "/chips/nrf52.zig" },
.path = root_dir() ++ "/chips/nrf52.zig", .json_register_schema = .{ .path = root_dir() ++ "/chips.nrf52.json" },
},
.json_register_schema = .{
.path = root_dir() ++ "/chips.nrf52.json",
},
.cpu = micro.cpus.cortex_m4, .cpu = micro.cpus.cortex_m4,
.memory_regions = &.{ .memory_regions = &.{
MemoryRegion{ .offset = 0x00000000, .length = 0x80000, .kind = .flash }, MemoryRegion{ .offset = 0x00000000, .length = 0x80000, .kind = .flash },
MemoryRegion{ .offset = 0x20000000, .length = 0x10000, .kind = .ram }, MemoryRegion{ .offset = 0x20000000, .length = 0x10000, .kind = .ram },

@ -104,137 +104,137 @@ pub const devices = struct {
pub const peripherals = struct { pub const peripherals = struct {
/// Factory Information Configuration Registers /// Factory Information Configuration Registers
pub const FICR = @intToPtr(*volatile types.peripherals.FICR, 0x10000000); pub const FICR = @as(*volatile types.peripherals.FICR, @ptrFromInt(0x10000000));
/// User Information Configuration Registers /// User Information Configuration Registers
pub const UICR = @intToPtr(*volatile types.peripherals.UICR, 0x10001000); pub const UICR = @as(*volatile types.peripherals.UICR, @ptrFromInt(0x10001000));
/// Block Protect /// Block Protect
pub const BPROT = @intToPtr(*volatile types.peripherals.BPROT, 0x40000000); pub const BPROT = @as(*volatile types.peripherals.BPROT, @ptrFromInt(0x40000000));
/// Power control /// Power control
pub const POWER = @intToPtr(*volatile types.peripherals.POWER, 0x40000000); pub const POWER = @as(*volatile types.peripherals.POWER, @ptrFromInt(0x40000000));
/// Clock control /// Clock control
pub const CLOCK = @intToPtr(*volatile types.peripherals.CLOCK, 0x40000000); pub const CLOCK = @as(*volatile types.peripherals.CLOCK, @ptrFromInt(0x40000000));
/// 2.4 GHz Radio /// 2.4 GHz Radio
pub const RADIO = @intToPtr(*volatile types.peripherals.RADIO, 0x40001000); pub const RADIO = @as(*volatile types.peripherals.RADIO, @ptrFromInt(0x40001000));
/// UART with EasyDMA /// UART with EasyDMA
pub const UARTE0 = @intToPtr(*volatile types.peripherals.UARTE0, 0x40002000); pub const UARTE0 = @as(*volatile types.peripherals.UARTE0, @ptrFromInt(0x40002000));
/// Universal Asynchronous Receiver/Transmitter /// Universal Asynchronous Receiver/Transmitter
pub const UART0 = @intToPtr(*volatile types.peripherals.UART0, 0x40002000); pub const UART0 = @as(*volatile types.peripherals.UART0, @ptrFromInt(0x40002000));
/// Serial Peripheral Interface Master with EasyDMA 0 /// Serial Peripheral Interface Master with EasyDMA 0
pub const SPIM0 = @intToPtr(*volatile types.peripherals.SPIM0, 0x40003000); pub const SPIM0 = @as(*volatile types.peripherals.SPIM0, @ptrFromInt(0x40003000));
/// SPI Slave 0 /// SPI Slave 0
pub const SPIS0 = @intToPtr(*volatile types.peripherals.SPIS0, 0x40003000); pub const SPIS0 = @as(*volatile types.peripherals.SPIS0, @ptrFromInt(0x40003000));
/// I2C compatible Two-Wire Master Interface with EasyDMA 0 /// I2C compatible Two-Wire Master Interface with EasyDMA 0
pub const TWIM0 = @intToPtr(*volatile types.peripherals.TWIM0, 0x40003000); pub const TWIM0 = @as(*volatile types.peripherals.TWIM0, @ptrFromInt(0x40003000));
/// I2C compatible Two-Wire Slave Interface with EasyDMA 0 /// I2C compatible Two-Wire Slave Interface with EasyDMA 0
pub const TWIS0 = @intToPtr(*volatile types.peripherals.TWIS0, 0x40003000); pub const TWIS0 = @as(*volatile types.peripherals.TWIS0, @ptrFromInt(0x40003000));
/// Serial Peripheral Interface 0 /// Serial Peripheral Interface 0
pub const SPI0 = @intToPtr(*volatile types.peripherals.SPI0, 0x40003000); pub const SPI0 = @as(*volatile types.peripherals.SPI0, @ptrFromInt(0x40003000));
/// I2C compatible Two-Wire Interface 0 /// I2C compatible Two-Wire Interface 0
pub const TWI0 = @intToPtr(*volatile types.peripherals.TWI0, 0x40003000); pub const TWI0 = @as(*volatile types.peripherals.TWI0, @ptrFromInt(0x40003000));
/// Serial Peripheral Interface Master with EasyDMA 1 /// Serial Peripheral Interface Master with EasyDMA 1
pub const SPIM1 = @intToPtr(*volatile types.peripherals.SPIM0, 0x40004000); pub const SPIM1 = @as(*volatile types.peripherals.SPIM0, @ptrFromInt(0x40004000));
/// SPI Slave 1 /// SPI Slave 1
pub const SPIS1 = @intToPtr(*volatile types.peripherals.SPIS0, 0x40004000); pub const SPIS1 = @as(*volatile types.peripherals.SPIS0, @ptrFromInt(0x40004000));
/// I2C compatible Two-Wire Master Interface with EasyDMA 1 /// I2C compatible Two-Wire Master Interface with EasyDMA 1
pub const TWIM1 = @intToPtr(*volatile types.peripherals.TWIM0, 0x40004000); pub const TWIM1 = @as(*volatile types.peripherals.TWIM0, @ptrFromInt(0x40004000));
/// I2C compatible Two-Wire Slave Interface with EasyDMA 1 /// I2C compatible Two-Wire Slave Interface with EasyDMA 1
pub const TWIS1 = @intToPtr(*volatile types.peripherals.TWIS0, 0x40004000); pub const TWIS1 = @as(*volatile types.peripherals.TWIS0, @ptrFromInt(0x40004000));
/// Serial Peripheral Interface 1 /// Serial Peripheral Interface 1
pub const SPI1 = @intToPtr(*volatile types.peripherals.SPI0, 0x40004000); pub const SPI1 = @as(*volatile types.peripherals.SPI0, @ptrFromInt(0x40004000));
/// I2C compatible Two-Wire Interface 1 /// I2C compatible Two-Wire Interface 1
pub const TWI1 = @intToPtr(*volatile types.peripherals.TWI0, 0x40004000); pub const TWI1 = @as(*volatile types.peripherals.TWI0, @ptrFromInt(0x40004000));
/// NFC-A compatible radio /// NFC-A compatible radio
pub const NFCT = @intToPtr(*volatile types.peripherals.NFCT, 0x40005000); pub const NFCT = @as(*volatile types.peripherals.NFCT, @ptrFromInt(0x40005000));
/// GPIO Tasks and Events /// GPIO Tasks and Events
pub const GPIOTE = @intToPtr(*volatile types.peripherals.GPIOTE, 0x40006000); pub const GPIOTE = @as(*volatile types.peripherals.GPIOTE, @ptrFromInt(0x40006000));
/// Analog to Digital Converter /// Analog to Digital Converter
pub const SAADC = @intToPtr(*volatile types.peripherals.SAADC, 0x40007000); pub const SAADC = @as(*volatile types.peripherals.SAADC, @ptrFromInt(0x40007000));
/// Timer/Counter 0 /// Timer/Counter 0
pub const TIMER0 = @intToPtr(*volatile types.peripherals.TIMER0, 0x40008000); pub const TIMER0 = @as(*volatile types.peripherals.TIMER0, @ptrFromInt(0x40008000));
/// Timer/Counter 1 /// Timer/Counter 1
pub const TIMER1 = @intToPtr(*volatile types.peripherals.TIMER0, 0x40009000); pub const TIMER1 = @as(*volatile types.peripherals.TIMER0, @ptrFromInt(0x40009000));
/// Timer/Counter 2 /// Timer/Counter 2
pub const TIMER2 = @intToPtr(*volatile types.peripherals.TIMER0, 0x4000a000); pub const TIMER2 = @as(*volatile types.peripherals.TIMER0, @ptrFromInt(0x4000a000));
/// Real time counter 0 /// Real time counter 0
pub const RTC0 = @intToPtr(*volatile types.peripherals.RTC0, 0x4000b000); pub const RTC0 = @as(*volatile types.peripherals.RTC0, @ptrFromInt(0x4000b000));
/// Temperature Sensor /// Temperature Sensor
pub const TEMP = @intToPtr(*volatile types.peripherals.TEMP, 0x4000c000); pub const TEMP = @as(*volatile types.peripherals.TEMP, @ptrFromInt(0x4000c000));
/// Random Number Generator /// Random Number Generator
pub const RNG = @intToPtr(*volatile types.peripherals.RNG, 0x4000d000); pub const RNG = @as(*volatile types.peripherals.RNG, @ptrFromInt(0x4000d000));
/// AES ECB Mode Encryption /// AES ECB Mode Encryption
pub const ECB = @intToPtr(*volatile types.peripherals.ECB, 0x4000e000); pub const ECB = @as(*volatile types.peripherals.ECB, @ptrFromInt(0x4000e000));
/// AES CCM Mode Encryption /// AES CCM Mode Encryption
pub const CCM = @intToPtr(*volatile types.peripherals.CCM, 0x4000f000); pub const CCM = @as(*volatile types.peripherals.CCM, @ptrFromInt(0x4000f000));
/// Accelerated Address Resolver /// Accelerated Address Resolver
pub const AAR = @intToPtr(*volatile types.peripherals.AAR, 0x4000f000); pub const AAR = @as(*volatile types.peripherals.AAR, @ptrFromInt(0x4000f000));
/// Watchdog Timer /// Watchdog Timer
pub const WDT = @intToPtr(*volatile types.peripherals.WDT, 0x40010000); pub const WDT = @as(*volatile types.peripherals.WDT, @ptrFromInt(0x40010000));
/// Real time counter 1 /// Real time counter 1
pub const RTC1 = @intToPtr(*volatile types.peripherals.RTC0, 0x40011000); pub const RTC1 = @as(*volatile types.peripherals.RTC0, @ptrFromInt(0x40011000));
/// Quadrature Decoder /// Quadrature Decoder
pub const QDEC = @intToPtr(*volatile types.peripherals.QDEC, 0x40012000); pub const QDEC = @as(*volatile types.peripherals.QDEC, @ptrFromInt(0x40012000));
/// Comparator /// Comparator
pub const COMP = @intToPtr(*volatile types.peripherals.COMP, 0x40013000); pub const COMP = @as(*volatile types.peripherals.COMP, @ptrFromInt(0x40013000));
/// Low Power Comparator /// Low Power Comparator
pub const LPCOMP = @intToPtr(*volatile types.peripherals.LPCOMP, 0x40013000); pub const LPCOMP = @as(*volatile types.peripherals.LPCOMP, @ptrFromInt(0x40013000));
/// Software interrupt 0 /// Software interrupt 0
pub const SWI0 = @intToPtr(*volatile types.peripherals.SWI0, 0x40014000); pub const SWI0 = @as(*volatile types.peripherals.SWI0, @ptrFromInt(0x40014000));
/// Event Generator Unit 0 /// Event Generator Unit 0
pub const EGU0 = @intToPtr(*volatile types.peripherals.EGU0, 0x40014000); pub const EGU0 = @as(*volatile types.peripherals.EGU0, @ptrFromInt(0x40014000));
/// Software interrupt 1 /// Software interrupt 1
pub const SWI1 = @intToPtr(*volatile types.peripherals.SWI0, 0x40015000); pub const SWI1 = @as(*volatile types.peripherals.SWI0, @ptrFromInt(0x40015000));
/// Event Generator Unit 1 /// Event Generator Unit 1
pub const EGU1 = @intToPtr(*volatile types.peripherals.EGU0, 0x40015000); pub const EGU1 = @as(*volatile types.peripherals.EGU0, @ptrFromInt(0x40015000));
/// Software interrupt 2 /// Software interrupt 2
pub const SWI2 = @intToPtr(*volatile types.peripherals.SWI0, 0x40016000); pub const SWI2 = @as(*volatile types.peripherals.SWI0, @ptrFromInt(0x40016000));
/// Event Generator Unit 2 /// Event Generator Unit 2
pub const EGU2 = @intToPtr(*volatile types.peripherals.EGU0, 0x40016000); pub const EGU2 = @as(*volatile types.peripherals.EGU0, @ptrFromInt(0x40016000));
/// Software interrupt 3 /// Software interrupt 3
pub const SWI3 = @intToPtr(*volatile types.peripherals.SWI0, 0x40017000); pub const SWI3 = @as(*volatile types.peripherals.SWI0, @ptrFromInt(0x40017000));
/// Event Generator Unit 3 /// Event Generator Unit 3
pub const EGU3 = @intToPtr(*volatile types.peripherals.EGU0, 0x40017000); pub const EGU3 = @as(*volatile types.peripherals.EGU0, @ptrFromInt(0x40017000));
/// Software interrupt 4 /// Software interrupt 4
pub const SWI4 = @intToPtr(*volatile types.peripherals.SWI0, 0x40018000); pub const SWI4 = @as(*volatile types.peripherals.SWI0, @ptrFromInt(0x40018000));
/// Event Generator Unit 4 /// Event Generator Unit 4
pub const EGU4 = @intToPtr(*volatile types.peripherals.EGU0, 0x40018000); pub const EGU4 = @as(*volatile types.peripherals.EGU0, @ptrFromInt(0x40018000));
/// Software interrupt 5 /// Software interrupt 5
pub const SWI5 = @intToPtr(*volatile types.peripherals.SWI0, 0x40019000); pub const SWI5 = @as(*volatile types.peripherals.SWI0, @ptrFromInt(0x40019000));
/// Event Generator Unit 5 /// Event Generator Unit 5
pub const EGU5 = @intToPtr(*volatile types.peripherals.EGU0, 0x40019000); pub const EGU5 = @as(*volatile types.peripherals.EGU0, @ptrFromInt(0x40019000));
/// Timer/Counter 3 /// Timer/Counter 3
pub const TIMER3 = @intToPtr(*volatile types.peripherals.TIMER0, 0x4001a000); pub const TIMER3 = @as(*volatile types.peripherals.TIMER0, @ptrFromInt(0x4001a000));
/// Timer/Counter 4 /// Timer/Counter 4
pub const TIMER4 = @intToPtr(*volatile types.peripherals.TIMER0, 0x4001b000); pub const TIMER4 = @as(*volatile types.peripherals.TIMER0, @ptrFromInt(0x4001b000));
/// Pulse Width Modulation Unit 0 /// Pulse Width Modulation Unit 0
pub const PWM0 = @intToPtr(*volatile types.peripherals.PWM0, 0x4001c000); pub const PWM0 = @as(*volatile types.peripherals.PWM0, @ptrFromInt(0x4001c000));
/// Pulse Density Modulation (Digital Microphone) Interface /// Pulse Density Modulation (Digital Microphone) Interface
pub const PDM = @intToPtr(*volatile types.peripherals.PDM, 0x4001d000); pub const PDM = @as(*volatile types.peripherals.PDM, @ptrFromInt(0x4001d000));
/// Non Volatile Memory Controller /// Non Volatile Memory Controller
pub const NVMC = @intToPtr(*volatile types.peripherals.NVMC, 0x4001e000); pub const NVMC = @as(*volatile types.peripherals.NVMC, @ptrFromInt(0x4001e000));
/// Programmable Peripheral Interconnect /// Programmable Peripheral Interconnect
pub const PPI = @intToPtr(*volatile types.peripherals.PPI, 0x4001f000); pub const PPI = @as(*volatile types.peripherals.PPI, @ptrFromInt(0x4001f000));
/// Memory Watch Unit /// Memory Watch Unit
pub const MWU = @intToPtr(*volatile types.peripherals.MWU, 0x40020000); pub const MWU = @as(*volatile types.peripherals.MWU, @ptrFromInt(0x40020000));
/// Pulse Width Modulation Unit 1 /// Pulse Width Modulation Unit 1
pub const PWM1 = @intToPtr(*volatile types.peripherals.PWM0, 0x40021000); pub const PWM1 = @as(*volatile types.peripherals.PWM0, @ptrFromInt(0x40021000));
/// Pulse Width Modulation Unit 2 /// Pulse Width Modulation Unit 2
pub const PWM2 = @intToPtr(*volatile types.peripherals.PWM0, 0x40022000); pub const PWM2 = @as(*volatile types.peripherals.PWM0, @ptrFromInt(0x40022000));
/// Serial Peripheral Interface Master with EasyDMA 2 /// Serial Peripheral Interface Master with EasyDMA 2
pub const SPIM2 = @intToPtr(*volatile types.peripherals.SPIM0, 0x40023000); pub const SPIM2 = @as(*volatile types.peripherals.SPIM0, @ptrFromInt(0x40023000));
/// SPI Slave 2 /// SPI Slave 2
pub const SPIS2 = @intToPtr(*volatile types.peripherals.SPIS0, 0x40023000); pub const SPIS2 = @as(*volatile types.peripherals.SPIS0, @ptrFromInt(0x40023000));
/// Serial Peripheral Interface 2 /// Serial Peripheral Interface 2
pub const SPI2 = @intToPtr(*volatile types.peripherals.SPI0, 0x40023000); pub const SPI2 = @as(*volatile types.peripherals.SPI0, @ptrFromInt(0x40023000));
/// Real time counter 2 /// Real time counter 2
pub const RTC2 = @intToPtr(*volatile types.peripherals.RTC0, 0x40024000); pub const RTC2 = @as(*volatile types.peripherals.RTC0, @ptrFromInt(0x40024000));
/// Inter-IC Sound /// Inter-IC Sound
pub const I2S = @intToPtr(*volatile types.peripherals.I2S, 0x40025000); pub const I2S = @as(*volatile types.peripherals.I2S, @ptrFromInt(0x40025000));
/// FPU /// FPU
pub const FPU = @intToPtr(*volatile types.peripherals.FPU, 0x40026000); pub const FPU = @as(*volatile types.peripherals.FPU, @ptrFromInt(0x40026000));
/// GPIO Port 1 /// GPIO Port 1
pub const P0 = @intToPtr(*volatile types.peripherals.P0, 0x50000000); pub const P0 = @as(*volatile types.peripherals.P0, @ptrFromInt(0x50000000));
/// System Tick Timer /// System Tick Timer
pub const SysTick = @intToPtr(*volatile types.peripherals.SCS.SysTick, 0xe000e010); pub const SysTick = @as(*volatile types.peripherals.SCS.SysTick, @ptrFromInt(0xe000e010));
}; };
}; };
}; };

@ -112,153 +112,153 @@ pub const devices = struct {
pub const peripherals = struct { pub const peripherals = struct {
/// Factory information configuration registers /// Factory information configuration registers
pub const FICR = @intToPtr(*volatile types.peripherals.FICR, 0x10000000); pub const FICR = @as(*volatile types.peripherals.FICR, @ptrFromInt(0x10000000));
/// User information configuration registers /// User information configuration registers
pub const UICR = @intToPtr(*volatile types.peripherals.UICR, 0x10001000); pub const UICR = @as(*volatile types.peripherals.UICR, @ptrFromInt(0x10001000));
/// Clock control /// Clock control
pub const CLOCK = @intToPtr(*volatile types.peripherals.CLOCK, 0x40000000); pub const CLOCK = @as(*volatile types.peripherals.CLOCK, @ptrFromInt(0x40000000));
/// Power control /// Power control
pub const POWER = @intToPtr(*volatile types.peripherals.POWER, 0x40000000); pub const POWER = @as(*volatile types.peripherals.POWER, @ptrFromInt(0x40000000));
/// 2.4 GHz radio /// 2.4 GHz radio
pub const RADIO = @intToPtr(*volatile types.peripherals.RADIO, 0x40001000); pub const RADIO = @as(*volatile types.peripherals.RADIO, @ptrFromInt(0x40001000));
/// Universal Asynchronous Receiver/Transmitter /// Universal Asynchronous Receiver/Transmitter
pub const UART0 = @intToPtr(*volatile types.peripherals.UART0, 0x40002000); pub const UART0 = @as(*volatile types.peripherals.UART0, @ptrFromInt(0x40002000));
/// UART with EasyDMA 0 /// UART with EasyDMA 0
pub const UARTE0 = @intToPtr(*volatile types.peripherals.UARTE0, 0x40002000); pub const UARTE0 = @as(*volatile types.peripherals.UARTE0, @ptrFromInt(0x40002000));
/// Serial Peripheral Interface 0 /// Serial Peripheral Interface 0
pub const SPI0 = @intToPtr(*volatile types.peripherals.SPI0, 0x40003000); pub const SPI0 = @as(*volatile types.peripherals.SPI0, @ptrFromInt(0x40003000));
/// Serial Peripheral Interface Master with EasyDMA 0 /// Serial Peripheral Interface Master with EasyDMA 0
pub const SPIM0 = @intToPtr(*volatile types.peripherals.SPIM0, 0x40003000); pub const SPIM0 = @as(*volatile types.peripherals.SPIM0, @ptrFromInt(0x40003000));
/// SPI Slave 0 /// SPI Slave 0
pub const SPIS0 = @intToPtr(*volatile types.peripherals.SPIS0, 0x40003000); pub const SPIS0 = @as(*volatile types.peripherals.SPIS0, @ptrFromInt(0x40003000));
/// I2C compatible Two-Wire Interface 0 /// I2C compatible Two-Wire Interface 0
pub const TWI0 = @intToPtr(*volatile types.peripherals.TWI0, 0x40003000); pub const TWI0 = @as(*volatile types.peripherals.TWI0, @ptrFromInt(0x40003000));
/// I2C compatible Two-Wire Master Interface with EasyDMA 0 /// I2C compatible Two-Wire Master Interface with EasyDMA 0
pub const TWIM0 = @intToPtr(*volatile types.peripherals.TWIM0, 0x40003000); pub const TWIM0 = @as(*volatile types.peripherals.TWIM0, @ptrFromInt(0x40003000));
/// I2C compatible Two-Wire Slave Interface with EasyDMA 0 /// I2C compatible Two-Wire Slave Interface with EasyDMA 0
pub const TWIS0 = @intToPtr(*volatile types.peripherals.TWIS0, 0x40003000); pub const TWIS0 = @as(*volatile types.peripherals.TWIS0, @ptrFromInt(0x40003000));
/// Serial Peripheral Interface 1 /// Serial Peripheral Interface 1
pub const SPI1 = @intToPtr(*volatile types.peripherals.SPI0, 0x40004000); pub const SPI1 = @as(*volatile types.peripherals.SPI0, @ptrFromInt(0x40004000));
/// Serial Peripheral Interface Master with EasyDMA 1 /// Serial Peripheral Interface Master with EasyDMA 1
pub const SPIM1 = @intToPtr(*volatile types.peripherals.SPIM0, 0x40004000); pub const SPIM1 = @as(*volatile types.peripherals.SPIM0, @ptrFromInt(0x40004000));
/// SPI Slave 1 /// SPI Slave 1
pub const SPIS1 = @intToPtr(*volatile types.peripherals.SPIS0, 0x40004000); pub const SPIS1 = @as(*volatile types.peripherals.SPIS0, @ptrFromInt(0x40004000));
/// I2C compatible Two-Wire Interface 1 /// I2C compatible Two-Wire Interface 1
pub const TWI1 = @intToPtr(*volatile types.peripherals.TWI0, 0x40004000); pub const TWI1 = @as(*volatile types.peripherals.TWI0, @ptrFromInt(0x40004000));
/// I2C compatible Two-Wire Master Interface with EasyDMA 1 /// I2C compatible Two-Wire Master Interface with EasyDMA 1
pub const TWIM1 = @intToPtr(*volatile types.peripherals.TWIM0, 0x40004000); pub const TWIM1 = @as(*volatile types.peripherals.TWIM0, @ptrFromInt(0x40004000));
/// I2C compatible Two-Wire Slave Interface with EasyDMA 1 /// I2C compatible Two-Wire Slave Interface with EasyDMA 1
pub const TWIS1 = @intToPtr(*volatile types.peripherals.TWIS0, 0x40004000); pub const TWIS1 = @as(*volatile types.peripherals.TWIS0, @ptrFromInt(0x40004000));
/// NFC-A compatible radio /// NFC-A compatible radio
pub const NFCT = @intToPtr(*volatile types.peripherals.NFCT, 0x40005000); pub const NFCT = @as(*volatile types.peripherals.NFCT, @ptrFromInt(0x40005000));
/// GPIO Tasks and Events /// GPIO Tasks and Events
pub const GPIOTE = @intToPtr(*volatile types.peripherals.GPIOTE, 0x40006000); pub const GPIOTE = @as(*volatile types.peripherals.GPIOTE, @ptrFromInt(0x40006000));
/// Successive approximation register (SAR) analog-to-digital converter /// Successive approximation register (SAR) analog-to-digital converter
pub const SAADC = @intToPtr(*volatile types.peripherals.SAADC, 0x40007000); pub const SAADC = @as(*volatile types.peripherals.SAADC, @ptrFromInt(0x40007000));
/// Timer/Counter 0 /// Timer/Counter 0
pub const TIMER0 = @intToPtr(*volatile types.peripherals.TIMER0, 0x40008000); pub const TIMER0 = @as(*volatile types.peripherals.TIMER0, @ptrFromInt(0x40008000));
/// Timer/Counter 1 /// Timer/Counter 1
pub const TIMER1 = @intToPtr(*volatile types.peripherals.TIMER0, 0x40009000); pub const TIMER1 = @as(*volatile types.peripherals.TIMER0, @ptrFromInt(0x40009000));
/// Timer/Counter 2 /// Timer/Counter 2
pub const TIMER2 = @intToPtr(*volatile types.peripherals.TIMER0, 0x4000a000); pub const TIMER2 = @as(*volatile types.peripherals.TIMER0, @ptrFromInt(0x4000a000));
/// Real time counter 0 /// Real time counter 0
pub const RTC0 = @intToPtr(*volatile types.peripherals.RTC0, 0x4000b000); pub const RTC0 = @as(*volatile types.peripherals.RTC0, @ptrFromInt(0x4000b000));
/// Temperature Sensor /// Temperature Sensor
pub const TEMP = @intToPtr(*volatile types.peripherals.TEMP, 0x4000c000); pub const TEMP = @as(*volatile types.peripherals.TEMP, @ptrFromInt(0x4000c000));
/// Random Number Generator /// Random Number Generator
pub const RNG = @intToPtr(*volatile types.peripherals.RNG, 0x4000d000); pub const RNG = @as(*volatile types.peripherals.RNG, @ptrFromInt(0x4000d000));
/// AES ECB Mode Encryption /// AES ECB Mode Encryption
pub const ECB = @intToPtr(*volatile types.peripherals.ECB, 0x4000e000); pub const ECB = @as(*volatile types.peripherals.ECB, @ptrFromInt(0x4000e000));
/// Accelerated Address Resolver /// Accelerated Address Resolver
pub const AAR = @intToPtr(*volatile types.peripherals.AAR, 0x4000f000); pub const AAR = @as(*volatile types.peripherals.AAR, @ptrFromInt(0x4000f000));
/// AES CCM Mode Encryption /// AES CCM Mode Encryption
pub const CCM = @intToPtr(*volatile types.peripherals.CCM, 0x4000f000); pub const CCM = @as(*volatile types.peripherals.CCM, @ptrFromInt(0x4000f000));
/// Watchdog Timer /// Watchdog Timer
pub const WDT = @intToPtr(*volatile types.peripherals.WDT, 0x40010000); pub const WDT = @as(*volatile types.peripherals.WDT, @ptrFromInt(0x40010000));
/// Real time counter 1 /// Real time counter 1
pub const RTC1 = @intToPtr(*volatile types.peripherals.RTC0, 0x40011000); pub const RTC1 = @as(*volatile types.peripherals.RTC0, @ptrFromInt(0x40011000));
/// Quadrature Decoder /// Quadrature Decoder
pub const QDEC = @intToPtr(*volatile types.peripherals.QDEC, 0x40012000); pub const QDEC = @as(*volatile types.peripherals.QDEC, @ptrFromInt(0x40012000));
/// Comparator /// Comparator
pub const COMP = @intToPtr(*volatile types.peripherals.COMP, 0x40013000); pub const COMP = @as(*volatile types.peripherals.COMP, @ptrFromInt(0x40013000));
/// Low Power Comparator /// Low Power Comparator
pub const LPCOMP = @intToPtr(*volatile types.peripherals.LPCOMP, 0x40013000); pub const LPCOMP = @as(*volatile types.peripherals.LPCOMP, @ptrFromInt(0x40013000));
/// Event Generator Unit 0 /// Event Generator Unit 0
pub const EGU0 = @intToPtr(*volatile types.peripherals.EGU0, 0x40014000); pub const EGU0 = @as(*volatile types.peripherals.EGU0, @ptrFromInt(0x40014000));
/// Software interrupt 0 /// Software interrupt 0
pub const SWI0 = @intToPtr(*volatile types.peripherals.SWI0, 0x40014000); pub const SWI0 = @as(*volatile types.peripherals.SWI0, @ptrFromInt(0x40014000));
/// Event Generator Unit 1 /// Event Generator Unit 1
pub const EGU1 = @intToPtr(*volatile types.peripherals.EGU0, 0x40015000); pub const EGU1 = @as(*volatile types.peripherals.EGU0, @ptrFromInt(0x40015000));
/// Software interrupt 1 /// Software interrupt 1
pub const SWI1 = @intToPtr(*volatile types.peripherals.SWI0, 0x40015000); pub const SWI1 = @as(*volatile types.peripherals.SWI0, @ptrFromInt(0x40015000));
/// Event Generator Unit 2 /// Event Generator Unit 2
pub const EGU2 = @intToPtr(*volatile types.peripherals.EGU0, 0x40016000); pub const EGU2 = @as(*volatile types.peripherals.EGU0, @ptrFromInt(0x40016000));
/// Software interrupt 2 /// Software interrupt 2
pub const SWI2 = @intToPtr(*volatile types.peripherals.SWI0, 0x40016000); pub const SWI2 = @as(*volatile types.peripherals.SWI0, @ptrFromInt(0x40016000));
/// Event Generator Unit 3 /// Event Generator Unit 3
pub const EGU3 = @intToPtr(*volatile types.peripherals.EGU0, 0x40017000); pub const EGU3 = @as(*volatile types.peripherals.EGU0, @ptrFromInt(0x40017000));
/// Software interrupt 3 /// Software interrupt 3
pub const SWI3 = @intToPtr(*volatile types.peripherals.SWI0, 0x40017000); pub const SWI3 = @as(*volatile types.peripherals.SWI0, @ptrFromInt(0x40017000));
/// Event Generator Unit 4 /// Event Generator Unit 4
pub const EGU4 = @intToPtr(*volatile types.peripherals.EGU0, 0x40018000); pub const EGU4 = @as(*volatile types.peripherals.EGU0, @ptrFromInt(0x40018000));
/// Software interrupt 4 /// Software interrupt 4
pub const SWI4 = @intToPtr(*volatile types.peripherals.SWI0, 0x40018000); pub const SWI4 = @as(*volatile types.peripherals.SWI0, @ptrFromInt(0x40018000));
/// Event Generator Unit 5 /// Event Generator Unit 5
pub const EGU5 = @intToPtr(*volatile types.peripherals.EGU0, 0x40019000); pub const EGU5 = @as(*volatile types.peripherals.EGU0, @ptrFromInt(0x40019000));
/// Software interrupt 5 /// Software interrupt 5
pub const SWI5 = @intToPtr(*volatile types.peripherals.SWI0, 0x40019000); pub const SWI5 = @as(*volatile types.peripherals.SWI0, @ptrFromInt(0x40019000));
/// Timer/Counter 3 /// Timer/Counter 3
pub const TIMER3 = @intToPtr(*volatile types.peripherals.TIMER0, 0x4001a000); pub const TIMER3 = @as(*volatile types.peripherals.TIMER0, @ptrFromInt(0x4001a000));
/// Timer/Counter 4 /// Timer/Counter 4
pub const TIMER4 = @intToPtr(*volatile types.peripherals.TIMER0, 0x4001b000); pub const TIMER4 = @as(*volatile types.peripherals.TIMER0, @ptrFromInt(0x4001b000));
/// Pulse width modulation unit 0 /// Pulse width modulation unit 0
pub const PWM0 = @intToPtr(*volatile types.peripherals.PWM0, 0x4001c000); pub const PWM0 = @as(*volatile types.peripherals.PWM0, @ptrFromInt(0x4001c000));
/// Pulse Density Modulation (Digital Microphone) Interface /// Pulse Density Modulation (Digital Microphone) Interface
pub const PDM = @intToPtr(*volatile types.peripherals.PDM, 0x4001d000); pub const PDM = @as(*volatile types.peripherals.PDM, @ptrFromInt(0x4001d000));
/// Access control lists /// Access control lists
pub const ACL = @intToPtr(*volatile types.peripherals.ACL, 0x4001e000); pub const ACL = @as(*volatile types.peripherals.ACL, @ptrFromInt(0x4001e000));
/// Non Volatile Memory Controller /// Non Volatile Memory Controller
pub const NVMC = @intToPtr(*volatile types.peripherals.NVMC, 0x4001e000); pub const NVMC = @as(*volatile types.peripherals.NVMC, @ptrFromInt(0x4001e000));
/// Programmable Peripheral Interconnect /// Programmable Peripheral Interconnect
pub const PPI = @intToPtr(*volatile types.peripherals.PPI, 0x4001f000); pub const PPI = @as(*volatile types.peripherals.PPI, @ptrFromInt(0x4001f000));
/// Memory Watch Unit /// Memory Watch Unit
pub const MWU = @intToPtr(*volatile types.peripherals.MWU, 0x40020000); pub const MWU = @as(*volatile types.peripherals.MWU, @ptrFromInt(0x40020000));
/// Pulse width modulation unit 1 /// Pulse width modulation unit 1
pub const PWM1 = @intToPtr(*volatile types.peripherals.PWM0, 0x40021000); pub const PWM1 = @as(*volatile types.peripherals.PWM0, @ptrFromInt(0x40021000));
/// Pulse width modulation unit 2 /// Pulse width modulation unit 2
pub const PWM2 = @intToPtr(*volatile types.peripherals.PWM0, 0x40022000); pub const PWM2 = @as(*volatile types.peripherals.PWM0, @ptrFromInt(0x40022000));
/// Serial Peripheral Interface 2 /// Serial Peripheral Interface 2
pub const SPI2 = @intToPtr(*volatile types.peripherals.SPI0, 0x40023000); pub const SPI2 = @as(*volatile types.peripherals.SPI0, @ptrFromInt(0x40023000));
/// Serial Peripheral Interface Master with EasyDMA 2 /// Serial Peripheral Interface Master with EasyDMA 2
pub const SPIM2 = @intToPtr(*volatile types.peripherals.SPIM0, 0x40023000); pub const SPIM2 = @as(*volatile types.peripherals.SPIM0, @ptrFromInt(0x40023000));
/// SPI Slave 2 /// SPI Slave 2
pub const SPIS2 = @intToPtr(*volatile types.peripherals.SPIS0, 0x40023000); pub const SPIS2 = @as(*volatile types.peripherals.SPIS0, @ptrFromInt(0x40023000));
/// Real time counter 2 /// Real time counter 2
pub const RTC2 = @intToPtr(*volatile types.peripherals.RTC0, 0x40024000); pub const RTC2 = @as(*volatile types.peripherals.RTC0, @ptrFromInt(0x40024000));
/// Inter-IC Sound /// Inter-IC Sound
pub const I2S = @intToPtr(*volatile types.peripherals.I2S, 0x40025000); pub const I2S = @as(*volatile types.peripherals.I2S, @ptrFromInt(0x40025000));
/// FPU /// FPU
pub const FPU = @intToPtr(*volatile types.peripherals.FPU, 0x40026000); pub const FPU = @as(*volatile types.peripherals.FPU, @ptrFromInt(0x40026000));
/// Universal serial bus device /// Universal serial bus device
pub const USBD = @intToPtr(*volatile types.peripherals.USBD, 0x40027000); pub const USBD = @as(*volatile types.peripherals.USBD, @ptrFromInt(0x40027000));
/// UART with EasyDMA 1 /// UART with EasyDMA 1
pub const UARTE1 = @intToPtr(*volatile types.peripherals.UARTE0, 0x40028000); pub const UARTE1 = @as(*volatile types.peripherals.UARTE0, @ptrFromInt(0x40028000));
/// External flash interface /// External flash interface
pub const QSPI = @intToPtr(*volatile types.peripherals.QSPI, 0x40029000); pub const QSPI = @as(*volatile types.peripherals.QSPI, @ptrFromInt(0x40029000));
/// Pulse width modulation unit 3 /// Pulse width modulation unit 3
pub const PWM3 = @intToPtr(*volatile types.peripherals.PWM0, 0x4002d000); pub const PWM3 = @as(*volatile types.peripherals.PWM0, @ptrFromInt(0x4002d000));
/// Serial Peripheral Interface Master with EasyDMA 3 /// Serial Peripheral Interface Master with EasyDMA 3
pub const SPIM3 = @intToPtr(*volatile types.peripherals.SPIM0, 0x4002f000); pub const SPIM3 = @as(*volatile types.peripherals.SPIM0, @ptrFromInt(0x4002f000));
/// GPIO Port 1 /// GPIO Port 1
pub const P0 = @intToPtr(*volatile types.peripherals.P0, 0x50000000); pub const P0 = @as(*volatile types.peripherals.P0, @ptrFromInt(0x50000000));
/// GPIO Port 2 /// GPIO Port 2
pub const P1 = @intToPtr(*volatile types.peripherals.P0, 0x50000300); pub const P1 = @as(*volatile types.peripherals.P0, @ptrFromInt(0x50000300));
/// CRYPTOCELL HOST_RGF interface /// CRYPTOCELL HOST_RGF interface
pub const CC_HOST_RGF = @intToPtr(*volatile types.peripherals.CC_HOST_RGF, 0x5002a000); pub const CC_HOST_RGF = @as(*volatile types.peripherals.CC_HOST_RGF, @ptrFromInt(0x5002a000));
/// ARM TrustZone CryptoCell register interface /// ARM TrustZone CryptoCell register interface
pub const CRYPTOCELL = @intToPtr(*volatile types.peripherals.CRYPTOCELL, 0x5002a000); pub const CRYPTOCELL = @as(*volatile types.peripherals.CRYPTOCELL, @ptrFromInt(0x5002a000));
/// System Tick Timer /// System Tick Timer
pub const SysTick = @intToPtr(*volatile types.peripherals.SCS.SysTick, 0xe000e010); pub const SysTick = @as(*volatile types.peripherals.SCS.SysTick, @ptrFromInt(0xe000e010));
}; };
}; };
}; };

Loading…
Cancel
Save