@@ -71,7 +71,8 @@ use self::{
7171use crate :: {
7272 clock:: Clocks ,
7373 gpio:: OutputPin ,
74- system:: { Peripheral , PeripheralClockControl } ,
74+ peripheral:: { Peripheral , PeripheralRef } ,
75+ system:: { Peripheral as PeripheralEnable , PeripheralClockControl } ,
7576} ;
7677
7778pub mod channel;
@@ -84,10 +85,10 @@ pub enum LSGlobalClkSource {
8485}
8586
8687/// LEDC (LED PWM Controller)
87- pub struct LEDC < ' a > {
88- _instance : crate :: pac :: LEDC ,
89- ledc : & ' a crate :: pac:: ledc:: RegisterBlock ,
90- clock_control_config : & ' a Clocks ,
88+ pub struct LEDC < ' d > {
89+ _instance : PeripheralRef < ' d , crate :: peripherals :: LEDC > ,
90+ ledc : & ' d crate :: pac:: ledc:: RegisterBlock ,
91+ clock_control_config : & ' d Clocks ,
9192}
9293
9394#[ cfg( esp32) ]
@@ -104,14 +105,15 @@ impl Speed for HighSpeed {}
104105
105106impl Speed for LowSpeed { }
106107
107- impl < ' a > LEDC < ' a > {
108+ impl < ' d > LEDC < ' d > {
108109 /// Return a new LEDC
109110 pub fn new (
110- _instance : crate :: pac :: LEDC ,
111- clock_control_config : & ' a Clocks ,
111+ _instance : impl Peripheral < P = crate :: peripherals :: LEDC > + ' d ,
112+ clock_control_config : & ' d Clocks ,
112113 system : & mut PeripheralClockControl ,
113114 ) -> Self {
114- system. enable ( Peripheral :: Ledc ) ;
115+ crate :: into_ref!( _instance) ;
116+ system. enable ( PeripheralEnable :: Ledc ) ;
115117
116118 let ledc = unsafe { & * crate :: pac:: LEDC :: ptr ( ) } ;
117119 LEDC {
0 commit comments