Add blink task & code verified working
This commit is contained in:
parent
c1d06806aa
commit
9604e0af66
45
src/main.rs
45
src/main.rs
@ -8,12 +8,13 @@ use embassy_embedded_hal::shared_bus::blocking::spi::SpiDevice;
|
|||||||
use embassy_executor::Spawner;
|
use embassy_executor::Spawner;
|
||||||
use embassy_nrf::{
|
use embassy_nrf::{
|
||||||
bind_interrupts,
|
bind_interrupts,
|
||||||
gpio::{Level, Output, OutputDrive},
|
gpio::{AnyPin, Level, Output, OutputDrive, Pin},
|
||||||
peripherals,
|
peripherals,
|
||||||
spim::{self, Spim},
|
spim::{self, Spim},
|
||||||
};
|
};
|
||||||
use embassy_sync::blocking_mutex::Mutex;
|
use embassy_sync::blocking_mutex::Mutex;
|
||||||
use embassy_time::Timer;
|
use embassy_time::{Delay, Duration, Timer};
|
||||||
|
use embedded_hal::digital::OutputPin;
|
||||||
use ili9341::Ili9341;
|
use ili9341::Ili9341;
|
||||||
use {defmt_rtt as _, panic_probe as _};
|
use {defmt_rtt as _, panic_probe as _};
|
||||||
|
|
||||||
@ -33,15 +34,33 @@ bind_interrupts!(struct Irqs {
|
|||||||
UARTE3_SPIM3_SPIS3_TWIM3_TWIS3 => embassy_nrf::spim::InterruptHandler<peripherals::SERIAL3>;
|
UARTE3_SPIM3_SPIS3_TWIM3_TWIS3 => embassy_nrf::spim::InterruptHandler<peripherals::SERIAL3>;
|
||||||
});
|
});
|
||||||
|
|
||||||
|
#[embassy_executor::task]
|
||||||
|
async fn blink(pin: AnyPin, blink_delay: Duration) -> ! {
|
||||||
|
let mut led = Output::new(pin, Level::Low, OutputDrive::Standard);
|
||||||
|
|
||||||
|
loop {
|
||||||
|
led.set_high();
|
||||||
|
Timer::after(blink_delay).await;
|
||||||
|
led.set_low();
|
||||||
|
Timer::after(blink_delay).await;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
#[embassy_executor::main]
|
#[embassy_executor::main]
|
||||||
async fn main(_spawner: Spawner) {
|
async fn main(spawner: Spawner) {
|
||||||
|
// Initialize the nRF
|
||||||
let p = embassy_nrf::init(Default::default());
|
let p = embassy_nrf::init(Default::default());
|
||||||
|
|
||||||
// Get the pins
|
// Spawn the blink task
|
||||||
let mosi = p.P0_31;
|
spawner
|
||||||
let miso = p.P0_30;
|
.spawn(blink(p.P0_02.degrade(), Duration::from_millis(250)))
|
||||||
let sck = p.P0_20;
|
.expect("Failed to start blink task");
|
||||||
let cs_pin = p.P0_13;
|
|
||||||
|
// Get the pins for SPI
|
||||||
|
let mosi = p.P0_13;
|
||||||
|
let miso = p.P0_12;
|
||||||
|
let sck = p.P0_30;
|
||||||
|
let cs_pin = p.P0_31;
|
||||||
|
|
||||||
// Create an SPI config
|
// Create an SPI config
|
||||||
let mut spim_config = spim::Config::default();
|
let mut spim_config = spim::Config::default();
|
||||||
@ -51,23 +70,23 @@ async fn main(_spawner: Spawner) {
|
|||||||
// Create a new SPI interface on the nrf //
|
// Create a new SPI interface on the nrf //
|
||||||
///////////////////////////////////////////
|
///////////////////////////////////////////
|
||||||
|
|
||||||
// Setup the chip select as an output pin
|
|
||||||
let chip_select = Output::new(cs_pin, Level::Low, OutputDrive::Standard);
|
|
||||||
// Grab the SPI Master mode peripheral form the nRF60
|
// Grab the SPI Master mode peripheral form the nRF60
|
||||||
let spim = embassy_nrf::spim::Spim::new(p.SERIAL3, Irqs, sck, miso, mosi, spim_config);
|
let spim = embassy_nrf::spim::Spim::new(p.SERIAL3, Irqs, sck, miso, mosi, spim_config);
|
||||||
// Use the SPI peripheral to create a shared bus
|
// Use the SPI peripheral to create a shared bus
|
||||||
let spi_bus: Mutex<embassy_sync::blocking_mutex::raw::NoopRawMutex, _> =
|
let spi_bus: Mutex<embassy_sync::blocking_mutex::raw::NoopRawMutex, _> =
|
||||||
Mutex::new(RefCell::new(spim));
|
Mutex::new(RefCell::new(spim));
|
||||||
|
|
||||||
|
// Setup the chip select as an output pin
|
||||||
|
let chip_select = Output::new(cs_pin, Level::Low, OutputDrive::Standard);
|
||||||
// Use the shared bus to create a SPI Device to use for the display
|
// Use the shared bus to create a SPI Device to use for the display
|
||||||
let spi_display = SpiDevice::new(&spi_bus, chip_select);
|
let spi_display = SpiDevice::new(&spi_bus, chip_select);
|
||||||
|
|
||||||
// Create a new SPI display interface
|
// Create a new SPI display interface
|
||||||
let direction_control = Output::new(p.P0_07, Level::High, OutputDrive::Standard);
|
let direction_control = Output::new(p.P0_20, Level::High, OutputDrive::Standard);
|
||||||
let iface = SPIInterface::new(spi_display, direction_control);
|
let iface = SPIInterface::new(spi_display, direction_control);
|
||||||
|
|
||||||
// Create a new display
|
// Create a new display
|
||||||
let display_reset = Output::new(p.P0_12, Level::High, OutputDrive::Standard);
|
let display_reset = Output::new(p.P0_11, Level::High, OutputDrive::Standard);
|
||||||
let display_orientation = ili9341::Orientation::Landscape;
|
let display_orientation = ili9341::Orientation::Landscape;
|
||||||
let display_size = ili9341::DisplaySize240x320;
|
let display_size = ili9341::DisplaySize240x320;
|
||||||
let mut display = Ili9341::new(
|
let mut display = Ili9341::new(
|
||||||
@ -129,7 +148,7 @@ async fn main(_spawner: Spawner) {
|
|||||||
// )
|
// )
|
||||||
// .draw(&mut display).unwrap();
|
// .draw(&mut display).unwrap();
|
||||||
|
|
||||||
let mut led = Output::new(p.P0_02, Level::Low, OutputDrive::Standard);
|
let mut led = Output::new(p.P0_03, Level::Low, OutputDrive::Standard);
|
||||||
|
|
||||||
loop {
|
loop {
|
||||||
info!("Going high!");
|
info!("Going high!");
|
||||||
|
|||||||
Loading…
Reference in New Issue
Block a user