Initial commit

This commit is contained in:
Luca 2022-03-03 18:30:37 +01:00
commit f06907ce13
6 changed files with 101 additions and 0 deletions

8
.cargo/config Normal file
View File

@ -0,0 +1,8 @@
[build]
target = "thumbv6m-none-eabi"
[target.thumbv6m-none-eabi]
runner = "elf2uf2-rs -d"
rustflags = [
"-C", "link-arg=-Tlink.x",
]

2
.gitignore vendored Normal file
View File

@ -0,0 +1,2 @@
target/
Cargo.lock

11
Cargo.toml Normal file
View File

@ -0,0 +1,11 @@
[package]
name = "pico-test"
version = "0.1.0"
edition = "2018"
[dependencies]
cortex-m = "0.7.4"
embedded-hal = "0.2.7"
embedded-time = "0.12.1"
panic-halt = "0.2.0"
rp-pico = "0.2.0"

15
build.rs Normal file
View File

@ -0,0 +1,15 @@
use std::env;
use std::fs;
use std::io::Write;
use std::path::PathBuf;
fn main() {
let out_dir = PathBuf::from(env::var("OUT_DIR").unwrap());
fs::File::create(out_dir.join("memory.x"))
.unwrap()
.write_all(include_bytes!("memory.x"))
.unwrap();
println!("cargo:rustc-link-search={}", out_dir.display());
println!("cargo:rerun-if-changed=memory.x");
}

17
memory.x Normal file
View File

@ -0,0 +1,17 @@
MEMORY
{
BOOT2 : ORIGIN = 0x10000000, LENGTH = 0x100
FLASH : ORIGIN = 0x10000100, LENGTH = 2048K - 0x100
RAM : ORIGIN = 0x20000000, LENGTH = 264K
}
EXTERN(BOOT2_FIRMWARE)
SECTIONS
{
.boot2 ORIGIN(BOOT2) :
{
KEEP(*(.boot2));
} > BOOT2
}
INSERT BEFORE .text;

48
src/main.rs Normal file
View File

@ -0,0 +1,48 @@
#![no_std]
#![no_main]
use embedded_hal::digital::v2::OutputPin;
use embedded_time::fixed_point::FixedPoint;
use panic_halt as _;
use rp_pico::Pins;
use rp_pico::entry;
use rp_pico::hal::{Clock, Sio, Watchdog, clocks::init_clocks_and_plls};
use rp_pico::pac::{CorePeripherals, Peripherals};
#[entry]
fn main() -> ! {
let mut p = Peripherals::take().unwrap();
let cp = CorePeripherals::take().unwrap();
let mut watchdog = Watchdog::new(p.WATCHDOG);
let clocks = init_clocks_and_plls(
rp_pico::XOSC_CRYSTAL_FREQ,
p.XOSC,
p.CLOCKS,
p.PLL_SYS,
p.PLL_USB,
&mut p.RESETS,
&mut watchdog
).ok().unwrap();
let sio = Sio::new(p.SIO);
let pins = Pins::new(
p.IO_BANK0,
p.PADS_BANK0,
sio.gpio_bank0,
&mut p.RESETS,
);
let mut led = pins.led.into_push_pull_output();
let mut delay = cortex_m::delay::Delay::new(cp.SYST, clocks.system_clock.freq().integer());
loop {
led.set_high().unwrap();
delay.delay_ms(500);
led.set_low().unwrap();
delay.delay_ms(500);
}
}