mirror of
				https://github.com/esp-rs/esp-hal.git
				synced 2025-10-30 20:32:55 +00:00 
			
		
		
		
	 be184a552d
			
		
	
	
		be184a552d
		
			
		
	
	
	
	
		
			
			* CS impl * use CS Mutex in C3 examples * use CS Mutex in S2 examples * Update esp32 example * run fmt * Update S3 examples * Remove uses of unsafe where no longer required * use esp_backtrace in examples * fix import & fmt once more * Bump MSRV to 1.60.0 Co-authored-by: Jesse Braham <jesse@beta7.io>
		
			
				
	
	
		
			54 lines
		
	
	
		
			1.5 KiB
		
	
	
	
		
			Rust
		
	
	
	
	
	
			
		
		
	
	
			54 lines
		
	
	
		
			1.5 KiB
		
	
	
	
		
			Rust
		
	
	
	
	
	
| //! Connect a potentiometer to PIN25 and see the read values change when
 | |
| //! rotating the shaft. Alternatively you could also connect the PIN to GND or
 | |
| //! 3V3 to see the maximum and minimum raw values read.
 | |
| 
 | |
| #![no_std]
 | |
| #![no_main]
 | |
| 
 | |
| use esp32_hal::{
 | |
|     adc::{AdcConfig, Attenuation, ADC, ADC2},
 | |
|     clock::ClockControl,
 | |
|     gpio::IO,
 | |
|     pac::Peripherals,
 | |
|     prelude::*,
 | |
|     timer::TimerGroup,
 | |
|     Delay,
 | |
|     Rtc,
 | |
| };
 | |
| use esp_backtrace as _;
 | |
| use esp_println::println;
 | |
| use xtensa_lx_rt::entry;
 | |
| 
 | |
| #[entry]
 | |
| fn main() -> ! {
 | |
|     let peripherals = Peripherals::take().unwrap();
 | |
|     let system = peripherals.DPORT.split();
 | |
|     let clocks = ClockControl::boot_defaults(system.clock_control).freeze();
 | |
| 
 | |
|     let timer_group0 = TimerGroup::new(peripherals.TIMG0, &clocks);
 | |
|     let mut wdt = timer_group0.wdt;
 | |
|     let mut rtc = Rtc::new(peripherals.RTC_CNTL);
 | |
| 
 | |
|     // Disable MWDT and RWDT (Watchdog) flash boot protection
 | |
|     wdt.disable();
 | |
|     rtc.rwdt.disable();
 | |
| 
 | |
|     let io = IO::new(peripherals.GPIO, peripherals.IO_MUX);
 | |
|     let mut pin25 = io.pins.gpio25.into_analog();
 | |
| 
 | |
|     // Create ADC instances
 | |
|     let analog = peripherals.SENS.split();
 | |
| 
 | |
|     let mut adc2_config = AdcConfig::new();
 | |
|     adc2_config.enable_pin(&pin25, Attenuation::Attenuation11dB);
 | |
|     let mut adc2 = ADC::<ADC2>::adc(analog.adc2, adc2_config).unwrap();
 | |
| 
 | |
|     let mut delay = Delay::new(&clocks);
 | |
| 
 | |
|     loop {
 | |
|         let pin25_value: u16 = nb::block!(adc2.read(&mut pin25)).unwrap();
 | |
|         println!("PIN25 ADC reading = {}", pin25_value);
 | |
|         delay.delay_ms(1500u32);
 | |
|     }
 | |
| }
 |