blinking and pushing
This commit is contained in:
parent
c7a5f98e54
commit
209b914392
5 changed files with 100 additions and 5 deletions
13
Cargo.lock
generated
13
Cargo.lock
generated
|
|
@ -42,7 +42,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index"
|
|||
checksum = "40ac3d0c0a542d0ab5521211f873f62706a7136df415676f676d347e5a41dd80"
|
||||
dependencies = [
|
||||
"bitflags",
|
||||
"embedded-hal",
|
||||
"embedded-hal 0.2.7",
|
||||
"nb 1.1.0",
|
||||
"vcell",
|
||||
]
|
||||
|
|
@ -71,7 +71,7 @@ dependencies = [
|
|||
"bare-metal 0.2.5",
|
||||
"bitfield",
|
||||
"critical-section",
|
||||
"embedded-hal",
|
||||
"embedded-hal 0.2.7",
|
||||
"volatile-register",
|
||||
]
|
||||
|
||||
|
|
@ -154,6 +154,12 @@ dependencies = [
|
|||
"void",
|
||||
]
|
||||
|
||||
[[package]]
|
||||
name = "embedded-hal"
|
||||
version = "1.0.0"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "361a90feb7004eca4019fb28352a9465666b24f840f5c3cddf0ff13920590b89"
|
||||
|
||||
[[package]]
|
||||
name = "embedded-time"
|
||||
version = "0.12.1"
|
||||
|
|
@ -217,6 +223,7 @@ version = "0.1.0"
|
|||
dependencies = [
|
||||
"cortex-m",
|
||||
"cortex-m-rt",
|
||||
"embedded-hal 1.0.0",
|
||||
"panic-halt",
|
||||
"stm32f3xx-hal",
|
||||
]
|
||||
|
|
@ -393,7 +400,7 @@ dependencies = [
|
|||
"cortex-m-rt",
|
||||
"critical-section",
|
||||
"embedded-dma",
|
||||
"embedded-hal",
|
||||
"embedded-hal 0.2.7",
|
||||
"embedded-time",
|
||||
"enumset",
|
||||
"nb 1.1.0",
|
||||
|
|
|
|||
|
|
@ -8,6 +8,7 @@ version = "0.1.0"
|
|||
[dependencies]
|
||||
cortex-m = {version = "0.7.7", features = ["critical-section-single-core"]}
|
||||
cortex-m-rt = "0.7.5"
|
||||
embedded-hal = "1.0.0"
|
||||
panic-halt = "1.0.0"
|
||||
|
||||
[dependencies.stm32f3xx-hal]
|
||||
|
|
|
|||
0
openocd.cfg
Normal file → Executable file
0
openocd.cfg
Normal file → Executable file
0
openocd.gdb
Normal file → Executable file
0
openocd.gdb
Normal file → Executable file
91
src/main.rs
91
src/main.rs
|
|
@ -1,9 +1,96 @@
|
|||
#![no_std]
|
||||
#![no_main]
|
||||
use core::ptr::write_volatile;
|
||||
|
||||
extern crate panic_halt;
|
||||
use cortex_m_rt::entry;
|
||||
use panic_halt as _;
|
||||
use hal::prelude::*;
|
||||
use stm32f3xx_hal as hal;
|
||||
|
||||
#[entry]
|
||||
fn main() -> ! {
|
||||
let sp = hal::pac::Peripherals::take().unwrap();
|
||||
let mut core_periphrals = hal::pac::CorePeripherals::take().unwrap();
|
||||
|
||||
let mut rcc = sp.RCC.constrain();
|
||||
let mut flash = sp.FLASH.constrain();
|
||||
let clocks = rcc.cfgr.freeze(&mut flash.acr);
|
||||
|
||||
let mut gpioa = sp.GPIOA.split(&mut rcc.ahb);
|
||||
let mut led = gpioa
|
||||
.pa5
|
||||
.into_push_pull_output(&mut gpioa.moder, &mut gpioa.otyper);
|
||||
|
||||
let mut gpioc = sp.GPIOC.split(&mut rcc.ahb);
|
||||
let button = gpioc.pc13.into_input(&mut gpioc.moder);
|
||||
|
||||
let reload = clocks.sysclk().0 / 8;
|
||||
|
||||
hal::pac::SYST::set_reload(&mut core_periphrals.SYST, reload - 1);
|
||||
hal::pac::SYST::clear_current(&mut core_periphrals.SYST);
|
||||
hal::pac::SYST::enable_counter(&mut core_periphrals.SYST);
|
||||
|
||||
let mut last_led_state = false;
|
||||
let mut last_button_state = false;
|
||||
|
||||
//led.set_high().unwrap();
|
||||
led.set_low().unwrap();
|
||||
|
||||
loop {
|
||||
let mut led_state = last_led_state;
|
||||
|
||||
let button_state = if button.is_low().unwrap() {
|
||||
led_state = true;
|
||||
core_periphrals.SYST.clear_current();
|
||||
true
|
||||
} else {
|
||||
false
|
||||
};
|
||||
|
||||
if hal::pac::SYST::has_wrapped(&mut core_periphrals.SYST) {
|
||||
led_state = !last_led_state;
|
||||
}
|
||||
|
||||
if led_state != last_led_state || button_state != last_button_state {
|
||||
if button_state != last_button_state {
|
||||
if button_state {
|
||||
led.set_high();
|
||||
} else {
|
||||
led.set_low();
|
||||
}
|
||||
} else {
|
||||
if led_state {
|
||||
led.set_high();
|
||||
} else {
|
||||
led.set_low();
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
last_button_state = button_state;
|
||||
last_led_state = led_state;
|
||||
|
||||
/*
|
||||
let mut button_state = last_button_state;
|
||||
let mut led_state = last_led_state;
|
||||
|
||||
if button.is_low().unwrap() {
|
||||
button_state = true;
|
||||
led_state = true;
|
||||
} else {
|
||||
button_state = false;
|
||||
led_state = false;
|
||||
}
|
||||
|
||||
if last_led_state != led_state && button_state != last_button_state {
|
||||
if led_state {
|
||||
led.set_high();
|
||||
} else {
|
||||
led.set_low();
|
||||
}
|
||||
}
|
||||
|
||||
last_button_state = button_state;
|
||||
last_led_state = led_state;
|
||||
*/
|
||||
}
|
||||
}
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue