Size: a a a

2017 November 12

L

LexsZero in embedded.rs
а юсб-стек для стм32 есть какой-нибудь или через ффи пердолиться?
источник

L

LexsZero in embedded.rs
а то у меня тут есть один заброшенный проектик, было бы прикольно перепилить его на руст чтоб поиграться со всем этим делом (и выучить нормально руст наконец уже)
источник

L

LexsZero in embedded.rs
(девайсный, да)
источник

AS

Andrew Strokov in embedded.rs
я не видел
в кубе нормальный стек, шо вам так ффи не нравится
источник

L

LexsZero in embedded.rs
неспортивно, посоны из RESF засмеют.
источник

AS

Andrew Strokov in embedded.rs
тебе задачи решать или спортом ебаться?
источник

MC

Mikhail Cheshkov in embedded.rs
> тиклесс поверх систика
источник

MC

Mikhail Cheshkov in embedded.rs
источник

AS

Andrew Strokov in embedded.rs
я тоже не понял
источник

AS

Andrew Strokov in embedded.rs
Mikhail Cheshkov
автор делает странное
    future::loop_fn(timer, |timer| {
       match timer.wait() {
           Ok(())                     => Ok(Loop::Break(timer)),
           Err(nb::Error::WouldBlock) => Ok(Loop::Continue(timer)),
       }
   })


Но в трейте таймера вейт имеет невер в ошибке
pub trait Timer {
   type Time;
   fn get_timeout(&self) -> Self::Time;
   fn pause(&mut self);
   fn restart(&mut self);
   fn resume(&mut self);
   fn set_timeout<T>(&mut self, timeout: T)
   where
       T: Into<Self::Time>;
   fn wait(&self) -> Result<(), !>;
}
» Some traits, like the one shown below, may expose possibly blocking APIs that can't fail. In those cases nb::Result<_, !> should be used.
источник

AS

Andrew Strokov in embedded.rs
Mikhail Cheshkov
автор делает странное
    future::loop_fn(timer, |timer| {
       match timer.wait() {
           Ok(())                     => Ok(Loop::Break(timer)),
           Err(nb::Error::WouldBlock) => Ok(Loop::Continue(timer)),
       }
   })


Но в трейте таймера вейт имеет невер в ошибке
pub trait Timer {
   type Time;
   fn get_timeout(&self) -> Self::Time;
   fn pause(&mut self);
   fn restart(&mut self);
   fn resume(&mut self);
   fn set_timeout<T>(&mut self, timeout: T)
   where
       T: Into<Self::Time>;
   fn wait(&self) -> Result<(), !>;
}
слушай, а откуда вообще этот пример?
источник

MC

Mikhail Cheshkov in embedded.rs
Так это значит что вейт никогда не ломается, даже с "буду блокировать" и вся обертка с поллингом не имеет смысла
источник

AS

Andrew Strokov in embedded.rs
а, типа он в match:Err никтогда не зайдет
источник

MC

Mikhail Cheshkov in embedded.rs
источник

MC

Mikhail Cheshkov in embedded.rs
Таймер там не из самого хала, а из stm32f103xx_hal_impl
источник

AS

Andrew Strokov in embedded.rs
а, внатуре
источник

MC

Mikhail Cheshkov in embedded.rs
И я хз где это
источник

AS

Andrew Strokov in embedded.rs
в blue-pill, наверное
источник

MC

Mikhail Cheshkov in embedded.rs
Нет, там таймер из хала
источник

AS

Andrew Strokov in embedded.rs
вообще не смущает?
    fn wait(&self) -> nb::Result<(), !> {
       if self.0.sr.read().uif().bit_is_clear() {
           Err(Error::WouldBlock)
       } else {
           self.0.sr.modify(|_, w| w.uif().clear_bit());
           Ok(())
       }
   }
источник