Add: initial (working) blinky light program
commit
bd8a3828d9
|
|
@ -0,0 +1,6 @@
|
||||||
|
[submodule "lib/libopencm3"]
|
||||||
|
path = lib/libopencm3
|
||||||
|
url = https://github.com/libopencm3/libopencm3
|
||||||
|
[submodule "lib/FreeRTOS"]
|
||||||
|
path = lib/FreeRTOS
|
||||||
|
url = https://github.com/FreeRTOS/FreeRTOS
|
||||||
|
|
@ -0,0 +1,38 @@
|
||||||
|
NAME=blinky
|
||||||
|
|
||||||
|
PREFIX?=arm-none-eabi-
|
||||||
|
CC=$(PREFIX)gcc
|
||||||
|
AS=$(PREFIX)as
|
||||||
|
OBJCOPY=$(PREFIX)objcopy
|
||||||
|
|
||||||
|
VPATH=src
|
||||||
|
|
||||||
|
.SECONDARY:
|
||||||
|
|
||||||
|
clean:
|
||||||
|
rm -f lib/libopencm3/lib/libopencm3_stm32f4.a
|
||||||
|
rm -f $(NAME).bin
|
||||||
|
rm -f $(NAME).elf
|
||||||
|
rm -f $(NAME).o
|
||||||
|
|
||||||
|
clobber:
|
||||||
|
rm -f lib/libopencm3/lib/libopencm3_stm32f4.a
|
||||||
|
rm -f $(NAME).bin
|
||||||
|
$(MAKE) -C lib/libopencm3 clean
|
||||||
|
|
||||||
|
libopencm3:
|
||||||
|
$(MAKE) -C lib/libopencm3 TARGETS=stm32/f4
|
||||||
|
|
||||||
|
flash: $(NAME).bin
|
||||||
|
st-flash write $(NAME).bin 0x8000000
|
||||||
|
|
||||||
|
all: libopencm3 $(NAME).bin
|
||||||
|
|
||||||
|
%.o: %.c
|
||||||
|
$(CC) -Og -g -Wall -std=c99 -mthumb -mcpu=cortex-m4 -mfloat-abi=hard -Ilib/libopencm3/include -DSTM32F4 -c $< -o $@
|
||||||
|
|
||||||
|
%.elf: %.o
|
||||||
|
$(CC) --static -nostartfiles -Tnucleo-f411re.ld -mthumb -mcpu=cortex-m4 -mfloat-abi=hard -Llib/libopencm3/lib $< -lopencm3_stm32f4 -o $@
|
||||||
|
|
||||||
|
%.bin: %.elf
|
||||||
|
$(OBJCOPY) $< -O binary $@
|
||||||
|
|
@ -0,0 +1 @@
|
||||||
|
#+Title: Oof Oww Ouch... My Blinky Arm
|
||||||
|
|
@ -0,0 +1,23 @@
|
||||||
|
[
|
||||||
|
{
|
||||||
|
"arguments": [
|
||||||
|
"/usr/bin/arm-none-eabi-gcc",
|
||||||
|
"-Og",
|
||||||
|
"-g",
|
||||||
|
"-Wall",
|
||||||
|
"-std=c99",
|
||||||
|
"-mthumb",
|
||||||
|
"-mcpu=cortex-m4",
|
||||||
|
"-mfloat-abi=hard",
|
||||||
|
"-Ilib/libopencm3/include",
|
||||||
|
"-DSTM32F4",
|
||||||
|
"-c",
|
||||||
|
"-o",
|
||||||
|
"blinky.o",
|
||||||
|
"src/blinky.c"
|
||||||
|
],
|
||||||
|
"directory": "/home/fckr/progs/stm32/blinky-arm",
|
||||||
|
"file": "/home/fckr/progs/stm32/blinky-arm/src/blinky.c",
|
||||||
|
"output": "/home/fckr/progs/stm32/blinky-arm/blinky.o"
|
||||||
|
}
|
||||||
|
]
|
||||||
|
|
@ -0,0 +1 @@
|
||||||
|
Subproject commit 82b4c249aa52239e90462fff0ebd628e51d6046c
|
||||||
|
|
@ -0,0 +1 @@
|
||||||
|
Subproject commit 1f3abd43763fa39d23e737602b6d0011a45c70b2
|
||||||
|
|
@ -0,0 +1,32 @@
|
||||||
|
/*
|
||||||
|
* This file is part of the libopencm3 project.
|
||||||
|
*
|
||||||
|
* Copyright (C) 2009 Uwe Hermann <uwe@hermann-uwe.de>
|
||||||
|
* Copyright (C) 2011 Stephen Caudle <scaudle@doceme.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/>.
|
||||||
|
*/
|
||||||
|
|
||||||
|
/* Linker script for Nucleo F411RE (STM32F411RE, 512K flash, 128K RAM). */
|
||||||
|
|
||||||
|
/* Define memory regions. */
|
||||||
|
MEMORY
|
||||||
|
{
|
||||||
|
rom (rx) : ORIGIN = 0x08000000, LENGTH = 512K
|
||||||
|
ram (rwx) : ORIGIN = 0x20000000, LENGTH = 128K
|
||||||
|
}
|
||||||
|
|
||||||
|
/* Include the common ld script. */
|
||||||
|
INCLUDE cortex-m-generic.ld
|
||||||
|
|
||||||
|
|
@ -0,0 +1,24 @@
|
||||||
|
#include <libopencm3/stm32/rcc.h>
|
||||||
|
#include <libopencm3/stm32/gpio.h>
|
||||||
|
|
||||||
|
static void gpio_setup(void) {
|
||||||
|
/* Enable GPIOC clock */
|
||||||
|
rcc_periph_clock_enable(RCC_GPIOA);
|
||||||
|
|
||||||
|
/* Set GPIO to output push-pull */
|
||||||
|
gpio_mode_setup(GPIOA, GPIO_MODE_OUTPUT, GPIO_PUPD_NONE, GPIO5);
|
||||||
|
}
|
||||||
|
|
||||||
|
int main(void) {
|
||||||
|
int i;
|
||||||
|
|
||||||
|
gpio_setup();
|
||||||
|
|
||||||
|
while (1) {
|
||||||
|
gpio_toggle(GPIOA, GPIO5);
|
||||||
|
for (i = 0; i < 1000000; i++) {
|
||||||
|
__asm__("nop");
|
||||||
|
}
|
||||||
|
}
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
Loading…
Reference in New Issue