diff options
Diffstat (limited to 'sw/picardy/src/main.rs')
| -rw-r--r-- | sw/picardy/src/main.rs | 20 |
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] |
