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"
|
checksum = "40ac3d0c0a542d0ab5521211f873f62706a7136df415676f676d347e5a41dd80"
|
||||||
dependencies = [
|
dependencies = [
|
||||||
"bitflags",
|
"bitflags",
|
||||||
"embedded-hal",
|
"embedded-hal 0.2.7",
|
||||||
"nb 1.1.0",
|
"nb 1.1.0",
|
||||||
"vcell",
|
"vcell",
|
||||||
]
|
]
|
||||||
|
|
@ -71,7 +71,7 @@ dependencies = [
|
||||||
"bare-metal 0.2.5",
|
"bare-metal 0.2.5",
|
||||||
"bitfield",
|
"bitfield",
|
||||||
"critical-section",
|
"critical-section",
|
||||||
"embedded-hal",
|
"embedded-hal 0.2.7",
|
||||||
"volatile-register",
|
"volatile-register",
|
||||||
]
|
]
|
||||||
|
|
||||||
|
|
@ -154,6 +154,12 @@ dependencies = [
|
||||||
"void",
|
"void",
|
||||||
]
|
]
|
||||||
|
|
||||||
|
[[package]]
|
||||||
|
name = "embedded-hal"
|
||||||
|
version = "1.0.0"
|
||||||
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||||
|
checksum = "361a90feb7004eca4019fb28352a9465666b24f840f5c3cddf0ff13920590b89"
|
||||||
|
|
||||||
[[package]]
|
[[package]]
|
||||||
name = "embedded-time"
|
name = "embedded-time"
|
||||||
version = "0.12.1"
|
version = "0.12.1"
|
||||||
|
|
@ -217,6 +223,7 @@ version = "0.1.0"
|
||||||
dependencies = [
|
dependencies = [
|
||||||
"cortex-m",
|
"cortex-m",
|
||||||
"cortex-m-rt",
|
"cortex-m-rt",
|
||||||
|
"embedded-hal 1.0.0",
|
||||||
"panic-halt",
|
"panic-halt",
|
||||||
"stm32f3xx-hal",
|
"stm32f3xx-hal",
|
||||||
]
|
]
|
||||||
|
|
@ -393,7 +400,7 @@ dependencies = [
|
||||||
"cortex-m-rt",
|
"cortex-m-rt",
|
||||||
"critical-section",
|
"critical-section",
|
||||||
"embedded-dma",
|
"embedded-dma",
|
||||||
"embedded-hal",
|
"embedded-hal 0.2.7",
|
||||||
"embedded-time",
|
"embedded-time",
|
||||||
"enumset",
|
"enumset",
|
||||||
"nb 1.1.0",
|
"nb 1.1.0",
|
||||||
|
|
|
||||||
|
|
@ -8,6 +8,7 @@ version = "0.1.0"
|
||||||
[dependencies]
|
[dependencies]
|
||||||
cortex-m = {version = "0.7.7", features = ["critical-section-single-core"]}
|
cortex-m = {version = "0.7.7", features = ["critical-section-single-core"]}
|
||||||
cortex-m-rt = "0.7.5"
|
cortex-m-rt = "0.7.5"
|
||||||
|
embedded-hal = "1.0.0"
|
||||||
panic-halt = "1.0.0"
|
panic-halt = "1.0.0"
|
||||||
|
|
||||||
[dependencies.stm32f3xx-hal]
|
[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_std]
|
||||||
#![no_main]
|
#![no_main]
|
||||||
use core::ptr::write_volatile;
|
|
||||||
|
extern crate panic_halt;
|
||||||
use cortex_m_rt::entry;
|
use cortex_m_rt::entry;
|
||||||
use panic_halt as _;
|
use hal::prelude::*;
|
||||||
|
use stm32f3xx_hal as hal;
|
||||||
|
|
||||||
#[entry]
|
#[entry]
|
||||||
fn main() -> ! {
|
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