Skip to content
Snippets Groups Projects
Commit 3f5f3cf7 authored by Jorge Aparicio's avatar Jorge Aparicio
Browse files

update examples

parent 235e63a9
No related branches found
No related tags found
No related merge requests found
...@@ -3,63 +3,42 @@ ...@@ -3,63 +3,42 @@
#![allow(unreachable_code)] // for the `block!` macro #![allow(unreachable_code)] // for the `block!` macro
#![deny(unsafe_code)] #![deny(unsafe_code)]
#![deny(warnings)] #![deny(warnings)]
#![feature(const_fn)] #![feature(proc_macro)]
#![feature(used)]
#![no_std] #![no_std]
extern crate blue_pill; extern crate blue_pill;
extern crate embedded_hal as hal;
// version = "0.2.3"
extern crate cortex_m_rt;
// version = "0.1.0"
#[macro_use]
extern crate cortex_m_rtfm as rtfm; extern crate cortex_m_rtfm as rtfm;
#[macro_use] #[macro_use(block)]
extern crate nb; extern crate nb;
use blue_pill::Timer;
use blue_pill::led::{self, Green}; use blue_pill::led::{self, Green};
use blue_pill::prelude::*;
use blue_pill::time::Hertz; use blue_pill::time::Hertz;
use blue_pill::{Timer, stm32f103xx}; use rtfm::app;
use hal::prelude::*;
use rtfm::{P0, T0, TMax};
// CONFIGURATION
const FREQUENCY: Hertz = Hertz(1); const FREQUENCY: Hertz = Hertz(1);
// RESOURCES app! {
peripherals!(stm32f103xx, { device: blue_pill::stm32f103xx,
GPIOC: Peripheral {
ceiling: C0,
},
RCC: Peripheral {
ceiling: C0,
},
TIM3: Peripheral {
ceiling: C0,
},
});
// INITIALIZATION PHASE idle: {
fn init(ref prio: P0, thr: &TMax) { resources: [TIM3],
let gpioc = &GPIOC.access(prio, thr); }
let rcc = &RCC.access(prio, thr); }
let tim3 = TIM3.access(prio, thr);
let timer = Timer(&*tim3); fn init(p: init::Peripherals) {
led::init(p.GPIOC, p.RCC);
led::init(gpioc, rcc); let timer = Timer(&*p.TIM3);
timer.init(FREQUENCY.invert(), rcc);
}
// IDLE LOOP timer.init(FREQUENCY.invert(), p.RCC);
fn idle(ref prio: P0, ref thr: T0) -> ! { }
let tim3 = TIM3.access(prio, thr);
let timer = Timer(&*tim3); fn idle(r: idle::Resources) -> ! {
let timer = Timer(&*r.TIM3);
timer.resume(); timer.resume();
let mut state = false; let mut state = false;
...@@ -75,6 +54,3 @@ fn idle(ref prio: P0, ref thr: T0) -> ! { ...@@ -75,6 +54,3 @@ fn idle(ref prio: P0, ref thr: T0) -> ! {
} }
} }
} }
// TASKS
tasks!(stm32f103xx, {});
...@@ -37,7 +37,7 @@ fn idle(r: idle::Resources) -> ! { ...@@ -37,7 +37,7 @@ fn idle(r: idle::Resources) -> ! {
const CHANNELS: [Channel; 4] = const CHANNELS: [Channel; 4] =
[Channel::_1, Channel::_2, Channel::_3, Channel::_4]; [Channel::_1, Channel::_2, Channel::_3, Channel::_4];
let capture = Capture(&**r.TIM1); let capture = Capture(&*r.TIM1);
for c in &CHANNELS { for c in &CHANNELS {
capture.enable(*c); capture.enable(*c);
......
...@@ -37,7 +37,7 @@ fn idle(r: idle::Resources) -> ! { ...@@ -37,7 +37,7 @@ fn idle(r: idle::Resources) -> ! {
const CHANNELS: [Channel; 4] = const CHANNELS: [Channel; 4] =
[Channel::_1, Channel::_2, Channel::_3, Channel::_4]; [Channel::_1, Channel::_2, Channel::_3, Channel::_4];
let capture = Capture(&**r.TIM2); let capture = Capture(&*r.TIM2);
for c in &CHANNELS { for c in &CHANNELS {
capture.enable(*c); capture.enable(*c);
......
...@@ -36,7 +36,7 @@ fn init(p: init::Peripherals) { ...@@ -36,7 +36,7 @@ fn init(p: init::Peripherals) {
fn idle(r: idle::Resources) -> ! { fn idle(r: idle::Resources) -> ! {
const CHANNELS: [Channel; 2] = [Channel::_1, Channel::_2]; const CHANNELS: [Channel; 2] = [Channel::_1, Channel::_2];
let capture = Capture(&**r.TIM3); let capture = Capture(&*r.TIM3);
for c in &CHANNELS { for c in &CHANNELS {
capture.enable(*c); capture.enable(*c);
......
...@@ -37,7 +37,7 @@ fn idle(r: idle::Resources) -> ! { ...@@ -37,7 +37,7 @@ fn idle(r: idle::Resources) -> ! {
const CHANNELS: [Channel; 4] = const CHANNELS: [Channel; 4] =
[Channel::_1, Channel::_2, Channel::_3, Channel::_4]; [Channel::_1, Channel::_2, Channel::_3, Channel::_4];
let capture = Capture(&**r.TIM4); let capture = Capture(&*r.TIM4);
for c in &CHANNELS { for c in &CHANNELS {
capture.enable(*c); capture.enable(*c);
......
//! Prints "Hello" and then "World" in the OpenOCD console
#![deny(unsafe_code)]
#![deny(warnings)]
#![feature(const_fn)]
#![feature(proc_macro)]
#![no_std]
extern crate blue_pill;
extern crate cortex_m_rtfm as rtfm;
extern crate cortex_m_semihosting as semihosting;
use core::fmt::Write;
use rtfm::app;
use semihosting::hio::{self, HStdout};
app! {
device: blue_pill::stm32f103xx,
resources: {
static HSTDOUT: Option<HStdout> = None;
},
idle: {
resources: [HSTDOUT],
},
}
fn init(_p: init::Peripherals, r: init::Resources) {
let mut hstdout = hio::hstdout().unwrap();
writeln!(hstdout, "Hello").unwrap();
**r.HSTDOUT = Some(hstdout);
}
fn idle(r: idle::Resources) -> ! {
writeln!(r.HSTDOUT.as_mut().unwrap(), "World").unwrap();
loop {
rtfm::wfi();
}
}
//! Prints "Hello" and then "World" on the OpenOCD console //! Prints "Hello, World" in the OpenOCD console
#![deny(unsafe_code)] #![deny(unsafe_code)]
#![deny(warnings)] #![deny(warnings)]
#![feature(const_fn)]
#![feature(proc_macro)] #![feature(proc_macro)]
#![no_std] #![no_std]
extern crate blue_pill; extern crate blue_pill;
extern crate cortex_m;
extern crate cortex_m_rtfm as rtfm; extern crate cortex_m_rtfm as rtfm;
extern crate cortex_m_semihosting; extern crate cortex_m_semihosting as semihosting;
use core::fmt::Write; use core::fmt::Write;
use cortex_m_semihosting::hio::{self, HStdout};
use rtfm::app; use rtfm::app;
use semihosting::hio;
app! { app! {
device: blue_pill::stm32f103xx, device: blue_pill::stm32f103xx,
resources: {
static HSTDOUT: Option<HStdout> = None;
},
idle: {
resources: [HSTDOUT],
},
} }
// INITIALIZATION PHASE fn init(_p: init::Peripherals) {}
fn init(_p: init::Peripherals, r: init::Resources) {
let mut hstdout = hio::hstdout().unwrap();
writeln!(hstdout, "Hello").unwrap();
**r.HSTDOUT = Some(hstdout); fn idle() -> ! {
} writeln!(hio::hstdout().unwrap(), "Hello, world!").unwrap();
// IDLE LOOP
fn idle(r: idle::Resources) -> ! {
if let Some(mut hstdout) = r.HSTDOUT.take() {
writeln!(hstdout, "World").unwrap();
}
// Sleep
loop { loop {
rtfm::wfi(); rtfm::wfi();
} }
......
...@@ -41,7 +41,7 @@ fn idle(r: idle::Resources) -> ! { ...@@ -41,7 +41,7 @@ fn idle(r: idle::Resources) -> ! {
// Read mode // Read mode
pub const R: u8 = 1 << 7; pub const R: u8 = 1 << 7;
let spi = Spi(&**r.SPI1); let spi = Spi(&*r.SPI1);
rtfm::bkpt(); rtfm::bkpt();
......
...@@ -41,7 +41,7 @@ fn idle(r: idle::Resources) -> ! { ...@@ -41,7 +41,7 @@ fn idle(r: idle::Resources) -> ! {
// Read mode // Read mode
pub const R: u8 = 1 << 7; pub const R: u8 = 1 << 7;
let spi = Spi(&**r.SPI2); let spi = Spi(&*r.SPI2);
rtfm::bkpt(); rtfm::bkpt();
......
...@@ -34,7 +34,7 @@ fn init(p: init::Peripherals) { ...@@ -34,7 +34,7 @@ fn init(p: init::Peripherals) {
} }
fn idle(r: idle::Resources) -> ! { fn idle(r: idle::Resources) -> ! {
let timer = Timer(&**r.TIM1); let timer = Timer(&*r.TIM1);
let mut state = false; let mut state = false;
loop { loop {
......
...@@ -33,7 +33,7 @@ fn init(p: init::Peripherals) { ...@@ -33,7 +33,7 @@ fn init(p: init::Peripherals) {
} }
fn idle(r: idle::Resources) -> ! { fn idle(r: idle::Resources) -> ! {
let timer = Timer(&**r.TIM2); let timer = Timer(&*r.TIM2);
let mut state = false; let mut state = false;
loop { loop {
......
...@@ -34,7 +34,7 @@ fn init(p: init::Peripherals) { ...@@ -34,7 +34,7 @@ fn init(p: init::Peripherals) {
} }
fn idle(r: idle::Resources) -> ! { fn idle(r: idle::Resources) -> ! {
let timer = Timer(&**r.TIM3); let timer = Timer(&*r.TIM3);
let mut state = false; let mut state = false;
loop { loop {
......
...@@ -34,7 +34,7 @@ fn init(p: init::Peripherals) { ...@@ -34,7 +34,7 @@ fn init(p: init::Peripherals) {
} }
fn idle(r: idle::Resources) -> ! { fn idle(r: idle::Resources) -> ! {
let timer = Timer(&**r.TIM4); let timer = Timer(&*r.TIM4);
let mut state = false; let mut state = false;
loop { loop {
......
...@@ -17,7 +17,7 @@ use blue_pill::dma::{Buffer, Dma1Channel2}; ...@@ -17,7 +17,7 @@ use blue_pill::dma::{Buffer, Dma1Channel2};
use blue_pill::prelude::*; use blue_pill::prelude::*;
use blue_pill::time::Hertz; use blue_pill::time::Hertz;
use blue_pill::{Channel, Pwm}; use blue_pill::{Channel, Pwm};
use rtfm::app; use rtfm::{app, Static};
// CONFIGURATION // CONFIGURATION
const FREQUENCY: Hertz = Hertz(200_000); const FREQUENCY: Hertz = Hertz(200_000);
...@@ -52,11 +52,12 @@ fn init(p: init::Peripherals, r: init::Resources) { ...@@ -52,11 +52,12 @@ fn init(p: init::Peripherals, r: init::Resources) {
} }
fn idle(r: idle::Resources) -> ! { fn idle(r: idle::Resources) -> ! {
let pwm = Pwm(&**r.TIM2); let pwm = Pwm(&*r.TIM2);
let buffer = Static::wrap_mut(r.BUFFER);
pwm.set_duties(r.DMA1, Channel::_1, r.BUFFER).unwrap(); pwm.set_duties(r.DMA1, Channel::_1, buffer).unwrap();
block!(r.BUFFER.release(r.DMA1)).unwrap(); block!(buffer.release(r.DMA1)).unwrap();
rtfm::bkpt(); rtfm::bkpt();
......
...@@ -19,7 +19,6 @@ ...@@ -19,7 +19,6 @@
#![no_std] #![no_std]
extern crate cast; extern crate cast;
extern crate either;
extern crate embedded_hal as hal; extern crate embedded_hal as hal;
extern crate nb; extern crate nb;
extern crate static_ref; extern crate static_ref;
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Please register or to comment