Таблица векторов

Основное назначение таблицы векторов прерываний это направление потока исполнения в случае обработки различных событий. Таблица состоит из слов (4 байта) указателей (векторов). Первым словом идет указатель на дно (начало) стека. Остальные слова указывают на различные вектора.

Для этого изменим таблицу векторов в файле startup.c.

После можно собирать проект:

nis@jane ~/stm32/f4examples/02-ints/00-base $ make

arm-softfloat-linux-gnueabi-gcc -g -O2 -mlittle-endian -mthumb -ffreestanding -nostdlib -nostdinc -mcpu=cortex-m3 -DSTM32F4XX -I. -I../../../../stm32/stlink/example/libs_stm/inc/base -I../../../../stm32/stlink/example/libs_stm/inc/core_support -I../../../../stm32/stlink/example/libs_stm/inc/device_support -Wl,-T,stm32f4xxxg_flash.ld -c -o startup.o startup.c

arm-softfloat-linux-gnueabi-gcc -g -O2 -mlittle-endian -mthumb -ffreestanding -nostdlib -nostdinc -mcpu=cortex-m3 -DSTM32F4XX -I. -I../../../../stm32/stlink/example/libs_stm/inc/base -I../../../../stm32/stlink/example/libs_stm/inc/core_support -I../../../../stm32/stlink/example/libs_stm/inc/device_support -Wl,-T,stm32f4xxxg_flash.ld -o firmware.elf work.o startup.o -L.

arm-softfloat-linux-gnueabi-objcopy -O binary firmware.elf firmware.bin

Как видно бинарник заметно потяжелел:

nis@jane ~/stm32/f4examples/02-ints/00-base $ ls -l

итого 52

-rwxr-xr-x 1 nis nis 400 июля 22 21:37 firmware.bin

-rwxr-xr-x 1 nis nis 35761 июля 22 21:37 firmware.elf

-rw-r--r-- 1 nis nis 1371 июня 23 16:29 Makefile

-rw-r--r-- 1 nis nis 32 июля 22 21:01 README

-rw-r--r-- 1 nis nis 8564 июля 22 21:28 startup.c

-rw-r--r-- 1 nis nis 3172 июля 22 21:37 startup.o

-rw-r--r-- 1 nis nis 1671 апр. 8 19:09 stm32f4xxxg_flash.ld

-rw-r--r-- 1 nis nis 421 июня 22 11:08 work.c

-rw-r--r-- 1 nis nis 641 июня 23 11:01 work.h

-rw-r--r-- 1 nis nis 2296 июня 23 16:29 work.o