Created
February 18, 2015 12:00
-
-
Save kkmonster/5f44a83e5b77fef536c7 to your computer and use it in GitHub Desktop.
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
/* Copyright (c) 2014 Nordic Semiconductor. All Rights Reserved. | |
* | |
* The information contained herein is property of Nordic Semiconductor ASA. | |
* Terms and conditions of usage are described in detail in NORDIC | |
* SEMICONDUCTOR STANDARD SOFTWARE LICENSE AGREEMENT. | |
* | |
* Licensees are granted free, non-transferable use of the information. NO | |
* WARRANTY of ANY KIND is provided. This heading must NOT be removed from | |
* the file. | |
* | |
*/ | |
/** @file | |
* | |
* @defgroup blinky_example_main main.c | |
* @{ | |
* @ingroup blinky_example | |
* @brief Blinky Example Application main file. | |
* | |
*/ | |
#include <stdbool.h> | |
#include <stdint.h> | |
#include "nrf_delay.h" | |
#include "nrf_gpio.h" | |
#include "boards.h" | |
#define LEDS_NUMBER 5 | |
#define LED_START 21 | |
#define LED_1 18 | |
#define LED_2 19 | |
#define LED_3 20 | |
#define LED_4 21 | |
#define LED_5 22 | |
#define LEDS_LIST { LED_1, LED_2, LED_3, LED_4, LED_5 } | |
#define BSP_LED_0 LED_1 | |
#define BSP_LED_1 LED_2 | |
#define BSP_LED_2 LED_3 | |
#define BSP_LED_3 LED_4 | |
#define BSP_LED_4 LED_5 | |
#define BSP_LED_0_MASK (1<<BSP_LED_0) | |
#define BSP_LED_1_MASK (1<<BSP_LED_1) | |
#define BSP_LED_2_MASK (1<<BSP_LED_2) | |
#define BSP_LED_3_MASK (1<<BSP_LED_3) | |
#define BSP_LED_4_MASK (1<<BSP_LED_4) | |
#define LEDS_MASK (BSP_LED_0_MASK | BSP_LED_1_MASK | BSP_LED_2_MASK | BSP_LED_3_MASK | BSP_LED_4_MASK) | |
/* all LEDs are lit when GPIO is low */ | |
#define LEDS_INV_MASK LEDS_MASK | |
#define LEDS_OFF(leds_mask) do { NRF_GPIO->OUTSET = (leds_mask) & (LEDS_MASK & LEDS_INV_MASK); \ | |
NRF_GPIO->OUTCLR = (leds_mask) & (LEDS_MASK & ~LEDS_INV_MASK); } while (0) | |
#define LEDS_ON(leds_mask) do { NRF_GPIO->OUTCLR = (leds_mask) & (LEDS_MASK & LEDS_INV_MASK); \ | |
NRF_GPIO->OUTSET = (leds_mask) & (LEDS_MASK & ~LEDS_INV_MASK); } while (0) | |
#define LED_IS_ON(leds_mask) ((leds_mask) & (NRF_GPIO->OUT ^ LEDS_INV_MASK) ) | |
#define LEDS_INVERT(leds_mask) do { uint32_t gpio_state = NRF_GPIO->OUT; \ | |
NRF_GPIO->OUTSET = ((leds_mask) & ~gpio_state); \ | |
NRF_GPIO->OUTCLR = ((leds_mask) & gpio_state); } while (0) | |
#define LEDS_CONFIGURE(leds_mask) do { uint32_t pin; \ | |
for (pin = 0; pin < 32; pin++) \ | |
if ( (leds_mask) & (1 << pin) ) \ | |
nrf_gpio_cfg_output(pin); } while (0) | |
const uint8_t leds_list[LEDS_NUMBER] = LEDS_LIST; | |
/** | |
* @brief Function for application main entry. | |
*/ | |
int main(void) | |
{ | |
// Configure LED-pins as outputs. | |
LEDS_CONFIGURE(LEDS_MASK); | |
// Toggle LEDs. | |
while (true) | |
{ | |
for (int i = 0; i < LEDS_NUMBER; i++) | |
{ | |
LEDS_INVERT(1 << leds_list[i]); | |
nrf_delay_ms(500); | |
} | |
} | |
} | |
/** @} */ |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment