dk crate / library is a Hardware Abstraction Layer (HAL) over the nRF52840 Development Kit. The purpose of a HAL is to abstract away the device-specific details of the hardware, for example registers, and instead expose a higher level API more suitable for application development.
dk::init function we have been calling in all programs initializes a few of the nRF52840 peripherals and returns a
Board structure that provides access to those peripherals. We'll first look at the
✅ Run the
led program. Two of the green LEDs on the board should turn on; the other two should stay off.
NOTE this program will not terminate itself. Within VS code you need to click "Kill terminal" (garbage bin icon) in the bottom panel to terminate it.
✅ Open the documentation for the
dk crate by running the following command from the
$ cargo doc -p dk --open
✅ Check the API docs of the
Led abstraction then run the
led program. Change the
led program, so that the bottom two leds are turned on, and the top two are turned off.
✅ Uncomment the
log::set_max_level line. This will make the logs more verbose; they will now include logs from the board initialization function (
dk::init) and from the
Among the logs you'll find the line "I/O pins have been configured for digital output". At this point the electrical pins of the nRF52840 microcontroller have been configured to drive the 4 LEDs on the board.
dk::init logs you'll find logs about the
Led API. As the logs indicate an LED becomes active when the output of the pin is a logical zero, which is also referred as the "low" state. This "active low" configuration does not apply to all boards: it depends on how the pins have been wired to the LEDs. You should refer to the board documentation to find out which pins are connected to LEDs and whether "active low" or "active high" applies to it.