LINUX.ORG.RU

Базовый пример на ассемблере для STM32F103

 ,


0

2

Доброго всем дня! Дайте простой пример, который установит «1» и затем сбросит бит любого порта в/в (пускай даже без визуальной задержки). Пример нужен для микроконтроллера STM32F103C8T6, который можно собрать используя arm-none-eabi-as, arm-none-eabi-ld

Компиляцию понял как делать, но 3 день не могу составить базового примера. Прошу извинить, но обратиться больше нет к кому.

cat main.asm

.syntax unified
.thumb                      @ тип инструкций Thumb
.thumb_func
.cpu cortex-m3              @ STM32F103C8T6
.fpu softvfp

.section .text
.org 0                      @ указатель на начало памяти

vectors:                    @ векторы прерывания
    .word _reset + 1        @ Адрес перехода при сбросе
    .word	0x20020000	        @ Вершина стека

_reset:
   

_loop:
            B       _loop
.end

arm-none-eabi-as -mcpu=cortex-m3 -o arm_main.o main.asm &&
arm-none-eabi-ld -o arm_main.elf arm_main.o &&
arm-none-eabi-objcopy -O ihex arm_main.elf arm_main.hex &&
arm-none-eabi-objcopy -O binary arm_main.elf arm_main.bin


Последнее исправление: morkovkin (всего исправлений: 4)

Почему у тебя вершина стека стоит после reset вектора? и почему поленился написать свой ld скрипт? стандартный не годится для микроконтроллеров.

pftBest ★★★★
()
Ответ на: комментарий от morkovkin

Попробуй готовый ld-скрипт из libopencm3.

А зачем ассемблер? Это же не древний PIC, gcc отлично оптимизирует сишный код!

anonymous
()
Ответ на: комментарий от anonymous

А зачем ассемблер?

Очевидно что автор хочет разобраться как все работает, потому и взял ассемблер. Так что взять готовый ld скрипт будет слишком просто для него :)

pftBest ★★★★
()
Ответ на: комментарий от DarthVadimius

DarthVadimius, благодарю за ссылку, весьма познавательно. Очень жаль, что так мало актуальной литературы про эти микроконтроллеры я нашел в сети в свободном доступе.

pftBest, о возможности создавать ld скрипты узнал только из этой темы. Спасибо Вам за наводящие мысли.

Всем Бобра!

morkovkin
() автор топика
Ответ на: комментарий от morkovkin

Самая лучшая литература — даташит, мануал и еррата. Советую прежде всего хорошенько еррату изучить, т.к. у этого семейства багов полным-полно!

Ну и если будет желание работать с opencm3, можно надергать у меня всякой всячины.

anonymous
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.