Вывод

Итак перед нами схема линии порта в/в в режиме вывода:

1) Буфер вывода включен:

  • В режиме открытого стока (5v логика)
  • В режиме тяни-толкай (обычный режим)

2) Триггер Шмитта активирован

3) Резисторы поддтяжки к питанию/земле активны но не зависят от значения в GPIOx_PUPDR регистре

3) Данные поступают на линии в течении одного тактового цикла

4) Читая данные с регистра ввода(GPIOx_IDR) мы получаем текущее состояние порта в/в

5) Читая данные с регистра вывода(GPIOx_ODR) мы получаем последнее записанное значение порта в/в

Итак начнем с создания проекта:

nis@jane ~/stm32/f4examples/01-gpio $ cp -av 00-base 01-led_en

nis@jane ~/stm32/f4examples/01-gpio $ cd 01-led_en/

Наша текущая цель это включить светодиоды на демоплате что мы и сделаем. Для этого необходимо изменить фунцию work() в файле work.c

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

nis@jane ~/stm32/f4examples/01-gpio/01-led_en $ 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 work.o work.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/01-gpio/01-led_en $ make write

qstlink2 -cewV ./firmware.bin

Verbose level: 2

Info: Devices list loaded.

Info: File Path: "./firmware.bin"

Info: Erasing: true

Info: Writing: true

Info: Found an ST Link V2.

Info: Opening device...

Info: Device Open.

Info: ChipID: "413"

Info: Device type: "STM32F4**"

Info: Verify not yet implemented.

Info: Writing from "8000000" to "8000038"

Info: Erasing flash... This might take some time.

Info: Transfer done

Info: Disconnected.

После загрузки на плате должны загореться 4 светодиода вокруг MEMS - Акселерометра: