aboutsummaryrefslogtreecommitdiffstats
path: root/sw/picardy/src/main.rs
diff options
context:
space:
mode:
Diffstat (limited to 'sw/picardy/src/main.rs')
-rw-r--r--sw/picardy/src/main.rs20
1 files changed, 12 insertions, 8 deletions
diff --git a/sw/picardy/src/main.rs b/sw/picardy/src/main.rs
index d6f2bf9..66c00c5 100644
--- a/sw/picardy/src/main.rs
+++ b/sw/picardy/src/main.rs
@@ -25,6 +25,8 @@
#![no_main]
#![no_std]
+use core::mem::MaybeUninit;
+use core::fmt::Write;
use cortex_m_rt::ExceptionFrame;
use cortex_m_semihosting::hprintln;
use panic_semihosting as _;
@@ -32,22 +34,21 @@ use panic_semihosting as _;
use stm32f1xx_hal::{
prelude::*,
pac,
+ pac::interrupt,
i2c,
gpio,
delay::Delay,
- timer::{Timer, Event},
+ timer::{CountDownTimer, Timer, Event},
qei::QeiOptions,
};
-use stm32f1xx_hal::stm32::{/*NVIC, Interrupt,*/ interrupt};
-
use embedded_hal::digital::v2::{OutputPin};
use hd44780_driver::{Cursor, CursorBlink, Display, DisplayMode, HD44780};
pub mod ui;
pub mod si_clock;
-use core::fmt::Write;
+static mut TIMER1: MaybeUninit<CountDownTimer<pac::TIM1>> = MaybeUninit::uninit();
enum Mode {
VFO,
@@ -275,11 +276,12 @@ fn main() -> ! {
let mut last_encoder_count = qei.count();
- let mut timer1 = Timer::tim1(dp.TIM1, &clocks, &mut rcc.apb2)
- .start_count_down(40.hz());
+ let timer1 = unsafe { &mut *TIMER1.as_mut_ptr() };
+ *timer1 = Timer::tim1(dp.TIM1, &clocks, &mut rcc.apb2)
+ .start_count_down(1.hz());
timer1.listen(Event::Update);
- //unsafe { NVIC::unmask(Interrupt::TIM1_UP); }
+ unsafe { pac::NVIC::unmask(pac::Interrupt::TIM1_UP); }
loop {
let mut update_disp_required = false;
@@ -358,7 +360,7 @@ fn main() -> ! {
last_encoder_count = encoder_count;
- delay.delay_ms(20u8);
+ //delay.delay_ms(20u8);
//cortex_m::asm::wfi();
}
@@ -366,6 +368,8 @@ fn main() -> ! {
#[interrupt]
fn TIM1_UP() {
+ let timer1 = unsafe { &mut *TIMER1.as_mut_ptr() };
+ timer1.clear_update_interrupt_flag();
}
#[cortex_m_rt::exception]