6
6
7
7
use core:: ops:: Range ;
8
8
9
- use panic_semihosting as _ ;
9
+ use rtt_target :: { rprint , rprintln , rtt_init_print } ;
10
10
11
11
use cortex_m_rt:: entry;
12
- use cortex_m_semihosting:: { hprint, hprintln} ;
13
12
14
- use stm32f4xx_hal:: {
15
- self as hal,
16
- gpio:: GpioExt ,
17
- i2c:: { DutyCycle , I2c } ,
18
- pac,
19
- prelude:: * ,
20
- } ;
13
+ use stm32f4xx_hal:: { self as hal, gpio:: GpioExt , i2c:: I2c , pac, prelude:: * } ;
21
14
22
15
const VALID_ADDR_RANGE : Range < u8 > = 0x08 ..0x78 ;
23
16
24
17
#[ entry]
25
18
fn main ( ) -> ! {
19
+ rtt_init_print ! ( ) ;
26
20
let dp = pac:: Peripherals :: take ( ) . unwrap ( ) ;
27
21
28
22
let rcc = dp. RCC . constrain ( ) ;
@@ -36,31 +30,39 @@ fn main() -> ! {
36
30
let mut i2c = I2c :: new (
37
31
dp. I2C1 ,
38
32
( scl, sda) ,
39
- hal:: i2c:: Mode :: standard ( 100_000 . Hz ( ) ) ,
33
+ hal:: i2c:: Mode :: standard ( 100 . kHz ( ) ) ,
40
34
& clocks,
41
35
) ;
42
36
43
- hprintln ! ( "Start i2c scanning..." ) ;
44
- hprintln ! ( ) ;
37
+ rprintln ! ( "Start i2c scanning..." ) ;
38
+ rprintln ! ( ) ;
45
39
46
40
for addr in 0x00_u8 ..0x80 {
47
41
// Write the empty array and check the slave response.
48
42
let byte: [ u8 ; 1 ] = [ 0 ; 1 ] ;
49
43
if VALID_ADDR_RANGE . contains ( & addr) && i2c. write ( addr, & byte) . is_ok ( ) {
50
- hprint ! ( "{:02x}" , addr) ;
44
+ rprint ! ( "{:02x}" , addr) ;
51
45
} else {
52
- hprint ! ( ".." ) ;
46
+ rprint ! ( ".." ) ;
53
47
}
54
48
if addr % 0x10 == 0x0F {
55
- hprintln ! ( ) ;
49
+ rprintln ! ( ) ;
56
50
} else {
57
- hprint ! ( " " ) ;
51
+ rprint ! ( " " ) ;
58
52
}
59
53
}
60
54
61
- hprintln ! ( ) ;
62
- hprintln ! ( "Done!" ) ;
55
+ rprintln ! ( ) ;
56
+ rprintln ! ( "Done!" ) ;
63
57
64
58
#[ allow( clippy:: empty_loop) ]
65
59
loop { }
66
60
}
61
+
62
+ use core:: panic:: PanicInfo ;
63
+ #[ inline( never) ]
64
+ #[ panic_handler]
65
+ fn panic ( info : & PanicInfo ) -> ! {
66
+ rprintln ! ( "{}" , info) ;
67
+ loop { } // You might need a compiler fence in here.
68
+ }
0 commit comments