Merge branch 'implement-uart' of ssh://github.com/xoviat/embassy into implement-uart
This commit is contained in:
		
						commit
						c07f7467a0
					
				| @ -28,8 +28,8 @@ async fn run(dp: stm32::Peripherals, cp: cortex_m::Peripherals) { | |||||||
|         .pclk1(24.mhz()) |         .pclk1(24.mhz()) | ||||||
|         .freeze(); |         .freeze(); | ||||||
| 
 | 
 | ||||||
|     unsafe { |     let mut serial = unsafe { | ||||||
|         let mut serial = serial::Serial::new( |         serial::Serial::new( | ||||||
|             gpioa.pa9.into_alternate_af7(), |             gpioa.pa9.into_alternate_af7(), | ||||||
|             gpioa.pa10.into_alternate_af7(), |             gpioa.pa10.into_alternate_af7(), | ||||||
|             interrupt::take!(DMA2_STREAM7), |             interrupt::take!(DMA2_STREAM7), | ||||||
| @ -40,12 +40,12 @@ async fn run(dp: stm32::Peripherals, cp: cortex_m::Peripherals) { | |||||||
|             config::Parity::ParityNone, |             config::Parity::ParityNone, | ||||||
|             9600.bps(), |             9600.bps(), | ||||||
|             clocks, |             clocks, | ||||||
|         ); |         ) | ||||||
|  |     }; | ||||||
|     let buf = singleton!(: [u8; 30] = [0; 30]).unwrap(); |     let buf = singleton!(: [u8; 30] = [0; 30]).unwrap(); | ||||||
| 
 | 
 | ||||||
|     buf[5] = 0x01; |     buf[5] = 0x01; | ||||||
|     serial.send(buf).await; |     serial.send(buf).await; | ||||||
|     } |  | ||||||
| } | } | ||||||
| 
 | 
 | ||||||
| static EXECUTOR: Forever<Executor> = Forever::new(); | static EXECUTOR: Forever<Executor> = Forever::new(); | ||||||
|  | |||||||
| @ -152,8 +152,7 @@ impl Uart for Serial<USART1, Stream7<DMA2>, Stream2<DMA2>> { | |||||||
|     fn send<'a>(&'a mut self, buf: &'a [u8]) -> Self::SendFuture<'a> { |     fn send<'a>(&'a mut self, buf: &'a [u8]) -> Self::SendFuture<'a> { | ||||||
|         unsafe { INSTANCE = self }; |         unsafe { INSTANCE = self }; | ||||||
| 
 | 
 | ||||||
|         unsafe { |         let static_buf = unsafe { core::mem::transmute::<&'a [u8], &'static mut [u8]>(buf) }; | ||||||
|             let static_buf = core::mem::transmute::<&'a [u8], &'static mut [u8]>(buf); |  | ||||||
| 
 | 
 | ||||||
|         let tx_stream = self.tx_stream.take().unwrap(); |         let tx_stream = self.tx_stream.take().unwrap(); | ||||||
|         let usart = self.usart.take().unwrap(); |         let usart = self.usart.take().unwrap(); | ||||||
| @ -184,7 +183,6 @@ impl Uart for Serial<USART1, Stream7<DMA2>, Stream2<DMA2>> { | |||||||
|             Ok(()) |             Ok(()) | ||||||
|         } |         } | ||||||
|     } |     } | ||||||
|     } |  | ||||||
| 
 | 
 | ||||||
|     /// Receives serial data.
 |     /// Receives serial data.
 | ||||||
|     ///
 |     ///
 | ||||||
| @ -199,8 +197,7 @@ impl Uart for Serial<USART1, Stream7<DMA2>, Stream2<DMA2>> { | |||||||
|     fn receive<'a>(&'a mut self, buf: &'a mut [u8]) -> Self::ReceiveFuture<'a> { |     fn receive<'a>(&'a mut self, buf: &'a mut [u8]) -> Self::ReceiveFuture<'a> { | ||||||
|         unsafe { INSTANCE = self }; |         unsafe { INSTANCE = self }; | ||||||
| 
 | 
 | ||||||
|         unsafe { |         let static_buf = unsafe { core::mem::transmute::<&'a mut [u8], &'static mut [u8]>(buf) }; | ||||||
|             let static_buf = core::mem::transmute::<&'a mut [u8], &'static mut [u8]>(buf); |  | ||||||
|         let rx_stream = self.rx_stream.take().unwrap(); |         let rx_stream = self.rx_stream.take().unwrap(); | ||||||
|         let usart = self.usart.take().unwrap(); |         let usart = self.usart.take().unwrap(); | ||||||
|         STATE.rx_int.reset(); |         STATE.rx_int.reset(); | ||||||
| @ -219,11 +216,10 @@ impl Uart for Serial<USART1, Stream7<DMA2>, Stream2<DMA2>> { | |||||||
|             self.rx_int.enable(); |             self.rx_int.enable(); | ||||||
|             rx_transfer.start(|_usart| {}); |             rx_transfer.start(|_usart| {}); | ||||||
|             STATE.rx_int.wait().await; |             STATE.rx_int.wait().await; | ||||||
|                 let (rx_stream, usart, buf, _) = rx_transfer.free(); |             let (rx_stream, usart, _, _) = rx_transfer.free(); | ||||||
|             self.rx_stream.replace(rx_stream); |             self.rx_stream.replace(rx_stream); | ||||||
|             self.usart.replace(usart); |             self.usart.replace(usart); | ||||||
|             Ok(()) |             Ok(()) | ||||||
|         } |         } | ||||||
|     } |     } | ||||||
|     } |  | ||||||
| } | } | ||||||
|  | |||||||
		Loading…
	
	
			
			x
			
			
		
	
		Reference in New Issue
	
	Block a user