1
1
#![ no_main]
2
2
#![ no_std]
3
3
4
- use panic_rtt_target as _;
5
-
6
4
use stm32g4xx_hal:: {
7
5
//delay::{DelayExt, SYSTDelayExt},
8
6
gpio:: { gpioc, ExtiPin , GpioExt , Input , PullDown , SignalEdge } ,
@@ -18,24 +16,27 @@ use cortex_m::{asm::wfi, interrupt::Mutex};
18
16
use cortex_m_rt:: entry;
19
17
use embedded_hal:: digital:: v2:: OutputPin ;
20
18
21
- use rtt_target:: { rprintln, rtt_init_print} ;
22
-
23
19
type ButtonPin = gpioc:: PC13 < Input < PullDown > > ;
24
20
25
21
// Make LED pin globally available
26
22
static G_BUTTON : Mutex < RefCell < Option < ButtonPin > > > = Mutex :: new ( RefCell :: new ( None ) ) ;
27
23
static G_LED_ON : AtomicBool = AtomicBool :: new ( true ) ;
28
24
25
+ #[ macro_use]
26
+ mod utils;
27
+
28
+ use utils:: logger:: println;
29
+
29
30
// Define an interupt handler, i.e. function to call when interrupt occurs.
30
31
// This specific interrupt will "trip" when the button is pressed
31
32
#[ interrupt]
32
33
fn EXTI15_10 ( ) {
33
34
static mut BUTTON : Option < ButtonPin > = None ;
34
35
35
- rprintln ! ( "Got IRQ!" ) ;
36
+ println ! ( "Got IRQ!" ) ;
36
37
37
38
let button = BUTTON . get_or_insert_with ( || {
38
- rprintln ! ( "Transfer Button into EXTI interrupt" ) ;
39
+ println ! ( "Transfer Button into EXTI interrupt" ) ;
39
40
cortex_m:: interrupt:: free ( |cs| {
40
41
// Move LED pin here, leaving a None in its place
41
42
G_BUTTON . borrow ( cs) . replace ( None ) . unwrap ( )
@@ -49,45 +50,43 @@ fn EXTI15_10() {
49
50
50
51
#[ entry]
51
52
fn main ( ) -> ! {
52
- rtt_init_print ! ( ) ;
53
-
54
53
let mut dp = stm32:: Peripherals :: take ( ) . expect ( "cannot take peripherals" ) ;
55
54
let mut rcc = dp. RCC . constrain ( ) ;
56
55
let mut syscfg = dp. SYSCFG . constrain ( ) ;
57
56
58
- rprintln ! ( "Led Init" ) ;
57
+ println ! ( "Led Init" ) ;
59
58
// Configure PA5 pin to blink LED
60
59
let gpioa = dp. GPIOA . split ( & mut rcc) ;
61
60
let mut led = gpioa. pa5 . into_push_pull_output ( ) ;
62
61
63
- rprintln ! ( "Button Init" ) ;
62
+ println ! ( "Button Init" ) ;
64
63
let gpioc = dp. GPIOC . split ( & mut rcc) ;
65
64
let mut button = gpioc. pc13 . into_pull_down_input ( ) ;
66
65
button. make_interrupt_source ( & mut syscfg) ;
67
66
button. trigger_on_edge ( & mut dp. EXTI , SignalEdge :: Rising ) ;
68
67
button. enable_interrupt ( & mut dp. EXTI ) ;
69
68
70
- rprintln ! ( "Set Button into Global Mutex" ) ;
69
+ println ! ( "Set Button into Global Mutex" ) ;
71
70
// Move the pin into our global storage
72
71
cortex_m:: interrupt:: free ( |cs| * G_BUTTON . borrow ( cs) . borrow_mut ( ) = Some ( button) ) ;
73
72
74
- rprintln ! ( "Enable EXTI Interrupt" ) ;
73
+ println ! ( "Enable EXTI Interrupt" ) ;
75
74
unsafe {
76
75
cortex_m:: peripheral:: NVIC :: unmask ( Interrupt :: EXTI15_10 ) ;
77
76
}
78
77
79
78
//let mut delay = cp.SYST.delay(&rcc.clocks);
80
79
81
- rprintln ! ( "Start Loop" ) ;
80
+ println ! ( "Start Loop" ) ;
82
81
loop {
83
82
wfi ( ) ;
84
- rprintln ! ( "Check" ) ;
83
+ println ! ( "Check" ) ;
85
84
86
85
if G_LED_ON . load ( Ordering :: Relaxed ) {
87
- rprintln ! ( "Turn Led On!" ) ;
86
+ println ! ( "Turn Led On!" ) ;
88
87
led. set_high ( ) . unwrap ( ) ;
89
88
} else {
90
- rprintln ! ( "Turn Led Off!" ) ;
89
+ println ! ( "Turn Led Off!" ) ;
91
90
led. set_low ( ) . unwrap ( ) ;
92
91
}
93
92
}
0 commit comments