Struct Port

Source
pub struct Port<'a> { /* private fields */ }
Expand description

GPIO port that manages 32 pins.

The SAM4L divides GPIOs into ports that each manage a group of 32 individual pins. There are up to three ports, depending particular chip (see1).

In general, the kernel and applications should care about individual GPIOPins. However, mirroring the hardware grouping in Rust is useful, internally, for correctly handling and dispatching interrupts.

The port itself is a set of 32-bit memory-mapped I/O registers. Each register has a bit for each pin in the port. Pins are, thus, named by their port and offset bit in each register that controls is. For example, the first port has pins called “PA00” thru “PA31”.


  1. SAM4L datasheet section 23.8 (page 573): “Module Configuration” for GPIO 

Implementations§

Source§

impl Port<'_>

Source

pub const fn new_port_a() -> Self

Source

pub const fn new_port_b() -> Self

Source

pub const fn new_port_c() -> Self

Source

pub fn handle_interrupt(&self)

Trait Implementations§

Source§

impl<'a> Index<usize> for Port<'a>

Source§

type Output = GPIOPin<'a>

The returned type after indexing.
Source§

fn index(&self, index: usize) -> &GPIOPin<'a>

Performs the indexing (container[index]) operation. Read more
Source§

impl<'a> IndexMut<usize> for Port<'a>

Source§

fn index_mut(&mut self, index: usize) -> &mut GPIOPin<'a>

Performs the mutable indexing (container[index]) operation. Read more

Auto Trait Implementations§

§

impl<'a> !Freeze for Port<'a>

§

impl<'a> !RefUnwindSafe for Port<'a>

§

impl<'a> !Send for Port<'a>

§

impl<'a> !Sync for Port<'a>

§

impl<'a> Unpin for Port<'a>

§

impl<'a> !UnwindSafe for Port<'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.

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, U> TryFrom<U> for T
where U: Into<T>,

Source§

type Error = Infallible

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

fn try_from(value: U) -> Result<T, <T as TryFrom<U>>::Error>

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.