gpiov1: Do not call set_speed for AFType::Input
Co-authored-by: Toby Fleming <tobywf@users.noreply.github.com>
This commit is contained in:
		
							parent
							
								
									8226904b34
								
							
						
					
					
						commit
						bfc5929f50
					
				| @ -661,6 +661,11 @@ pub(crate) trait SealedPin { | ||||
|         self.set_as_analog(); | ||||
|     } | ||||
| 
 | ||||
|     /// Sets the speed of the output pin.
 | ||||
|     ///
 | ||||
|     /// This should never be called for AFType::Input on the STM32F1 series, since MODE and
 | ||||
|     /// CNF bits are not independent. If the CNF bits are altered afterwards as well, this
 | ||||
|     /// will put the pin into output mode.
 | ||||
|     #[inline] | ||||
|     fn set_speed(&self, speed: Speed) { | ||||
|         let pin = self._pin() as usize; | ||||
|  | ||||
| @ -106,7 +106,11 @@ macro_rules! new_pin { | ||||
|     ($name:ident, $aftype:expr, $speed:expr, $pull:expr) => {{ | ||||
|         let pin = $name.into_ref(); | ||||
|         pin.set_as_af_pull(pin.af_num(), $aftype, $pull); | ||||
|         pin.set_speed($speed); | ||||
|         // Do not call set_speed on AFType::Input, as MODE and CNF bits are not independent
 | ||||
|         // for gpio_v1
 | ||||
|         if $aftype != crate::gpio::low_level::AFType::Input { | ||||
|             pin.set_speed($speed); | ||||
|         } | ||||
|         Some(pin.map_into()) | ||||
|     }}; | ||||
| } | ||||
|  | ||||
		Loading…
	
	
			
			x
			
			
		
	
		Reference in New Issue
	
	Block a user