Port fancyblink example to WaveShare Open103R

This commit is contained in:
Joshua Harlan Lifton
2013-09-07 22:21:15 -07:00
committed by Piotr Esden-Tempski
parent c672f1b329
commit d944c0cba6
3 changed files with 96 additions and 0 deletions

View File

@@ -0,0 +1,26 @@
##
## This file is part of the libopencm3 project.
##
## Copyright (C) 2009 Uwe Hermann <uwe@hermann-uwe.de>
## Copyright (C) 2013 Joshua Harlan Lifton <joshua.harlan.lifton@gmail.com>
##
## This library is free software: you can redistribute it and/or modify
## it under the terms of the GNU Lesser General Public License as published by
## the Free Software Foundation, either version 3 of the License, or
## (at your option) any later version.
##
## This library is distributed in the hope that it will be useful,
## but WITHOUT ANY WARRANTY; without even the implied warranty of
## MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
## GNU Lesser General Public License for more details.
##
## You should have received a copy of the GNU Lesser General Public License
## along with this library. If not, see <http://www.gnu.org/licenses/>.
##
BINARY = fancyblink
LDSCRIPT = ../waveshare-open103r.ld
include ../../Makefile.include

View File

@@ -0,0 +1,9 @@
------------------------------------------------------------------------------
README
------------------------------------------------------------------------------
This program will interleave the blinking of two sets of LEDs. LED1
and LED3 will blink at the same time and LED2 and LED4 will blink at
the same time. When LED1 and LED3 are on, LED2 and LED4 will be off,
and vice versa.

View File

@@ -0,0 +1,61 @@
/*
* This file is part of the libopencm3 project.
*
* Copyright (C) 2009 Uwe Hermann <uwe@hermann-uwe.de>
* Copyright (C) 2011 Damjan Marion <damjan.marion@gmail.com>
* Copyright (C) 2011 Mark Panajotovic <marko@electrontube.org>
* Copyright (C) 2013 Joshua Harlan Lifton <joshua.harlan.lifton@gmail.com>
*
* This library is free software: you can redistribute it and/or modify
* it under the terms of the GNU Lesser General Public License as published by
* the Free Software Foundation, either version 3 of the License, or
* (at your option) any later version.
*
* This library is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU Lesser General Public License for more details.
*
* You should have received a copy of the GNU Lesser General Public License
* along with this library. If not, see <http://www.gnu.org/licenses/>.
*/
#include <libopencm3/stm32/rcc.h>
#include <libopencm3/stm32/gpio.h>
/* Set STM32 to 24 MHz. */
static void clock_setup(void)
{
rcc_clock_setup_in_hse_8mhz_out_24mhz();
/* Enable GPIOC clock. */
rcc_peripheral_enable_clock(&RCC_APB2ENR, RCC_APB2ENR_IOPCEN);
}
static void gpio_setup(void)
{
/* Set GPIO9-12 (in GPIO port C) to 'output push-pull'. */
gpio_set_mode(GPIOC, GPIO_MODE_OUTPUT_50_MHZ,
GPIO_CNF_OUTPUT_PUSHPULL,
GPIO9 | GPIO10 | GPIO11 | GPIO12);
}
int main(void)
{
int i;
clock_setup();
gpio_setup();
/* Set two LEDs for wigwag effect when toggling. */
gpio_set(GPIOC, GPIO9 | GPIO11);
/* Blink the LEDs (PC9 - PC12) on the board. */
while (1) {
gpio_toggle(GPIOC, GPIO9 | GPIO10 | GPIO11 | GPIO12);
for (i = 0; i < 2000000; i++) /* Wait a bit. */
__asm__("nop");
}
return 0;
}