/
mil
/
RUST
Обзор
Документация
Войти
/
mil
/
RUST
Код
Запросы
0
Задачи
Вики
Пакеты
0
Релизы
0
CI/CD
Аналитика
Безопасность
master
src/main.rs
77 строк
2 KB
mil
rrhuji
11 июн 2025, 09:22
11 июн 2025, 09:22
964e28c
Код
Авторство
О чём код?
#![no_main] #![no_std] mod display_manager; use display_manager::DisplayManager; use rotary_encoder_hal::{Direction, Rotary}; //mod enc; //use enc::Encoder; use cortex_m_rt::entry; //use rotary_encoder_hal::{Direction, Rotary,DefaultPhase}; use sh1106::{ interface::i2c::I2cInterface, mode::GraphicsMode, Builder, }; use panic_halt as _; use stm32f4xx_hal::{ gpio::gpiob, i2c::I2c, pac::{self, I2C2}, prelude::* }; #[entry] fn main() -> ! { let dp = pac::Peripherals::take().unwrap(); let rcc = dp.RCC.constrain(); let clocks = rcc.cfgr.sysclk(96.MHz()).freeze(); let mut delay = dp.TIM1.delay_us(&clocks); //энкодер let gpiod = dp.GPIOD.split(); let mut enc_clk = gpiod.pd12.into_pull_up_input(); let mut enc_data = gpiod.pd13.into_pull_up_input(); let mut enc = Rotary::new(enc_clk, enc_data); let mut pos: isize = 0; let gpiob = dp.GPIOB.split(); let gpiof = dp.GPIOF.split(); let scl = gpiof.pf1.into_alternate_open_drain(); let sda = gpiof.pf0.into_alternate_open_drain(); let mut led = gpiob.pb13.into_push_pull_output(); let mut led2 = gpiob.pb12.into_push_pull_output(); let mut led3 = gpiob.pb14.into_push_pull_output(); let i2c = I2c::new(dp.I2C2, (scl, sda), 100.kHz(), &clocks); let mut display_manager = DisplayManager::new(i2c); loop { display_manager.draw(); match enc.update().unwrap() { Direction::Clockwise => { pos += 1; led.set_low(); } Direction::CounterClockwise => { pos -= 1; led2.set_low(); } Direction::None => { led.set_high(); led2.set_high(); led3.set_high(); } } delay.delay_ms(10); } } asdfghjyukik /*led.set_high(); delay.delay_ms(100); led.set_low(); delay.delay_ms(100);*/