blinky.c

nRF52833-DK (id boards.json : nrf52833-dk) · Fichier : blinky.c · Langage : C · Usage : Faire clignoter la LED0 à 2 Hz (hello world Zephyr)

Le hello world Zephyr adapté aux cartes nRF : la LED utilisateur (alias devicetree led0, P0.13 sur le DK) clignote à 2 Hz. Le code ne cite jamais de broche brute — le BSP de la carte fait le lien, ce qui le rend portable.

Matériel requis

Une carte nRF52833-DK (Nordic, SoC nRF52833 Cortex-M4F, BLE 5) alimentée par USB : 4 LEDs sur P0.13-P0.16 (actives au niveau bas) et 4 boutons sur P0.11, P0.12, P0.24, P0.25 (actifs bas, pull-up interne à activer). La carte seule, alimentée par son port USB ; aucun composant externe pour ce premier test.

Câblage

Aucun câblage : la LED est embarquée. Sur le DK les LEDs sont actives au niveau bas (le BSP le sait via le flag active-low).

Fonctionnement

GPIO_DT_SPEC_GET résout l’alias led0 en (puce, broche, flags) à la compilation ; gpio_pin_configure_dt met la broche en sortie éteinte, puis toggle + k_msleep(500) font le 2 Hz.

Exécution

Projet Zephyr : west build -b nrf52833dk/nrf52833 puis west flash (J-Link embarqué) ; console série 115200 sur le connecteur USB UART.

Variantes

Passer à 0,5 Hz pour un mode veille visible, utiliser le PWM pour une pulsation, ou basculer sur led1/led2 pour un motif multi-LED.

blinky.c

/* Blinky Zephyr — la LED0 de la carte clignote à 2 Hz.
 * L'alias devicetree led0 pointe sur la LED utilisateur du BSP
 * (P0.13 sur le nRF52833-DK, LED rouge sur le nRF52840-MDK).
 * Build : west build -b <board> ; flash : west flash. */
#include <zephyr/kernel.h>
#include <zephyr/drivers/gpio.h>

static const struct gpio_dt_spec led =
	GPIO_DT_SPEC_GET(DT_ALIAS(led0), gpios);

int main(void)
{
	if (!gpio_is_ready_dt(&led)) {
		printk("Puce GPIO absente\n");
		return 1;
	}
	/* INACTIVE : la LED s'éteint quel que soit le sens d'actif */
	gpio_pin_configure_dt(&led, GPIO_OUTPUT_INACTIVE);

	while (1) {
		gpio_pin_toggle_dt(&led);
		k_msleep(500);
	}
	return 0;
}

← Retour à la fiche