На время отложил ПИКи и 51-е в сторону, чтобы понюхать, что народ нашел в этих зверюшках по имени STM32.
Заказал дешевенькую платку на "народном" 103-м чипе и ST-Link, а пока они в пути, начал понемногу осваивать документы, попутно пописывая тестовый базовый проект в Keil+CMSIS. Естественно возникают вопросы по ходу чтения.
Например такой: для чего нужен bit-banding GPIO при наличии BSRR и BRR (с ODR все понятно)?
Или такой: для чего нужен стартап файл? Вернее ясно, что в нем прописаны всякие хэндлеры и прочее, но почему все это прописано не в хедерах? Почему старт программы начинается не с main{}, а в этом файле со строк
Код: Выделить всё
; Reset handler
Reset_Handler PROC
EXPORT Reset_Handler [WEAK]
IMPORT __main
;IMPORT SystemInit
;LDR R0, =SystemInit
;BLX R0
LDR R0, =__main
BX R0
ENDP
System init закомментировал я сам, т.к. все это прописываю вручную сам.
Можно ли этот Reset_Handler прописать в основном исходнике, а если да, то что можно сделать с остальным?
P.S. Прописал его в исходник, удалил стартап. Проект скомпилировался, но выдал предупреждение: ".\Objects\Test.axf: Warning: L6320W: Ignoring --first command. Cannot find argument '__Vectors'."
Выходит, без стартапа никак?
Добавлено after 9 minutes 49 seconds:
Вернул стартап, но вышеуказанные строки заменил на
В исходнике при этом
Компиляцию проходит чисто, симуляция шагает правильно.
Будем считать, что иначе никак.
Пока остался вопрос с бит-бандингом.
Каждый имеет право на свое личное ошибочное мнение.
У меня было тяжелое детство - я до 14 лет смотрел черно-белый телевизор.