blob: d8bdabf3de519702cdd369c50379095350158c5c [file] [log] [blame]
.. _module-pw_digital_io_mcuxpresso:
------------------------
pw_digital_io_mcuxpresso
------------------------
``pw_digital_io_mcuxpresso`` implements the :ref:`module-pw_digital_io` interface using
the NXP MCUXpresso SDK.
Setup
=====
Use of this module requires setting up the MCUXpresso SDK for use with Pigweed. Follow
the steps in :ref:`module-pw_build_mcuxpresso` to create a ``pw_source_set`` for an
MCUXpresso SDK. Include the GPIO and PINT driver components in this SDK definition.
This example shows what your SDK setup would look like if using an RT595 board.
.. code-block:: text
import("$dir_pw_third_party/mcuxpresso/mcuxpresso.gni")
pw_mcuxpresso_sdk("sample_project_sdk") {
manifest = "$dir_pw_third_party/mcuxpresso/evkmimxrt595/EVK-MIMXRT595_manifest_v3_8.xml"
include = [
"component.serial_manager_uart.MIMXRT595S",
"platform.drivers.lpc_gpio.MIMXRT595S",
"platform.drivers.pint.MIMXRT595S",
"project_template.evkmimxrt595.MIMXRT595S",
"utility.debug_console.MIMXRT595S",
]
}
Next, specify the ``pw_third_party_mcuxpresso_SDK`` GN global variable to specify
the name of this source set. Edit your GN args with ``gn args out``.
.. code-block:: text
pw_third_party_mcuxpresso_SDK = "//targets/mimxrt595_evk:sample_project_sdk"
Then, depend on this module in your BUILD.gn to use.
.. code-block:: text
deps = [ dir_pw_digital_io_mcuxpresso ]
Examples
========
Use ``pw::digital_io::McuxpressoDigitalIn`` and ``pw::digital_io::McuxpressoDigitalOut``
classes to control GPIO pins.
Example code to use GPIO pins from an NXP SDK board definition:
.. code-block:: text
McuxpressoDigitalOut out(BOARD_INITPINS_D8_GPIO,
BOARD_INITPINS_D8_PORT,
BOARD_INITPINS_D8_PIN,
pw::digital_io::State::kActive);
out.SetState(pw::digital_io::State::kInactive);
McuxpressoDigitalIn in(
BOARD_INITPINS_D9_GPIO, BOARD_INITPINS_D9_PORT, BOARD_INITPINS_D9_PIN);
auto state = in.GetState();