Skip to main content

I2C0

Struct I2C0 

#[non_exhaustive]
pub struct I2C0<'a> { /* private fields */ }
Expand description

I2C0 peripheral singleton

Implementations§

§

impl I2C0<'_>

pub unsafe fn steal() -> I2C0<'_>

Unsafely create an instance of this peripheral out of thin air.

§Safety

You must ensure that you’re only using one instance of this type at a time.

pub unsafe fn clone_unchecked(&self) -> I2C0<'_>

Unsafely clone this peripheral reference.

§Safety

You must ensure that you’re only using one instance of this type at a time.

pub fn reborrow(&mut self) -> I2C0<'_>

Creates a new peripheral reference with a shorter lifetime.

Use this method if you would like to keep working with the peripheral after you dropped the driver that consumes this.

pub fn bind_peri_interrupt(&self, handler: InterruptHandler)

Available on crate features unstable only.

Binds an interrupt handler to the corresponding interrupt for this peripheral, and enables the interrupt.

This function is a very low-level way to work with interrupts. Unless you're writing drivers, this is probably not the interrupt API you want to use.
§Stability

This API is marked as unstable and is only available when the unstable crate feature is enabled. This comes with no stability guarantees, and could be changed or removed at any time.

pub fn enable_peri_interrupt(&self, priority: Priority)

Enables the I2C_EXT0 peripheral interrupt on the given priority level.

This function is a very low-level way to work with interrupts. Unless you're writing drivers, this is probably not the interrupt API you want to use.

Note that a suitable interrupt handler needs to be set up before the first interrupt is triggered, otherwise the default handler will panic. To set up an interrupt handler, use Self::bind_peri_interrupt or create a function that has the same (non-mangled) name as the interrupt you want to handle.

§Examples
use esp_hal::interrupt::Priority;

#[unsafe(no_mangle)]
unsafe extern "C" fn I2C_EXT0() {
    // do something
}

peripherals.I2C0.enable_peri_interrupt(Priority::Priority1);
peripherals.I2C0.disable_peri_interrupt_on_all_cores();

pub fn disable_peri_interrupt(&self)

Available on crate features unstable only.

Disables the I2C_EXT0 peripheral interrupt handler on the current CPU core.

This function is a very low-level way to work with interrupts. Unless you're writing drivers, this is probably not the interrupt API you want to use.
# Stability

This API is marked as unstable and is only available when the unstable crate feature is enabled. This comes with no stability guarantees, and could be changed or removed at any time.

pub fn disable_peri_interrupt_on_all_cores(&self)

Disables the I2C_EXT0 peripheral interrupt handler on all cores.

This function is a very low-level way to work with interrupts. Unless you're writing drivers, this is probably not the interrupt API you want to use.
§

impl I2C0<'_>

pub const PTR: *const <Periph<RegisterBlock, 1610629120> as Deref>::Target = pac::I2C0::PTR

Available on crate features unstable only.

Pointer to the register block

§Stability

This API is marked as unstable and is only available when the unstable crate feature is enabled. This comes with no stability guarantees, and could be changed or removed at any time.

pub const fn ptr() -> *const <Periph<RegisterBlock, 1610629120> as Deref>::Target

Available on crate features unstable only.

Return the pointer to the register block

§Stability

This API is marked as unstable and is only available when the unstable crate feature is enabled. This comes with no stability guarantees, and could be changed or removed at any time.

pub const fn regs<'a>() -> &'a <Periph<RegisterBlock, 1610629120> as Deref>::Target

Available on crate features unstable only.

Return a reference to the register block

§Stability

This API is marked as unstable and is only available when the unstable crate feature is enabled. This comes with no stability guarantees, and could be changed or removed at any time.

pub fn register_block( &self, ) -> &<Periph<RegisterBlock, 1610629120> as Deref>::Target

Available on crate features unstable only.

Return a reference to the register block

§Stability

This API is marked as unstable and is only available when the unstable crate feature is enabled. This comes with no stability guarantees, and could be changed or removed at any time.

Trait Implementations§

§

impl<'a> Debug for I2C0<'a>

§

fn fmt(&self, f: &mut Formatter<'_>) -> Result<(), Error>

Formats the value using the given formatter. Read more
§

impl Instance for I2C0<'_>

§

impl<'d> TryFrom<AnyI2c<'d>> for I2C0<'d>

Available on i2c_master_i2c0 only.
§

type Error = AnyI2c<'d>

The type returned in the event of a conversion error.
§

fn try_from(any: AnyI2c<'d>) -> Result<I2C0<'d>, AnyI2c<'d>>

Performs the conversion.

Auto Trait Implementations§

§

impl<'a> !UnwindSafe for I2C0<'a>

§

impl<'a> Freeze for I2C0<'a>

§

impl<'a> RefUnwindSafe for I2C0<'a>

§

impl<'a> Send for I2C0<'a>

§

impl<'a> Sync for I2C0<'a>

§

impl<'a> Unpin for I2C0<'a>

§

impl<'a> UnsafeUnpin for I2C0<'a>

Blanket Implementations§

Source§

impl<T> Any for T
where T: 'static + ?Sized,

Source§

fn type_id(&self) -> TypeId

Gets the TypeId of self. Read more
Source§

impl<T> Borrow<T> for T
where T: ?Sized,

Source§

fn borrow(&self) -> &T

Immutably borrows from an owned value. Read more
Source§

impl<T> BorrowMut<T> for T
where T: ?Sized,

Source§

fn borrow_mut(&mut self) -> &mut T

Mutably borrows from an owned value. Read more
Source§

impl<T> From<T> for T

Source§

fn from(t: T) -> T

Returns the argument unchanged.

§

impl<T, W> HasTypeWitness<W> for T
where W: MakeTypeWitness<Arg = T>, T: ?Sized,

§

const WITNESS: W = W::MAKE

A constant of the type witness
§

impl<T> Identity for T
where T: ?Sized,

§

const TYPE_EQ: TypeEq<T, <T as Identity>::Type> = TypeEq::NEW

Proof that Self is the same type as Self::Type, provides methods for casting between Self and Self::Type.
§

type Type = T

The same type as Self, used to emulate type equality bounds (T == U) with associated type equality constraints (T: Identity<Type = U>).
Source§

impl<T, U> Into<U> for T
where U: From<T>,

Source§

fn into(self) -> U

Calls U::from(self).

That is, this conversion is whatever the implementation of From<T> for U chooses to do.

Source§

impl<T> Same for T

Source§

type Output = T

Should always be Self
Source§

impl<T, U> TryFrom<U> for T
where U: Into<T>,

Source§

type Error = !

The type returned in the event of a conversion error.
Source§

fn try_from(value: U) -> Result<T, !>

Performs the conversion.
Source§

impl<T, U> TryInto<U> for T
where U: TryFrom<T>,

Source§

type Error = <U as TryFrom<T>>::Error

The type returned in the event of a conversion error.
Source§

fn try_into(self) -> Result<U, <U as TryFrom<T>>::Error>

Performs the conversion.