@@ -14,7 +14,7 @@ This can be applied for all the 52 interrupts declared in e310x/interrupts.rs.
1414
1515extern crate panic_halt;
1616
17- use hifive1:: { hal :: core :: plic :: Priority , hal:: prelude:: * , hal:: DeviceResources , pin, sprintln} ;
17+ use hifive1:: { hal:: prelude:: * , hal:: DeviceResources , pin, sprintln} ;
1818
1919use riscv:: register:: mstatus;
2020use riscv_rt:: entry;
@@ -65,18 +65,11 @@ fn main() -> ! {
6565 /* Unsafe block */
6666 unsafe {
6767 /* Get raw PLIC pointer */
68- let rplic = & * hifive1:: hal:: e310x:: PLIC :: ptr ( ) ;
69- /* Index 7 is the GPIO0 interrupt source start */
70- let gpio0_block_start = 7 ;
71- for ( i, p) in rplic. priority . iter ( ) . enumerate ( ) {
72- /* set priority of our interrupt */
73- if i == gpio0_block_start + ( GPIO_N + 1 ) {
74- p. write ( |w| w. bits ( 0xffffffff ) ) ;
75- } else {
76- /* Clear all other priorities */
77- p. write ( |w| w. bits ( 0 ) ) ;
78- }
79- }
68+ //let rplic = &*hifive1::hal::e310x::PLIC::ptr();
69+ hifive1:: hal:: e310x:: PLIC :: set_priority (
70+ & mut plic,
71+ hifive1:: hal:: e310x:: Interrupt :: GPIO4 ,
72+ e310x_hal:: e310x:: Priority :: P7 ) ;
8073 let gpio_block = & * hifive1:: hal:: e310x:: GPIO0 :: ptr ( ) ;
8174 /* Enable GPIO fall interrupts */
8275 gpio_block. fall_ie . write ( |w| w. bits ( 1 << GPIO_N ) ) ;
@@ -87,8 +80,8 @@ fn main() -> ! {
8780
8881 /* Activate global interrupts (mie bit) */
8982 mstatus:: set_mie ( ) ;
90- plic. threshold . set ( Priority :: P1 ) ;
91- plic. mext . enable ( ) ;
83+ plic. set_threshold ( e310x_hal :: e310x :: Priority :: P1 ) ;
84+ plic. enable_interrupt ( hifive1 :: hal :: e310x :: Interrupt :: GPIO4 ) ;
9285 }
9386 loop { }
9487}
0 commit comments