Skip to content
Snippets Groups Projects
Commit e5042ef3 authored by Jens Getreu's avatar Jens Getreu
Browse files

refactor examples to work with RTFM v2

parent 768b9b90
No related branches found
No related tags found
No related merge requests found
...@@ -9,15 +9,19 @@ extern crate cortex_m; ...@@ -9,15 +9,19 @@ extern crate cortex_m;
extern crate cortex_m_rtfm as rtfm; extern crate cortex_m_rtfm as rtfm;
extern crate f3; extern crate f3;
use cast::{usize, u8}; use f3::Serial;
use cortex_m::peripheral::SystClkSource;
use f3::led::{self, LEDS}; use f3::led::{self, LEDS};
use f3::serial::Serial; use f3::prelude::*;
use f3::serial::Event;
use f3::time::Hertz;
use cortex_m::peripheral::SystClkSource;
use cast::{usize, u8};
use rtfm::{app, Threshold}; use rtfm::{app, Threshold};
// CONFIGURATION // CONFIGURATION
const BAUD_RATE: u32 = 115_200; // bits per second const BAUD_RATE: Hertz = Hertz(115_200);
const FREQUENCY: u32 = 4; // Hz const DIVISOR: u32 = 4;
// TASKS & RESOURCES // TASKS & RESOURCES
app! { app! {
...@@ -42,13 +46,14 @@ app! { ...@@ -42,13 +46,14 @@ app! {
// INITIALIZATION PHASE // INITIALIZATION PHASE
fn init(p: init::Peripherals, _r: init::Resources) { fn init(p: init::Peripherals, _r: init::Resources) {
let serial = Serial(&p.USART1); led::init(p.GPIOE, p.RCC);
led::init(&p.GPIOE, &p.RCC); let serial = Serial(p.USART1);
serial.init(&p.GPIOA, &p.RCC, BAUD_RATE); serial.init(BAUD_RATE.invert(), Some(p.DMA1), p.GPIOA, p.RCC);
serial.listen(Event::Rxne);
p.SYST.set_clock_source(SystClkSource::Core); p.SYST.set_clock_source(SystClkSource::Core);
p.SYST.set_reload(8_000_000 / FREQUENCY); p.SYST.set_reload(8_000_000 / DIVISOR);
p.SYST.enable_interrupt(); p.SYST.enable_interrupt();
p.SYST.enable_counter(); p.SYST.enable_counter();
} }
...@@ -63,7 +68,7 @@ fn idle() -> ! { ...@@ -63,7 +68,7 @@ fn idle() -> ! {
// TASKS // TASKS
fn loopback(_t: &mut Threshold, r: USART1_EXTI25::Resources) { fn loopback(_t: &mut Threshold, r: USART1_EXTI25::Resources) {
let serial = Serial(&r.USART1); let serial = Serial(&**r.USART1);
if let Ok(byte) = serial.read() { if let Ok(byte) = serial.read() {
if serial.write(byte).is_err() { if serial.write(byte).is_err() {
......
...@@ -20,14 +20,17 @@ extern crate heapless; ...@@ -20,14 +20,17 @@ extern crate heapless;
use cast::{usize, u8}; use cast::{usize, u8};
use cortex_m::peripheral::SystClkSource; use cortex_m::peripheral::SystClkSource;
use f3::Serial;
use f3::led::{self, LEDS}; use f3::led::{self, LEDS};
use f3::serial::Serial; use f3::prelude::*;
use f3::serial::Event;
use heapless::Vec; use heapless::Vec;
use rtfm::{app, Resource, Threshold}; use rtfm::{app, Resource, Threshold};
use f3::time::Hertz;
// CONFIGURATION // CONFIGURATION
const BAUD_RATE: u32 = 115_200; // bits per second const BAUD_RATE: Hertz = Hertz(115_200);
const FREQUENCY: u32 = 4; // Hz const DIVISOR: u32 = 4;
// TASK & RESOURCES // TASK & RESOURCES
app!{ app!{
...@@ -57,10 +60,13 @@ app!{ ...@@ -57,10 +60,13 @@ app!{
// INITIALIZATION PHASE // INITIALIZATION PHASE
fn init(p: init::Peripherals, _r: init::Resources) { fn init(p: init::Peripherals, _r: init::Resources) {
led::init(&p.GPIOE, &p.RCC); led::init(&p.GPIOE, &p.RCC);
Serial(&p.USART1).init(&p.GPIOA, &p.RCC, BAUD_RATE);
let serial = Serial(p.USART1);
serial.init(BAUD_RATE.invert(), Some(p.DMA1), p.GPIOA, p.RCC);
serial.listen(Event::Rxne);
p.SYST.set_clock_source(SystClkSource::Core); p.SYST.set_clock_source(SystClkSource::Core);
p.SYST.set_reload(8_000_000 / FREQUENCY); p.SYST.set_reload(8_000_000 / DIVISOR);
p.SYST.enable_interrupt(); p.SYST.enable_interrupt();
p.SYST.enable_counter(); p.SYST.enable_counter();
} }
...@@ -75,7 +81,7 @@ fn idle() -> ! { ...@@ -75,7 +81,7 @@ fn idle() -> ! {
// TASKS // TASKS
fn receive(t: &mut Threshold, mut r: USART1_EXTI25::Resources) { fn receive(t: &mut Threshold, mut r: USART1_EXTI25::Resources) {
let serial = Serial(&r.USART1); let serial = Serial(&**r.USART1);
let byte = serial.read().unwrap(); let byte = serial.read().unwrap();
if serial.write(byte).is_err() { if serial.write(byte).is_err() {
......
...@@ -23,14 +23,17 @@ extern crate heapless; ...@@ -23,14 +23,17 @@ extern crate heapless;
use cast::{usize, u8}; use cast::{usize, u8};
use cortex_m::peripheral::SystClkSource; use cortex_m::peripheral::SystClkSource;
use f3::Serial;
use f3::led::{self, LEDS}; use f3::led::{self, LEDS};
use f3::serial::Serial; use f3::prelude::*;
use f3::serial::Event;
use f3::time::Hertz;
use heapless::Vec; use heapless::Vec;
use rtfm::{app, Threshold}; use rtfm::{app, Threshold};
// CONFIGURATION // CONFIGURATION
const BAUD_RATE: u32 = 115_200; // bits per second const BAUD_RATE: Hertz = Hertz(115_200);
const FREQUENCY: u32 = 4; // Hz const DIVISOR: u32 = 4;
// TASKS & RESOURCES // TASKS & RESOURCES
app! { app! {
...@@ -59,10 +62,14 @@ app! { ...@@ -59,10 +62,14 @@ app! {
// INITIALIZATION PHASE // INITIALIZATION PHASE
fn init(p: init::Peripherals, _r: init::Resources) { fn init(p: init::Peripherals, _r: init::Resources) {
led::init(&p.GPIOE, &p.RCC); led::init(&p.GPIOE, &p.RCC);
Serial(&p.USART1).init(&p.GPIOA, &p.RCC, BAUD_RATE);
let serial = Serial(p.USART1);
serial.init(BAUD_RATE.invert(), Some(p.DMA1), p.GPIOA, p.RCC);
serial.listen(Event::Rxne);
p.SYST.set_clock_source(SystClkSource::Core); p.SYST.set_clock_source(SystClkSource::Core);
p.SYST.set_reload(8_000_000 / FREQUENCY); p.SYST.set_reload(8_000_000 / DIVISOR);
p.SYST.enable_interrupt(); p.SYST.enable_interrupt();
p.SYST.enable_counter(); p.SYST.enable_counter();
} }
...@@ -77,7 +84,7 @@ fn idle() -> ! { ...@@ -77,7 +84,7 @@ fn idle() -> ! {
// TASKS // TASKS
fn receive(_t: &mut Threshold, r: USART1_EXTI25::Resources) { fn receive(_t: &mut Threshold, r: USART1_EXTI25::Resources) {
let serial = Serial(&r.USART1); let serial = Serial(&**r.USART1);
let byte = serial.read().unwrap(); let byte = serial.read().unwrap();
......
...@@ -15,7 +15,7 @@ use f3::led::{self, LEDS}; ...@@ -15,7 +15,7 @@ use f3::led::{self, LEDS};
use rtfm::{app, Threshold}; use rtfm::{app, Threshold};
// CONFIGURATION // CONFIGURATION
const FREQUENCY: u32 = 4; const DIVISOR: u32 = 4;
// TASKS & RESOURCES // TASKS & RESOURCES
app! { app! {
...@@ -38,7 +38,7 @@ fn init(p: init::Peripherals, _r: init::Resources) { ...@@ -38,7 +38,7 @@ fn init(p: init::Peripherals, _r: init::Resources) {
led::init(p.GPIOE, p.RCC); led::init(p.GPIOE, p.RCC);
p.SYST.set_clock_source(SystClkSource::Core); p.SYST.set_clock_source(SystClkSource::Core);
p.SYST.set_reload(8_000_000 / FREQUENCY); p.SYST.set_reload(8_000_000 / DIVISOR);
p.SYST.enable_interrupt(); p.SYST.enable_interrupt();
p.SYST.enable_counter(); p.SYST.enable_counter();
} }
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Please register or to comment