[experimental] Add blinky application

This application is helpful for bringup.

Change-Id: Ibdc969b0a67af04714b4ae5f583de6d439f1a97f
Reviewed-on: https://pigweed-review.googlesource.com/c/pigweed/experimental/+/39601
Commit-Queue: Varun Sharma <vars@google.com>
Reviewed-by: Yecheng Zhao <zyecheng@google.com>
diff --git a/BUILD.gn b/BUILD.gn
index 1a2b789..04eabc5 100644
--- a/BUILD.gn
+++ b/BUILD.gn
@@ -76,6 +76,7 @@
   if (pw_arduino_build_CORE_PATH != "") {
     deps += [
       ":applications_tests(//targets/arduino:arduino_debug_tests)",
+      "//applications/blinky:blinky(//targets/arduino:arduino_debug)",
       "//applications/rpc:all(//targets/arduino:arduino_debug)",
       "//applications/strings:all(//targets/arduino:arduino_debug)",
       "//applications/tls_example:boringssl_teensy_ethernet(//targets/arduino:arduino_debug)",
@@ -87,6 +88,7 @@
   # STMicroelectronics STM32F429I-DISC1 applications steps.
   deps += [
     ":applications_tests(//targets/stm32f429i-disc1:stm32f429i_disc1_debug_tests)",
+    "//applications/blinky:blinky(//targets/stm32f429i-disc1:stm32f429i_disc1_debug)",
     "//applications/rpc:all(//targets/stm32f429i-disc1:stm32f429i_disc1_debug)",
     "//applications/strings:all(//targets/stm32f429i-disc1:stm32f429i_disc1_debug)",
   ]
diff --git a/applications/blinky/BUILD.gn b/applications/blinky/BUILD.gn
new file mode 100644
index 0000000..875538a
--- /dev/null
+++ b/applications/blinky/BUILD.gn
@@ -0,0 +1,32 @@
+# Copyright 2021 The Pigweed Authors
+#
+# Licensed under the Apache License, Version 2.0 (the "License"); you may not
+# use this file except in compliance with the License. You may obtain a copy of
+# the License at
+#
+#     https://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS, WITHOUT
+# WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the
+# License for the specific language governing permissions and limitations under
+# the License.
+
+import("//build_overrides/pigweed.gni")
+
+import("$dir_pw_build/target_types.gni")
+
+pw_executable("blinky") {
+  sources = [
+    "main.cc",
+  ]
+  deps = [
+    "$dir_pw_log",
+
+    # The assert backend is defined in the toolchain with `pw_assert_BACKEND`.
+    "$dir_pw_assert",
+
+    "//pw_board_led",
+    "//pw_spin_delay",
+  ]
+}
diff --git a/applications/blinky/main.cc b/applications/blinky/main.cc
new file mode 100644
index 0000000..b6d5171
--- /dev/null
+++ b/applications/blinky/main.cc
@@ -0,0 +1,34 @@
+// Copyright 2021 The Pigweed Authors
+//
+// Licensed under the Apache License, Version 2.0 (the "License"); you may not
+// use this file except in compliance with the License. You may obtain a copy of
+// the License at
+//
+//     https://www.apache.org/licenses/LICENSE-2.0
+//
+// Unless required by applicable law or agreed to in writing, software
+// distributed under the License is distributed on an "AS IS" BASIS, WITHOUT
+// WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the
+// License for the specific language governing permissions and limitations under
+// the License.
+
+#include "pw_board_led/led.h"
+#include "pw_log/log.h"
+#include "pw_spin_delay/delay.h"
+
+int main() {
+  pw::board_led::Init();
+  int i = 0;
+
+  while (true) {
+    PW_LOG_INFO("Blink %d", i++);
+
+    pw::board_led::TurnOn();
+    pw::spin_delay::WaitMillis(1000);
+
+    pw::board_led::TurnOff();
+    pw::spin_delay::WaitMillis(1000);
+  }
+
+  return 0;
+}