From dc19a4ecfbf70e11f6c296ba891d4788abe06a8f Mon Sep 17 00:00:00 2001 From: Stephen Caudle Date: Wed, 2 Nov 2011 14:56:37 -0400 Subject: Rename STM32 discovery folders to be more specific --- examples/stm32/f1/stm32-discovery/button/Makefile | 23 ---- examples/stm32/f1/stm32-discovery/button/README | 8 -- examples/stm32/f1/stm32-discovery/button/button.c | 76 ------------ examples/stm32/f1/stm32-discovery/button/button.ld | 31 ----- .../stm32/f1/stm32-discovery/fancyblink/Makefile | 23 ---- .../stm32/f1/stm32-discovery/fancyblink/README | 9 -- .../f1/stm32-discovery/fancyblink/fancyblink.c | 61 ---------- .../f1/stm32-discovery/fancyblink/fancyblink.ld | 31 ----- .../stm32/f1/stm32-discovery/miniblink/Makefile | 23 ---- examples/stm32/f1/stm32-discovery/miniblink/README | 9 -- .../stm32/f1/stm32-discovery/miniblink/miniblink.c | 71 ------------ .../f1/stm32-discovery/miniblink/miniblink.ld | 31 ----- examples/stm32/f1/stm32-discovery/rtc/Makefile | 23 ---- examples/stm32/f1/stm32-discovery/rtc/README | 9 -- examples/stm32/f1/stm32-discovery/rtc/rtc.c | 129 --------------------- examples/stm32/f1/stm32-discovery/rtc/rtc.ld | 31 ----- examples/stm32/f1/stm32-discovery/usart/Makefile | 23 ---- examples/stm32/f1/stm32-discovery/usart/README | 12 -- examples/stm32/f1/stm32-discovery/usart/usart.c | 87 -------------- examples/stm32/f1/stm32-discovery/usart/usart.ld | 31 ----- .../stm32/f1/stm32vl-discovery/button/Makefile | 23 ++++ examples/stm32/f1/stm32vl-discovery/button/README | 8 ++ .../stm32/f1/stm32vl-discovery/button/button.c | 76 ++++++++++++ .../stm32/f1/stm32vl-discovery/button/button.ld | 31 +++++ .../stm32/f1/stm32vl-discovery/fancyblink/Makefile | 23 ++++ .../stm32/f1/stm32vl-discovery/fancyblink/README | 9 ++ .../f1/stm32vl-discovery/fancyblink/fancyblink.c | 61 ++++++++++ .../f1/stm32vl-discovery/fancyblink/fancyblink.ld | 31 +++++ .../stm32/f1/stm32vl-discovery/miniblink/Makefile | 23 ++++ .../stm32/f1/stm32vl-discovery/miniblink/README | 9 ++ .../f1/stm32vl-discovery/miniblink/miniblink.c | 71 ++++++++++++ .../f1/stm32vl-discovery/miniblink/miniblink.ld | 31 +++++ examples/stm32/f1/stm32vl-discovery/rtc/Makefile | 23 ++++ examples/stm32/f1/stm32vl-discovery/rtc/README | 9 ++ examples/stm32/f1/stm32vl-discovery/rtc/rtc.c | 129 +++++++++++++++++++++ examples/stm32/f1/stm32vl-discovery/rtc/rtc.ld | 31 +++++ examples/stm32/f1/stm32vl-discovery/usart/Makefile | 23 ++++ examples/stm32/f1/stm32vl-discovery/usart/README | 12 ++ examples/stm32/f1/stm32vl-discovery/usart/usart.c | 87 ++++++++++++++ examples/stm32/f1/stm32vl-discovery/usart/usart.ld | 31 +++++ 40 files changed, 741 insertions(+), 741 deletions(-) delete mode 100644 examples/stm32/f1/stm32-discovery/button/Makefile delete mode 100644 examples/stm32/f1/stm32-discovery/button/README delete mode 100644 examples/stm32/f1/stm32-discovery/button/button.c delete mode 100644 examples/stm32/f1/stm32-discovery/button/button.ld delete mode 100644 examples/stm32/f1/stm32-discovery/fancyblink/Makefile delete mode 100644 examples/stm32/f1/stm32-discovery/fancyblink/README delete mode 100644 examples/stm32/f1/stm32-discovery/fancyblink/fancyblink.c delete mode 100644 examples/stm32/f1/stm32-discovery/fancyblink/fancyblink.ld delete mode 100644 examples/stm32/f1/stm32-discovery/miniblink/Makefile delete mode 100644 examples/stm32/f1/stm32-discovery/miniblink/README delete mode 100644 examples/stm32/f1/stm32-discovery/miniblink/miniblink.c delete mode 100644 examples/stm32/f1/stm32-discovery/miniblink/miniblink.ld delete mode 100644 examples/stm32/f1/stm32-discovery/rtc/Makefile delete mode 100644 examples/stm32/f1/stm32-discovery/rtc/README delete mode 100644 examples/stm32/f1/stm32-discovery/rtc/rtc.c delete mode 100644 examples/stm32/f1/stm32-discovery/rtc/rtc.ld delete mode 100644 examples/stm32/f1/stm32-discovery/usart/Makefile delete mode 100644 examples/stm32/f1/stm32-discovery/usart/README delete mode 100644 examples/stm32/f1/stm32-discovery/usart/usart.c delete mode 100644 examples/stm32/f1/stm32-discovery/usart/usart.ld create mode 100644 examples/stm32/f1/stm32vl-discovery/button/Makefile create mode 100644 examples/stm32/f1/stm32vl-discovery/button/README create mode 100644 examples/stm32/f1/stm32vl-discovery/button/button.c create mode 100644 examples/stm32/f1/stm32vl-discovery/button/button.ld create mode 100644 examples/stm32/f1/stm32vl-discovery/fancyblink/Makefile create mode 100644 examples/stm32/f1/stm32vl-discovery/fancyblink/README create mode 100644 examples/stm32/f1/stm32vl-discovery/fancyblink/fancyblink.c create mode 100644 examples/stm32/f1/stm32vl-discovery/fancyblink/fancyblink.ld create mode 100644 examples/stm32/f1/stm32vl-discovery/miniblink/Makefile create mode 100644 examples/stm32/f1/stm32vl-discovery/miniblink/README create mode 100644 examples/stm32/f1/stm32vl-discovery/miniblink/miniblink.c create mode 100644 examples/stm32/f1/stm32vl-discovery/miniblink/miniblink.ld create mode 100644 examples/stm32/f1/stm32vl-discovery/rtc/Makefile create mode 100644 examples/stm32/f1/stm32vl-discovery/rtc/README create mode 100644 examples/stm32/f1/stm32vl-discovery/rtc/rtc.c create mode 100644 examples/stm32/f1/stm32vl-discovery/rtc/rtc.ld create mode 100644 examples/stm32/f1/stm32vl-discovery/usart/Makefile create mode 100644 examples/stm32/f1/stm32vl-discovery/usart/README create mode 100644 examples/stm32/f1/stm32vl-discovery/usart/usart.c create mode 100644 examples/stm32/f1/stm32vl-discovery/usart/usart.ld (limited to 'examples/stm32/f1') diff --git a/examples/stm32/f1/stm32-discovery/button/Makefile b/examples/stm32/f1/stm32-discovery/button/Makefile deleted file mode 100644 index 96731c2..0000000 --- a/examples/stm32/f1/stm32-discovery/button/Makefile +++ /dev/null @@ -1,23 +0,0 @@ -## -## This file is part of the libopencm3 project. -## -## Copyright (C) 2009 Uwe Hermann -## -## This program is free software: you can redistribute it and/or modify -## it under the terms of the GNU General Public License as published by -## the Free Software Foundation, either version 3 of the License, or -## (at your option) any later version. -## -## This program 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 General Public License for more details. -## -## You should have received a copy of the GNU General Public License -## along with this program. If not, see . -## - -BINARY = button - -include ../../Makefile.include - diff --git a/examples/stm32/f1/stm32-discovery/button/README b/examples/stm32/f1/stm32-discovery/button/README deleted file mode 100644 index 38bc1ea..0000000 --- a/examples/stm32/f1/stm32-discovery/button/README +++ /dev/null @@ -1,8 +0,0 @@ ------------------------------------------------------------------------------- -README ------------------------------------------------------------------------------- - -This example blinks the green LED on the ST STM32VLDISCOVERY eval board. - -When you press the 'USER' button, the blinking is slower. - diff --git a/examples/stm32/f1/stm32-discovery/button/button.c b/examples/stm32/f1/stm32-discovery/button/button.c deleted file mode 100644 index 87ce5cc..0000000 --- a/examples/stm32/f1/stm32-discovery/button/button.c +++ /dev/null @@ -1,76 +0,0 @@ -/* - * This file is part of the libopencm3 project. - * - * Copyright (C) 2009 Uwe Hermann , - * Copyright (C) 2010 Piotr Esden-Tempski - * - * This program is free software: you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation, either version 3 of the License, or - * (at your option) any later version. - * - * This program 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 General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with this program. If not, see . - */ - -#include -#include - -u16 exti_line_state; - -/* Set STM32 to 24 MHz. */ -void clock_setup(void) -{ - rcc_clock_setup_in_hse_8mhz_out_24mhz(); -} - -void gpio_setup(void) -{ - /* Enable GPIOC clock. */ - rcc_peripheral_enable_clock(&RCC_APB2ENR, RCC_APB2ENR_IOPCEN); - - /* Set GPIO9 (in GPIO port C) to 'output push-pull'. */ - gpio_set_mode(GPIOC, GPIO_MODE_OUTPUT_50_MHZ, - GPIO_CNF_OUTPUT_PUSHPULL, GPIO9); -} - -void button_setup(void) -{ - /* Enable GPIOA clock. */ - rcc_peripheral_enable_clock(&RCC_APB2ENR, RCC_APB2ENR_IOPAEN); - - /* Set GPIO0 (in GPIO port A) to 'input open-drain'. */ - gpio_set_mode(GPIOA, GPIO_MODE_INPUT, - GPIO_CNF_INPUT_FLOAT, GPIO0); -} - -int main(void) -{ - int i; - - clock_setup(); - gpio_setup(); - button_setup(); - - /* Blink the LED (PC9) on the board. */ - while (1) { - gpio_toggle(GPIOC, GPIO9); - - /* Upon button press, blink more slowly. */ - exti_line_state = GPIOA_IDR; - if ((exti_line_state & (1 << 0)) != 0) { - for (i = 0; i < 800000; i++) /* Wait a bit. */ - __asm__("nop"); - } - - for (i = 0; i < 800000; i++) /* Wait a bit. */ - __asm__("nop"); - } - - return 0; -} diff --git a/examples/stm32/f1/stm32-discovery/button/button.ld b/examples/stm32/f1/stm32-discovery/button/button.ld deleted file mode 100644 index 157204a..0000000 --- a/examples/stm32/f1/stm32-discovery/button/button.ld +++ /dev/null @@ -1,31 +0,0 @@ -/* - * This file is part of the libopencm3 project. - * - * Copyright (C) 2009 Uwe Hermann - * - * This program is free software: you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation, either version 3 of the License, or - * (at your option) any later version. - * - * This program 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 General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with this program. If not, see . - */ - -/* Linker script for ST STM32VLDISCOVERY (STM32F100RB, 128K flash, 8K RAM). */ - -/* Define memory regions. */ -MEMORY -{ - rom (rx) : ORIGIN = 0x08000000, LENGTH = 128K - ram (rwx) : ORIGIN = 0x20000000, LENGTH = 8K -} - -/* Include the common ld script. */ -INCLUDE libopencm3_stm32f1.ld - diff --git a/examples/stm32/f1/stm32-discovery/fancyblink/Makefile b/examples/stm32/f1/stm32-discovery/fancyblink/Makefile deleted file mode 100644 index 1baec4d..0000000 --- a/examples/stm32/f1/stm32-discovery/fancyblink/Makefile +++ /dev/null @@ -1,23 +0,0 @@ -## -## This file is part of the libopencm3 project. -## -## Copyright (C) 2009 Uwe Hermann -## -## This program is free software: you can redistribute it and/or modify -## it under the terms of the GNU General Public License as published by -## the Free Software Foundation, either version 3 of the License, or -## (at your option) any later version. -## -## This program 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 General Public License for more details. -## -## You should have received a copy of the GNU General Public License -## along with this program. If not, see . -## - -BINARY = fancyblink - -include ../../Makefile.include - diff --git a/examples/stm32/f1/stm32-discovery/fancyblink/README b/examples/stm32/f1/stm32-discovery/fancyblink/README deleted file mode 100644 index b5d794c..0000000 --- a/examples/stm32/f1/stm32-discovery/fancyblink/README +++ /dev/null @@ -1,9 +0,0 @@ ------------------------------------------------------------------------------- -README ------------------------------------------------------------------------------- - -This is the smallest-possible example program using libopencm3. - -It's intended for the ST STM32VLDISCOVERY eval board. It should blink -the LEDs on the board. - diff --git a/examples/stm32/f1/stm32-discovery/fancyblink/fancyblink.c b/examples/stm32/f1/stm32-discovery/fancyblink/fancyblink.c deleted file mode 100644 index 38a4c4b..0000000 --- a/examples/stm32/f1/stm32-discovery/fancyblink/fancyblink.c +++ /dev/null @@ -1,61 +0,0 @@ -/* - * This file is part of the libopencm3 project. - * - * Copyright (C) 2009 Uwe Hermann - * Copyright (C) 2011 Damjan Marion - * Copyright (C) 2011 Mark Panajotovic - * - * This program is free software: you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation, either version 3 of the License, or - * (at your option) any later version. - * - * This program 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 General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with this program. If not, see . - */ - -#include -#include - -/* Set STM32 to 24 MHz. */ -void clock_setup(void) -{ - rcc_clock_setup_in_hse_8mhz_out_24mhz(); - - /* Enable GPIOC clock. */ - rcc_peripheral_enable_clock(&RCC_APB2ENR, RCC_APB2ENR_IOPCEN); -} - -void gpio_setup(void) -{ - /* Set GPIO8/9 (in GPIO port C) to 'output push-pull'. */ - gpio_set_mode(GPIOC, GPIO_MODE_OUTPUT_50_MHZ, - GPIO_CNF_OUTPUT_PUSHPULL, GPIO8); - gpio_set_mode(GPIOC, GPIO_MODE_OUTPUT_50_MHZ, - GPIO_CNF_OUTPUT_PUSHPULL, GPIO9); -} - -int main(void) -{ - int i; - - clock_setup(); - gpio_setup(); - - /* Set one LED for wigwag effect when toggling. */ - gpio_set(GPIOC, GPIO8); - - /* Blink the LEDs (PC8 and PC9) on the board. */ - while (1) { - gpio_toggle(GPIOC, GPIO8 | GPIO9); /* Toggle LEDs. */ - for (i = 0; i < 2000000; i++) /* Wait a bit. */ - __asm__("nop"); - } - - return 0; -} diff --git a/examples/stm32/f1/stm32-discovery/fancyblink/fancyblink.ld b/examples/stm32/f1/stm32-discovery/fancyblink/fancyblink.ld deleted file mode 100644 index 157204a..0000000 --- a/examples/stm32/f1/stm32-discovery/fancyblink/fancyblink.ld +++ /dev/null @@ -1,31 +0,0 @@ -/* - * This file is part of the libopencm3 project. - * - * Copyright (C) 2009 Uwe Hermann - * - * This program is free software: you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation, either version 3 of the License, or - * (at your option) any later version. - * - * This program 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 General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with this program. If not, see . - */ - -/* Linker script for ST STM32VLDISCOVERY (STM32F100RB, 128K flash, 8K RAM). */ - -/* Define memory regions. */ -MEMORY -{ - rom (rx) : ORIGIN = 0x08000000, LENGTH = 128K - ram (rwx) : ORIGIN = 0x20000000, LENGTH = 8K -} - -/* Include the common ld script. */ -INCLUDE libopencm3_stm32f1.ld - diff --git a/examples/stm32/f1/stm32-discovery/miniblink/Makefile b/examples/stm32/f1/stm32-discovery/miniblink/Makefile deleted file mode 100644 index 24a478b..0000000 --- a/examples/stm32/f1/stm32-discovery/miniblink/Makefile +++ /dev/null @@ -1,23 +0,0 @@ -## -## This file is part of the libopencm3 project. -## -## Copyright (C) 2009 Uwe Hermann -## -## This program is free software: you can redistribute it and/or modify -## it under the terms of the GNU General Public License as published by -## the Free Software Foundation, either version 3 of the License, or -## (at your option) any later version. -## -## This program 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 General Public License for more details. -## -## You should have received a copy of the GNU General Public License -## along with this program. If not, see . -## - -BINARY = miniblink - -include ../../Makefile.include - diff --git a/examples/stm32/f1/stm32-discovery/miniblink/README b/examples/stm32/f1/stm32-discovery/miniblink/README deleted file mode 100644 index cffce60..0000000 --- a/examples/stm32/f1/stm32-discovery/miniblink/README +++ /dev/null @@ -1,9 +0,0 @@ ------------------------------------------------------------------------------- -README ------------------------------------------------------------------------------- - -This is the smallest-possible example program using libopencm3. - -It's intended for the ST STM32VLDISCOVERY eval board. It should blink -the blue LED on the board. - diff --git a/examples/stm32/f1/stm32-discovery/miniblink/miniblink.c b/examples/stm32/f1/stm32-discovery/miniblink/miniblink.c deleted file mode 100644 index 973fab5..0000000 --- a/examples/stm32/f1/stm32-discovery/miniblink/miniblink.c +++ /dev/null @@ -1,71 +0,0 @@ -/* - * This file is part of the libopencm3 project. - * - * Copyright (C) 2009 Uwe Hermann - * - * This program is free software: you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation, either version 3 of the License, or - * (at your option) any later version. - * - * This program 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 General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with this program. If not, see . - */ - -#include -#include - -void gpio_setup(void) -{ - /* Enable GPIOC clock. */ - /* Manually: */ - // RCC_APB2ENR |= RCC_APB2ENR_IOPCEN; - /* Using API functions: */ - rcc_peripheral_enable_clock(&RCC_APB2ENR, RCC_APB2ENR_IOPCEN); - - /* Set GPIO8 (in GPIO port C) to 'output push-pull'. */ - /* Manually: */ - // GPIOC_CRH = (GPIO_CNF_OUTPUT_PUSHPULL << (((8 - 8) * 4) + 2)); - // GPIOC_CRH |= (GPIO_MODE_OUTPUT_2_MHZ << ((8 - 8) * 4)); - /* Using API functions: */ - gpio_set_mode(GPIOC, GPIO_MODE_OUTPUT_2_MHZ, - GPIO_CNF_OUTPUT_PUSHPULL, GPIO8); -} - -int main(void) -{ - int i; - - gpio_setup(); - - /* Blink the LED (PC8) on the board. */ - while (1) { - /* Manually: */ - // GPIOC_BSRR = GPIO8; /* LED off */ - // for (i = 0; i < 800000; i++) /* Wait a bit. */ - // __asm__("nop"); - // GPIOC_BRR = GPIO8; /* LED on */ - // for (i = 0; i < 800000; i++) /* Wait a bit. */ - // __asm__("nop"); - - /* Using API functions gpio_set()/gpio_clear(): */ - // gpio_set(GPIOC, GPIO8); /* LED off */ - // for (i = 0; i < 800000; i++) /* Wait a bit. */ - // __asm__("nop"); - // gpio_clear(GPIOC, GPIO8); /* LED on */ - // for (i = 0; i < 800000; i++) /* Wait a bit. */ - // __asm__("nop"); - - /* Using API function gpio_toggle(): */ - gpio_toggle(GPIOC, GPIO8); /* LED on/off */ - for (i = 0; i < 800000; i++) /* Wait a bit. */ - __asm__("nop"); - } - - return 0; -} diff --git a/examples/stm32/f1/stm32-discovery/miniblink/miniblink.ld b/examples/stm32/f1/stm32-discovery/miniblink/miniblink.ld deleted file mode 100644 index 157204a..0000000 --- a/examples/stm32/f1/stm32-discovery/miniblink/miniblink.ld +++ /dev/null @@ -1,31 +0,0 @@ -/* - * This file is part of the libopencm3 project. - * - * Copyright (C) 2009 Uwe Hermann - * - * This program is free software: you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation, either version 3 of the License, or - * (at your option) any later version. - * - * This program 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 General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with this program. If not, see . - */ - -/* Linker script for ST STM32VLDISCOVERY (STM32F100RB, 128K flash, 8K RAM). */ - -/* Define memory regions. */ -MEMORY -{ - rom (rx) : ORIGIN = 0x08000000, LENGTH = 128K - ram (rwx) : ORIGIN = 0x20000000, LENGTH = 8K -} - -/* Include the common ld script. */ -INCLUDE libopencm3_stm32f1.ld - diff --git a/examples/stm32/f1/stm32-discovery/rtc/Makefile b/examples/stm32/f1/stm32-discovery/rtc/Makefile deleted file mode 100644 index 1efa7ac..0000000 --- a/examples/stm32/f1/stm32-discovery/rtc/Makefile +++ /dev/null @@ -1,23 +0,0 @@ -## -## This file is part of the libopencm3 project. -## -## Copyright (C) 2009 Uwe Hermann -## -## This program is free software: you can redistribute it and/or modify -## it under the terms of the GNU General Public License as published by -## the Free Software Foundation, either version 3 of the License, or -## (at your option) any later version. -## -## This program 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 General Public License for more details. -## -## You should have received a copy of the GNU General Public License -## along with this program. If not, see . -## - -BINARY = rtc - -include ../../Makefile.include - diff --git a/examples/stm32/f1/stm32-discovery/rtc/README b/examples/stm32/f1/stm32-discovery/rtc/README deleted file mode 100644 index d4509e4..0000000 --- a/examples/stm32/f1/stm32-discovery/rtc/README +++ /dev/null @@ -1,9 +0,0 @@ ------------------------------------------------------------------------------- -README ------------------------------------------------------------------------------- - -This is a small RTC example project. - -It blinks the ST STM32VLDISCOVERY's blue LED at 1Hz, and sends the value of -the RTC counter register down the serial line (PA9) at 38400,8N1. - diff --git a/examples/stm32/f1/stm32-discovery/rtc/rtc.c b/examples/stm32/f1/stm32-discovery/rtc/rtc.c deleted file mode 100644 index fa8a966..0000000 --- a/examples/stm32/f1/stm32-discovery/rtc/rtc.c +++ /dev/null @@ -1,129 +0,0 @@ -/* - * This file is part of the libopencm3 project. - * - * Copyright (C) 2010 Lord James - * Copyright (C) 2011 Mark Panajotovic - * - * This program is free software: you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation, either version 3 of the License, or - * (at your option) any later version. - * - * This program 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 General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with this program. If not, see . - */ - -#include -#include -#include -#include -#include -#include - -void clock_setup(void) -{ - rcc_clock_setup_in_hse_8mhz_out_24mhz(); - - /* Enable GPIOC clock. */ - rcc_peripheral_enable_clock(&RCC_APB2ENR, RCC_APB2ENR_IOPCEN); - - /* Enable clocks for GPIO port A (for GPIO_USART1_TX) and USART1. */ - rcc_peripheral_enable_clock(&RCC_APB2ENR, RCC_APB2ENR_IOPAEN); - rcc_peripheral_enable_clock(&RCC_APB2ENR, RCC_APB2ENR_USART1EN); -} - -void usart_setup(void) -{ - /* Setup GPIO pin GPIO_USART1_TX/GPIO9 on GPIO port A for transmit. */ - gpio_set_mode(GPIOA, GPIO_MODE_OUTPUT_50_MHZ, - GPIO_CNF_OUTPUT_ALTFN_PUSHPULL, GPIO_USART1_TX); - - /* Setup UART parameters. */ - // usart_set_baudrate(USART1, 38400); - /* TODO usart_set_baudrate() doesn't support 24MHz clock (yet). */ - /* This is the equivalent: */ - USART_BRR(USART1) = (u16)((24000000 << 4) / (38400 * 16)); - - usart_set_databits(USART1, 8); - usart_set_stopbits(USART1, USART_STOPBITS_1); - usart_set_mode(USART1, USART_MODE_TX); - usart_set_parity(USART1, USART_PARITY_NONE); - usart_set_flow_control(USART1, USART_FLOWCONTROL_NONE); - - /* Finally enable the USART. */ - usart_enable(USART1); -} - -void gpio_setup(void) -{ - /* Set GPIO8 (in GPIO port C) to 'output push-pull'. */ - /* This drives the blue LED on the STM32VLDISCOVERY. */ - gpio_set_mode(GPIOC, GPIO_MODE_OUTPUT_2_MHZ, - GPIO_CNF_OUTPUT_PUSHPULL, GPIO8); -} - -void nvic_setup(void) -{ - /* Without this the RTC interrupt routine will never be called. */ - nvic_enable_irq(NVIC_RTC_IRQ); - nvic_set_priority(NVIC_RTC_IRQ, 1); -} - -void rtc_isr(void) -{ - volatile u32 j = 0, c = 0; - - /* The interrupt flag isn't cleared by hardware, we have to do it. */ - rtc_clear_flag(RTC_SEC); - - /* Visual output. */ - gpio_toggle(GPIOC, GPIO8); - - c = rtc_get_counter_val(); - - /* Display the current counter value in binary via USART1. */ - for (j = 0; j < 32; j++) { - if ((c & (0x80000000 >> j)) != 0) - usart_send_blocking(USART1, '1'); - else - usart_send_blocking(USART1, '0'); - } - usart_send_blocking(USART1, '\n'); - usart_send_blocking(USART1, '\r'); -} - -int main(void) -{ - clock_setup(); - gpio_setup(); - usart_setup(); - - /* - * If the RTC is pre-configured just allow access, don't reconfigure. - * Otherwise enable it with the LSE as clock source and 0x7fff as - * prescale value. - */ - rtc_auto_awake(LSE, 0x7fff); - - /* The above mode will not reset the RTC when you press the RST button. - * It will also continue to count while the MCU is held in reset. If - * you want it to reset, comment out the above and use the following: - */ - // rtc_awake_from_off(LSE); - // rtc_set_prescale_val(0x7fff); - - /* Setup the RTC interrupt. */ - nvic_setup(); - - /* Enable the RTC interrupt to occur off the SEC flag. */ - rtc_interrupt_enable(RTC_SEC); - - while(1); - - return 0; -} diff --git a/examples/stm32/f1/stm32-discovery/rtc/rtc.ld b/examples/stm32/f1/stm32-discovery/rtc/rtc.ld deleted file mode 100644 index 157204a..0000000 --- a/examples/stm32/f1/stm32-discovery/rtc/rtc.ld +++ /dev/null @@ -1,31 +0,0 @@ -/* - * This file is part of the libopencm3 project. - * - * Copyright (C) 2009 Uwe Hermann - * - * This program is free software: you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation, either version 3 of the License, or - * (at your option) any later version. - * - * This program 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 General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with this program. If not, see . - */ - -/* Linker script for ST STM32VLDISCOVERY (STM32F100RB, 128K flash, 8K RAM). */ - -/* Define memory regions. */ -MEMORY -{ - rom (rx) : ORIGIN = 0x08000000, LENGTH = 128K - ram (rwx) : ORIGIN = 0x20000000, LENGTH = 8K -} - -/* Include the common ld script. */ -INCLUDE libopencm3_stm32f1.ld - diff --git a/examples/stm32/f1/stm32-discovery/usart/Makefile b/examples/stm32/f1/stm32-discovery/usart/Makefile deleted file mode 100644 index 2c1e1b1..0000000 --- a/examples/stm32/f1/stm32-discovery/usart/Makefile +++ /dev/null @@ -1,23 +0,0 @@ -## -## This file is part of the libopencm3 project. -## -## Copyright (C) 2009 Uwe Hermann -## -## This program is free software: you can redistribute it and/or modify -## it under the terms of the GNU General Public License as published by -## the Free Software Foundation, either version 3 of the License, or -## (at your option) any later version. -## -## This program 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 General Public License for more details. -## -## You should have received a copy of the GNU General Public License -## along with this program. If not, see . -## - -BINARY = usart - -include ../../Makefile.include - diff --git a/examples/stm32/f1/stm32-discovery/usart/README b/examples/stm32/f1/stm32-discovery/usart/README deleted file mode 100644 index 6d09139..0000000 --- a/examples/stm32/f1/stm32-discovery/usart/README +++ /dev/null @@ -1,12 +0,0 @@ ------------------------------------------------------------------------------- -README ------------------------------------------------------------------------------- - -This example program sends some characters on USART1 on the -ST STM32VLDISCOVERY eval board. - -The terminal settings for the receiving device/PC are 38400 8n1. - -The sending is done in a blocking way in the code, see the usart_irq example -for a more elaborate USART example. - diff --git a/examples/stm32/f1/stm32-discovery/usart/usart.c b/examples/stm32/f1/stm32-discovery/usart/usart.c deleted file mode 100644 index 942805b..0000000 --- a/examples/stm32/f1/stm32-discovery/usart/usart.c +++ /dev/null @@ -1,87 +0,0 @@ -/* - * This file is part of the libopencm3 project. - * - * Copyright (C) 2009 Uwe Hermann - * - * This program is free software: you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation, either version 3 of the License, or - * (at your option) any later version. - * - * This program 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 General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with this program. If not, see . - */ - -#include -#include -#include - -void clock_setup(void) -{ - rcc_clock_setup_in_hse_8mhz_out_24mhz(); - - /* Enable GPIOC clock. */ - rcc_peripheral_enable_clock(&RCC_APB2ENR, RCC_APB2ENR_IOPCEN); - - /* Enable clocks for GPIO port A (for GPIO_USART1_TX) and USART1. */ - rcc_peripheral_enable_clock(&RCC_APB2ENR, RCC_APB2ENR_IOPAEN); - rcc_peripheral_enable_clock(&RCC_APB2ENR, RCC_APB2ENR_USART1EN); -} - -void usart_setup(void) -{ - /* Setup GPIO pin GPIO_USART1_TX/GPIO9 on GPIO port A for transmit. */ - gpio_set_mode(GPIOA, GPIO_MODE_OUTPUT_50_MHZ, - GPIO_CNF_OUTPUT_ALTFN_PUSHPULL, GPIO_USART1_TX); - - /* Setup UART parameters. */ - // usart_set_baudrate(USART1, 38400); - /* TODO usart_set_baudrate() doesn't support 24MHz clock (yet). */ - /* This is the equivalent: */ - USART_BRR(USART1) = (u16)((24000000 << 4) / (38400 * 16)); - - usart_set_databits(USART1, 8); - usart_set_stopbits(USART1, USART_STOPBITS_1); - usart_set_mode(USART1, USART_MODE_TX); - usart_set_parity(USART1, USART_PARITY_NONE); - usart_set_flow_control(USART1, USART_FLOWCONTROL_NONE); - - /* Finally enable the USART. */ - usart_enable(USART1); -} - -void gpio_setup(void) -{ - /* Set GPIO9 (in GPIO port C) to 'output push-pull'. [LED] */ - gpio_set_mode(GPIOC, GPIO_MODE_OUTPUT_2_MHZ, - GPIO_CNF_OUTPUT_PUSHPULL, GPIO9); -} - -int main(void) -{ - int i, j = 0, c = 0; - - clock_setup(); - gpio_setup(); - usart_setup(); - - /* Blink the LED (PC9) on the board with every transmitted byte. */ - while (1) { - gpio_toggle(GPIOC, GPIO9); /* LED on/off */ - usart_send_blocking(USART1, c + '0'); /* USART1: Send byte. */ - c = (c == 9) ? 0 : c + 1; /* Increment c. */ - if ((j++ % 80) == 0) { /* Newline after line full. */ - usart_send_blocking(USART1, '\r'); - usart_send_blocking(USART1, '\n'); - } - for (i = 0; i < 800000; i++) /* Wait a bit. */ - __asm__("NOP"); - } - - return 0; -} diff --git a/examples/stm32/f1/stm32-discovery/usart/usart.ld b/examples/stm32/f1/stm32-discovery/usart/usart.ld deleted file mode 100644 index 157204a..0000000 --- a/examples/stm32/f1/stm32-discovery/usart/usart.ld +++ /dev/null @@ -1,31 +0,0 @@ -/* - * This file is part of the libopencm3 project. - * - * Copyright (C) 2009 Uwe Hermann - * - * This program is free software: you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation, either version 3 of the License, or - * (at your option) any later version. - * - * This program 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 General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with this program. If not, see . - */ - -/* Linker script for ST STM32VLDISCOVERY (STM32F100RB, 128K flash, 8K RAM). */ - -/* Define memory regions. */ -MEMORY -{ - rom (rx) : ORIGIN = 0x08000000, LENGTH = 128K - ram (rwx) : ORIGIN = 0x20000000, LENGTH = 8K -} - -/* Include the common ld script. */ -INCLUDE libopencm3_stm32f1.ld - diff --git a/examples/stm32/f1/stm32vl-discovery/button/Makefile b/examples/stm32/f1/stm32vl-discovery/button/Makefile new file mode 100644 index 0000000..96731c2 --- /dev/null +++ b/examples/stm32/f1/stm32vl-discovery/button/Makefile @@ -0,0 +1,23 @@ +## +## This file is part of the libopencm3 project. +## +## Copyright (C) 2009 Uwe Hermann +## +## This program is free software: you can redistribute it and/or modify +## it under the terms of the GNU General Public License as published by +## the Free Software Foundation, either version 3 of the License, or +## (at your option) any later version. +## +## This program 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 General Public License for more details. +## +## You should have received a copy of the GNU General Public License +## along with this program. If not, see . +## + +BINARY = button + +include ../../Makefile.include + diff --git a/examples/stm32/f1/stm32vl-discovery/button/README b/examples/stm32/f1/stm32vl-discovery/button/README new file mode 100644 index 0000000..38bc1ea --- /dev/null +++ b/examples/stm32/f1/stm32vl-discovery/button/README @@ -0,0 +1,8 @@ +------------------------------------------------------------------------------ +README +------------------------------------------------------------------------------ + +This example blinks the green LED on the ST STM32VLDISCOVERY eval board. + +When you press the 'USER' button, the blinking is slower. + diff --git a/examples/stm32/f1/stm32vl-discovery/button/button.c b/examples/stm32/f1/stm32vl-discovery/button/button.c new file mode 100644 index 0000000..87ce5cc --- /dev/null +++ b/examples/stm32/f1/stm32vl-discovery/button/button.c @@ -0,0 +1,76 @@ +/* + * This file is part of the libopencm3 project. + * + * Copyright (C) 2009 Uwe Hermann , + * Copyright (C) 2010 Piotr Esden-Tempski + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 3 of the License, or + * (at your option) any later version. + * + * This program 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 General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ + +#include +#include + +u16 exti_line_state; + +/* Set STM32 to 24 MHz. */ +void clock_setup(void) +{ + rcc_clock_setup_in_hse_8mhz_out_24mhz(); +} + +void gpio_setup(void) +{ + /* Enable GPIOC clock. */ + rcc_peripheral_enable_clock(&RCC_APB2ENR, RCC_APB2ENR_IOPCEN); + + /* Set GPIO9 (in GPIO port C) to 'output push-pull'. */ + gpio_set_mode(GPIOC, GPIO_MODE_OUTPUT_50_MHZ, + GPIO_CNF_OUTPUT_PUSHPULL, GPIO9); +} + +void button_setup(void) +{ + /* Enable GPIOA clock. */ + rcc_peripheral_enable_clock(&RCC_APB2ENR, RCC_APB2ENR_IOPAEN); + + /* Set GPIO0 (in GPIO port A) to 'input open-drain'. */ + gpio_set_mode(GPIOA, GPIO_MODE_INPUT, + GPIO_CNF_INPUT_FLOAT, GPIO0); +} + +int main(void) +{ + int i; + + clock_setup(); + gpio_setup(); + button_setup(); + + /* Blink the LED (PC9) on the board. */ + while (1) { + gpio_toggle(GPIOC, GPIO9); + + /* Upon button press, blink more slowly. */ + exti_line_state = GPIOA_IDR; + if ((exti_line_state & (1 << 0)) != 0) { + for (i = 0; i < 800000; i++) /* Wait a bit. */ + __asm__("nop"); + } + + for (i = 0; i < 800000; i++) /* Wait a bit. */ + __asm__("nop"); + } + + return 0; +} diff --git a/examples/stm32/f1/stm32vl-discovery/button/button.ld b/examples/stm32/f1/stm32vl-discovery/button/button.ld new file mode 100644 index 0000000..157204a --- /dev/null +++ b/examples/stm32/f1/stm32vl-discovery/button/button.ld @@ -0,0 +1,31 @@ +/* + * This file is part of the libopencm3 project. + * + * Copyright (C) 2009 Uwe Hermann + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 3 of the License, or + * (at your option) any later version. + * + * This program 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 General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ + +/* Linker script for ST STM32VLDISCOVERY (STM32F100RB, 128K flash, 8K RAM). */ + +/* Define memory regions. */ +MEMORY +{ + rom (rx) : ORIGIN = 0x08000000, LENGTH = 128K + ram (rwx) : ORIGIN = 0x20000000, LENGTH = 8K +} + +/* Include the common ld script. */ +INCLUDE libopencm3_stm32f1.ld + diff --git a/examples/stm32/f1/stm32vl-discovery/fancyblink/Makefile b/examples/stm32/f1/stm32vl-discovery/fancyblink/Makefile new file mode 100644 index 0000000..1baec4d --- /dev/null +++ b/examples/stm32/f1/stm32vl-discovery/fancyblink/Makefile @@ -0,0 +1,23 @@ +## +## This file is part of the libopencm3 project. +## +## Copyright (C) 2009 Uwe Hermann +## +## This program is free software: you can redistribute it and/or modify +## it under the terms of the GNU General Public License as published by +## the Free Software Foundation, either version 3 of the License, or +## (at your option) any later version. +## +## This program 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 General Public License for more details. +## +## You should have received a copy of the GNU General Public License +## along with this program. If not, see . +## + +BINARY = fancyblink + +include ../../Makefile.include + diff --git a/examples/stm32/f1/stm32vl-discovery/fancyblink/README b/examples/stm32/f1/stm32vl-discovery/fancyblink/README new file mode 100644 index 0000000..b5d794c --- /dev/null +++ b/examples/stm32/f1/stm32vl-discovery/fancyblink/README @@ -0,0 +1,9 @@ +------------------------------------------------------------------------------ +README +------------------------------------------------------------------------------ + +This is the smallest-possible example program using libopencm3. + +It's intended for the ST STM32VLDISCOVERY eval board. It should blink +the LEDs on the board. + diff --git a/examples/stm32/f1/stm32vl-discovery/fancyblink/fancyblink.c b/examples/stm32/f1/stm32vl-discovery/fancyblink/fancyblink.c new file mode 100644 index 0000000..38a4c4b --- /dev/null +++ b/examples/stm32/f1/stm32vl-discovery/fancyblink/fancyblink.c @@ -0,0 +1,61 @@ +/* + * This file is part of the libopencm3 project. + * + * Copyright (C) 2009 Uwe Hermann + * Copyright (C) 2011 Damjan Marion + * Copyright (C) 2011 Mark Panajotovic + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 3 of the License, or + * (at your option) any later version. + * + * This program 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 General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ + +#include +#include + +/* Set STM32 to 24 MHz. */ +void clock_setup(void) +{ + rcc_clock_setup_in_hse_8mhz_out_24mhz(); + + /* Enable GPIOC clock. */ + rcc_peripheral_enable_clock(&RCC_APB2ENR, RCC_APB2ENR_IOPCEN); +} + +void gpio_setup(void) +{ + /* Set GPIO8/9 (in GPIO port C) to 'output push-pull'. */ + gpio_set_mode(GPIOC, GPIO_MODE_OUTPUT_50_MHZ, + GPIO_CNF_OUTPUT_PUSHPULL, GPIO8); + gpio_set_mode(GPIOC, GPIO_MODE_OUTPUT_50_MHZ, + GPIO_CNF_OUTPUT_PUSHPULL, GPIO9); +} + +int main(void) +{ + int i; + + clock_setup(); + gpio_setup(); + + /* Set one LED for wigwag effect when toggling. */ + gpio_set(GPIOC, GPIO8); + + /* Blink the LEDs (PC8 and PC9) on the board. */ + while (1) { + gpio_toggle(GPIOC, GPIO8 | GPIO9); /* Toggle LEDs. */ + for (i = 0; i < 2000000; i++) /* Wait a bit. */ + __asm__("nop"); + } + + return 0; +} diff --git a/examples/stm32/f1/stm32vl-discovery/fancyblink/fancyblink.ld b/examples/stm32/f1/stm32vl-discovery/fancyblink/fancyblink.ld new file mode 100644 index 0000000..157204a --- /dev/null +++ b/examples/stm32/f1/stm32vl-discovery/fancyblink/fancyblink.ld @@ -0,0 +1,31 @@ +/* + * This file is part of the libopencm3 project. + * + * Copyright (C) 2009 Uwe Hermann + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 3 of the License, or + * (at your option) any later version. + * + * This program 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 General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ + +/* Linker script for ST STM32VLDISCOVERY (STM32F100RB, 128K flash, 8K RAM). */ + +/* Define memory regions. */ +MEMORY +{ + rom (rx) : ORIGIN = 0x08000000, LENGTH = 128K + ram (rwx) : ORIGIN = 0x20000000, LENGTH = 8K +} + +/* Include the common ld script. */ +INCLUDE libopencm3_stm32f1.ld + diff --git a/examples/stm32/f1/stm32vl-discovery/miniblink/Makefile b/examples/stm32/f1/stm32vl-discovery/miniblink/Makefile new file mode 100644 index 0000000..24a478b --- /dev/null +++ b/examples/stm32/f1/stm32vl-discovery/miniblink/Makefile @@ -0,0 +1,23 @@ +## +## This file is part of the libopencm3 project. +## +## Copyright (C) 2009 Uwe Hermann +## +## This program is free software: you can redistribute it and/or modify +## it under the terms of the GNU General Public License as published by +## the Free Software Foundation, either version 3 of the License, or +## (at your option) any later version. +## +## This program 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 General Public License for more details. +## +## You should have received a copy of the GNU General Public License +## along with this program. If not, see . +## + +BINARY = miniblink + +include ../../Makefile.include + diff --git a/examples/stm32/f1/stm32vl-discovery/miniblink/README b/examples/stm32/f1/stm32vl-discovery/miniblink/README new file mode 100644 index 0000000..cffce60 --- /dev/null +++ b/examples/stm32/f1/stm32vl-discovery/miniblink/README @@ -0,0 +1,9 @@ +------------------------------------------------------------------------------ +README +------------------------------------------------------------------------------ + +This is the smallest-possible example program using libopencm3. + +It's intended for the ST STM32VLDISCOVERY eval board. It should blink +the blue LED on the board. + diff --git a/examples/stm32/f1/stm32vl-discovery/miniblink/miniblink.c b/examples/stm32/f1/stm32vl-discovery/miniblink/miniblink.c new file mode 100644 index 0000000..973fab5 --- /dev/null +++ b/examples/stm32/f1/stm32vl-discovery/miniblink/miniblink.c @@ -0,0 +1,71 @@ +/* + * This file is part of the libopencm3 project. + * + * Copyright (C) 2009 Uwe Hermann + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 3 of the License, or + * (at your option) any later version. + * + * This program 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 General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ + +#include +#include + +void gpio_setup(void) +{ + /* Enable GPIOC clock. */ + /* Manually: */ + // RCC_APB2ENR |= RCC_APB2ENR_IOPCEN; + /* Using API functions: */ + rcc_peripheral_enable_clock(&RCC_APB2ENR, RCC_APB2ENR_IOPCEN); + + /* Set GPIO8 (in GPIO port C) to 'output push-pull'. */ + /* Manually: */ + // GPIOC_CRH = (GPIO_CNF_OUTPUT_PUSHPULL << (((8 - 8) * 4) + 2)); + // GPIOC_CRH |= (GPIO_MODE_OUTPUT_2_MHZ << ((8 - 8) * 4)); + /* Using API functions: */ + gpio_set_mode(GPIOC, GPIO_MODE_OUTPUT_2_MHZ, + GPIO_CNF_OUTPUT_PUSHPULL, GPIO8); +} + +int main(void) +{ + int i; + + gpio_setup(); + + /* Blink the LED (PC8) on the board. */ + while (1) { + /* Manually: */ + // GPIOC_BSRR = GPIO8; /* LED off */ + // for (i = 0; i < 800000; i++) /* Wait a bit. */ + // __asm__("nop"); + // GPIOC_BRR = GPIO8; /* LED on */ + // for (i = 0; i < 800000; i++) /* Wait a bit. */ + // __asm__("nop"); + + /* Using API functions gpio_set()/gpio_clear(): */ + // gpio_set(GPIOC, GPIO8); /* LED off */ + // for (i = 0; i < 800000; i++) /* Wait a bit. */ + // __asm__("nop"); + // gpio_clear(GPIOC, GPIO8); /* LED on */ + // for (i = 0; i < 800000; i++) /* Wait a bit. */ + // __asm__("nop"); + + /* Using API function gpio_toggle(): */ + gpio_toggle(GPIOC, GPIO8); /* LED on/off */ + for (i = 0; i < 800000; i++) /* Wait a bit. */ + __asm__("nop"); + } + + return 0; +} diff --git a/examples/stm32/f1/stm32vl-discovery/miniblink/miniblink.ld b/examples/stm32/f1/stm32vl-discovery/miniblink/miniblink.ld new file mode 100644 index 0000000..157204a --- /dev/null +++ b/examples/stm32/f1/stm32vl-discovery/miniblink/miniblink.ld @@ -0,0 +1,31 @@ +/* + * This file is part of the libopencm3 project. + * + * Copyright (C) 2009 Uwe Hermann + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 3 of the License, or + * (at your option) any later version. + * + * This program 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 General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ + +/* Linker script for ST STM32VLDISCOVERY (STM32F100RB, 128K flash, 8K RAM). */ + +/* Define memory regions. */ +MEMORY +{ + rom (rx) : ORIGIN = 0x08000000, LENGTH = 128K + ram (rwx) : ORIGIN = 0x20000000, LENGTH = 8K +} + +/* Include the common ld script. */ +INCLUDE libopencm3_stm32f1.ld + diff --git a/examples/stm32/f1/stm32vl-discovery/rtc/Makefile b/examples/stm32/f1/stm32vl-discovery/rtc/Makefile new file mode 100644 index 0000000..1efa7ac --- /dev/null +++ b/examples/stm32/f1/stm32vl-discovery/rtc/Makefile @@ -0,0 +1,23 @@ +## +## This file is part of the libopencm3 project. +## +## Copyright (C) 2009 Uwe Hermann +## +## This program is free software: you can redistribute it and/or modify +## it under the terms of the GNU General Public License as published by +## the Free Software Foundation, either version 3 of the License, or +## (at your option) any later version. +## +## This program 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 General Public License for more details. +## +## You should have received a copy of the GNU General Public License +## along with this program. If not, see . +## + +BINARY = rtc + +include ../../Makefile.include + diff --git a/examples/stm32/f1/stm32vl-discovery/rtc/README b/examples/stm32/f1/stm32vl-discovery/rtc/README new file mode 100644 index 0000000..d4509e4 --- /dev/null +++ b/examples/stm32/f1/stm32vl-discovery/rtc/README @@ -0,0 +1,9 @@ +------------------------------------------------------------------------------ +README +------------------------------------------------------------------------------ + +This is a small RTC example project. + +It blinks the ST STM32VLDISCOVERY's blue LED at 1Hz, and sends the value of +the RTC counter register down the serial line (PA9) at 38400,8N1. + diff --git a/examples/stm32/f1/stm32vl-discovery/rtc/rtc.c b/examples/stm32/f1/stm32vl-discovery/rtc/rtc.c new file mode 100644 index 0000000..fa8a966 --- /dev/null +++ b/examples/stm32/f1/stm32vl-discovery/rtc/rtc.c @@ -0,0 +1,129 @@ +/* + * This file is part of the libopencm3 project. + * + * Copyright (C) 2010 Lord James + * Copyright (C) 2011 Mark Panajotovic + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 3 of the License, or + * (at your option) any later version. + * + * This program 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 General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ + +#include +#include +#include +#include +#include +#include + +void clock_setup(void) +{ + rcc_clock_setup_in_hse_8mhz_out_24mhz(); + + /* Enable GPIOC clock. */ + rcc_peripheral_enable_clock(&RCC_APB2ENR, RCC_APB2ENR_IOPCEN); + + /* Enable clocks for GPIO port A (for GPIO_USART1_TX) and USART1. */ + rcc_peripheral_enable_clock(&RCC_APB2ENR, RCC_APB2ENR_IOPAEN); + rcc_peripheral_enable_clock(&RCC_APB2ENR, RCC_APB2ENR_USART1EN); +} + +void usart_setup(void) +{ + /* Setup GPIO pin GPIO_USART1_TX/GPIO9 on GPIO port A for transmit. */ + gpio_set_mode(GPIOA, GPIO_MODE_OUTPUT_50_MHZ, + GPIO_CNF_OUTPUT_ALTFN_PUSHPULL, GPIO_USART1_TX); + + /* Setup UART parameters. */ + // usart_set_baudrate(USART1, 38400); + /* TODO usart_set_baudrate() doesn't support 24MHz clock (yet). */ + /* This is the equivalent: */ + USART_BRR(USART1) = (u16)((24000000 << 4) / (38400 * 16)); + + usart_set_databits(USART1, 8); + usart_set_stopbits(USART1, USART_STOPBITS_1); + usart_set_mode(USART1, USART_MODE_TX); + usart_set_parity(USART1, USART_PARITY_NONE); + usart_set_flow_control(USART1, USART_FLOWCONTROL_NONE); + + /* Finally enable the USART. */ + usart_enable(USART1); +} + +void gpio_setup(void) +{ + /* Set GPIO8 (in GPIO port C) to 'output push-pull'. */ + /* This drives the blue LED on the STM32VLDISCOVERY. */ + gpio_set_mode(GPIOC, GPIO_MODE_OUTPUT_2_MHZ, + GPIO_CNF_OUTPUT_PUSHPULL, GPIO8); +} + +void nvic_setup(void) +{ + /* Without this the RTC interrupt routine will never be called. */ + nvic_enable_irq(NVIC_RTC_IRQ); + nvic_set_priority(NVIC_RTC_IRQ, 1); +} + +void rtc_isr(void) +{ + volatile u32 j = 0, c = 0; + + /* The interrupt flag isn't cleared by hardware, we have to do it. */ + rtc_clear_flag(RTC_SEC); + + /* Visual output. */ + gpio_toggle(GPIOC, GPIO8); + + c = rtc_get_counter_val(); + + /* Display the current counter value in binary via USART1. */ + for (j = 0; j < 32; j++) { + if ((c & (0x80000000 >> j)) != 0) + usart_send_blocking(USART1, '1'); + else + usart_send_blocking(USART1, '0'); + } + usart_send_blocking(USART1, '\n'); + usart_send_blocking(USART1, '\r'); +} + +int main(void) +{ + clock_setup(); + gpio_setup(); + usart_setup(); + + /* + * If the RTC is pre-configured just allow access, don't reconfigure. + * Otherwise enable it with the LSE as clock source and 0x7fff as + * prescale value. + */ + rtc_auto_awake(LSE, 0x7fff); + + /* The above mode will not reset the RTC when you press the RST button. + * It will also continue to count while the MCU is held in reset. If + * you want it to reset, comment out the above and use the following: + */ + // rtc_awake_from_off(LSE); + // rtc_set_prescale_val(0x7fff); + + /* Setup the RTC interrupt. */ + nvic_setup(); + + /* Enable the RTC interrupt to occur off the SEC flag. */ + rtc_interrupt_enable(RTC_SEC); + + while(1); + + return 0; +} diff --git a/examples/stm32/f1/stm32vl-discovery/rtc/rtc.ld b/examples/stm32/f1/stm32vl-discovery/rtc/rtc.ld new file mode 100644 index 0000000..157204a --- /dev/null +++ b/examples/stm32/f1/stm32vl-discovery/rtc/rtc.ld @@ -0,0 +1,31 @@ +/* + * This file is part of the libopencm3 project. + * + * Copyright (C) 2009 Uwe Hermann + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 3 of the License, or + * (at your option) any later version. + * + * This program 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 General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ + +/* Linker script for ST STM32VLDISCOVERY (STM32F100RB, 128K flash, 8K RAM). */ + +/* Define memory regions. */ +MEMORY +{ + rom (rx) : ORIGIN = 0x08000000, LENGTH = 128K + ram (rwx) : ORIGIN = 0x20000000, LENGTH = 8K +} + +/* Include the common ld script. */ +INCLUDE libopencm3_stm32f1.ld + diff --git a/examples/stm32/f1/stm32vl-discovery/usart/Makefile b/examples/stm32/f1/stm32vl-discovery/usart/Makefile new file mode 100644 index 0000000..2c1e1b1 --- /dev/null +++ b/examples/stm32/f1/stm32vl-discovery/usart/Makefile @@ -0,0 +1,23 @@ +## +## This file is part of the libopencm3 project. +## +## Copyright (C) 2009 Uwe Hermann +## +## This program is free software: you can redistribute it and/or modify +## it under the terms of the GNU General Public License as published by +## the Free Software Foundation, either version 3 of the License, or +## (at your option) any later version. +## +## This program 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 General Public License for more details. +## +## You should have received a copy of the GNU General Public License +## along with this program. If not, see . +## + +BINARY = usart + +include ../../Makefile.include + diff --git a/examples/stm32/f1/stm32vl-discovery/usart/README b/examples/stm32/f1/stm32vl-discovery/usart/README new file mode 100644 index 0000000..6d09139 --- /dev/null +++ b/examples/stm32/f1/stm32vl-discovery/usart/README @@ -0,0 +1,12 @@ +------------------------------------------------------------------------------ +README +------------------------------------------------------------------------------ + +This example program sends some characters on USART1 on the +ST STM32VLDISCOVERY eval board. + +The terminal settings for the receiving device/PC are 38400 8n1. + +The sending is done in a blocking way in the code, see the usart_irq example +for a more elaborate USART example. + diff --git a/examples/stm32/f1/stm32vl-discovery/usart/usart.c b/examples/stm32/f1/stm32vl-discovery/usart/usart.c new file mode 100644 index 0000000..942805b --- /dev/null +++ b/examples/stm32/f1/stm32vl-discovery/usart/usart.c @@ -0,0 +1,87 @@ +/* + * This file is part of the libopencm3 project. + * + * Copyright (C) 2009 Uwe Hermann + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 3 of the License, or + * (at your option) any later version. + * + * This program 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 General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ + +#include +#include +#include + +void clock_setup(void) +{ + rcc_clock_setup_in_hse_8mhz_out_24mhz(); + + /* Enable GPIOC clock. */ + rcc_peripheral_enable_clock(&RCC_APB2ENR, RCC_APB2ENR_IOPCEN); + + /* Enable clocks for GPIO port A (for GPIO_USART1_TX) and USART1. */ + rcc_peripheral_enable_clock(&RCC_APB2ENR, RCC_APB2ENR_IOPAEN); + rcc_peripheral_enable_clock(&RCC_APB2ENR, RCC_APB2ENR_USART1EN); +} + +void usart_setup(void) +{ + /* Setup GPIO pin GPIO_USART1_TX/GPIO9 on GPIO port A for transmit. */ + gpio_set_mode(GPIOA, GPIO_MODE_OUTPUT_50_MHZ, + GPIO_CNF_OUTPUT_ALTFN_PUSHPULL, GPIO_USART1_TX); + + /* Setup UART parameters. */ + // usart_set_baudrate(USART1, 38400); + /* TODO usart_set_baudrate() doesn't support 24MHz clock (yet). */ + /* This is the equivalent: */ + USART_BRR(USART1) = (u16)((24000000 << 4) / (38400 * 16)); + + usart_set_databits(USART1, 8); + usart_set_stopbits(USART1, USART_STOPBITS_1); + usart_set_mode(USART1, USART_MODE_TX); + usart_set_parity(USART1, USART_PARITY_NONE); + usart_set_flow_control(USART1, USART_FLOWCONTROL_NONE); + + /* Finally enable the USART. */ + usart_enable(USART1); +} + +void gpio_setup(void) +{ + /* Set GPIO9 (in GPIO port C) to 'output push-pull'. [LED] */ + gpio_set_mode(GPIOC, GPIO_MODE_OUTPUT_2_MHZ, + GPIO_CNF_OUTPUT_PUSHPULL, GPIO9); +} + +int main(void) +{ + int i, j = 0, c = 0; + + clock_setup(); + gpio_setup(); + usart_setup(); + + /* Blink the LED (PC9) on the board with every transmitted byte. */ + while (1) { + gpio_toggle(GPIOC, GPIO9); /* LED on/off */ + usart_send_blocking(USART1, c + '0'); /* USART1: Send byte. */ + c = (c == 9) ? 0 : c + 1; /* Increment c. */ + if ((j++ % 80) == 0) { /* Newline after line full. */ + usart_send_blocking(USART1, '\r'); + usart_send_blocking(USART1, '\n'); + } + for (i = 0; i < 800000; i++) /* Wait a bit. */ + __asm__("NOP"); + } + + return 0; +} diff --git a/examples/stm32/f1/stm32vl-discovery/usart/usart.ld b/examples/stm32/f1/stm32vl-discovery/usart/usart.ld new file mode 100644 index 0000000..157204a --- /dev/null +++ b/examples/stm32/f1/stm32vl-discovery/usart/usart.ld @@ -0,0 +1,31 @@ +/* + * This file is part of the libopencm3 project. + * + * Copyright (C) 2009 Uwe Hermann + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 3 of the License, or + * (at your option) any later version. + * + * This program 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 General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ + +/* Linker script for ST STM32VLDISCOVERY (STM32F100RB, 128K flash, 8K RAM). */ + +/* Define memory regions. */ +MEMORY +{ + rom (rx) : ORIGIN = 0x08000000, LENGTH = 128K + ram (rwx) : ORIGIN = 0x20000000, LENGTH = 8K +} + +/* Include the common ld script. */ +INCLUDE libopencm3_stm32f1.ld + -- cgit v1.2.3