STM32F429 >> Assembly

LED


參考資訊:
1. ds_pdf
2. pm_pdf
3. kit_pdf

LED測試使用PG-13


GPIO-G Clock


Mode


Output


main.s

  .equiv PORTG_BASE,  0x40021800
  .equiv GPIO_MODER,  0x0000
  .equiv GPIO_ODR,    0x0014
 
  .equiv RCC_BASE,    0x40023800 
  .equiv RCC_AHB1ENR, 0x0030
 
  .thumb
  .cpu cortex-m4
  .syntax unified
 
  .global _start
 
  .text
  .org 0x0000
_start:
  .word 0x20008000
  .word reset
 
  .org 0x0100
  .thumb_func
reset:
  ldr r0, =RCC_BASE
  ldr r1, [r0, #RCC_AHB1ENR]
  orr r1, #(1 << 6)
  str r1, [r0, #RCC_AHB1ENR]
 
  ldr r0, =PORTG_BASE
  ldr r1, =(1 << 26)
  str r1, [r0, #GPIO_MODER]
 
0:
  eor r1, #(1 << 13)
  str r1, [r0, #GPIO_ODR]
  ldr r2, =0x200000
1:
  subs r2, #1
  bne 1b
  b 0b
  .end

main.ld

MEMORY {
  RAM(xrw)   : ORIGIN = 0x20000000, LENGTH = 128K
  FLASH(xr ) : ORIGIN = 0x08000000, LENGTH = 128K
}

SECTIONS {
  .text   : { *(.text*) } > FLASH
  .rodata : { *(.rodata*) } > FLASH
  .bss    : { *(.bss*) } > FLASH
}

Makefile

all:
	arm-none-eabi-as -mcpu=cortex-m4 main.s -o main.o
	arm-none-eabi-ld -T main.ld -o main.elf main.o

flash:
	openocd -f /usr/local/share/openocd/scripts/interface/stlink.cfg -f /usr/local/share/openocd/scripts/target/stm32f4x.cfg -c "init; program main.elf; reset; exit;"

clean:
	rm -rf main.o main.elf

編譯、燒錄
1. 短路JP3
2. 短路CN4
3. 連接MiniUSB至PC
4. 執行如下命令

$ make
  arm-none-eabi-as -mcpu=cortex-m4 main.s -o main.o
  arm-none-eabi-ld -T main.ld -o main.elf main.o

$ make flash
  openocd -f /usr/local/share/openocd/scripts/interface/stlink.cfg -f /usr/local/share/openocd/scripts/target/stm32f4x.cfg -c "init; program main.elf; reset; exit;"
  Open On-Chip Debugger 0.11.0-rc1+dev-00010-gc69b4deae-dirty (2020-12-27-01:20)
  Licensed under GNU GPL v2
  For bug reports, read
    http://openocd.org/doc/doxygen/bugs.html
  Info : auto-selecting first available session transport "hla_swd". To override use 'transport select '.
  Info : The selected transport took over low-level target control. The results might differ compared to plain JTAG/SWD
  Info : clock speed 2000 kHz
  Info : STLINK V2J25M14 (API v2) VID:PID 0483:374B
  Info : Target voltage: 2.885361
  Info : stm32f4x.cpu: hardware has 6 breakpoints, 4 watchpoints
  Info : starting gdb server for stm32f4x.cpu on 3333
  Info : Listening on port 3333 for gdb connections
  Info : Unable to match requested speed 2000 kHz, using 1800 kHz
  Info : Unable to match requested speed 2000 kHz, using 1800 kHz
  target halted due to debug-request, current mode: Thread
  xPSR: 0x01000000 pc: 0x08000100 msp: 0x20008000
  Info : Unable to match requested speed 8000 kHz, using 4000 kHz
  Info : Unable to match requested speed 8000 kHz, using 4000 kHz
  ** Programming Started **
  Info : device id = 0x20016419
  Info : flash size = 2048 kbytes
  Info : Dual Bank 2048 kiB STM32F42x/43x/469/479 found
  ** Programming Finished **
  Info : Unable to match requested speed 2000 kHz, using 1800 kHz
  Info : Unable to match requested speed 2000 kHz, using 1800 kHz

完成


返回上一頁