Keil µVision: новый чистый проект на ассемблере (продолжение)


Начало на первой странице.

Вероятно вы уже знаете, что такое заголовочный файл для камешка. Это файл на языке C, в котором содержатся имена периферии и соотв. им адреса. Не нужно определять имена вручную, не нужно путаться в длинных HEX адресах. Достаточно написать просто:

Atmel:
ldi R16, (1<<PB7)
out PORTB, R16

К пинам и портам мы обращаемся по имени. Точно так же сделано и в кортексах. Но вот в чём дело, к сожалению СИ-шный файл заголовков не подхватывается ассемблером в Keil. Я так и не смог разобраться, как его прицепить к ассемблеру. Пришлось сделать этот файл вручную. В принципе, это сделать нетрудно, вычистив из оригинального файла stm32f10x.h всякий мусор. В итоге, у меня получился файл stm32f10x.asm, который можно прикреплять к проекту и обращаться с периферией уже по-человечески, то есть по имени.

Ещё неплохо бы сделать вот что, вы вероятно захотите разбить весь проект на отдельные части, растолкав их по разным файлам. Создайте в каталоге с проектом папку inc. Складывайте в неё ассемблерные файлы, а вставить их в проект можно директивой GET.

GET C:\My Project\inc\external.asm

Упс.. И тут вы можете столкнуться с проблемой. К сожалению, Keil - он немножко туповатый, и не понимает пути к файлу, если в них содержатся пробелы. В этом случае, нужно указывать короткий путь к файлу в формате DOS. Для получения короткого пути, воспользуйтесь утилитой Path To Clipboard Валерия Доможирова.

Но более элегантно эту проблему можно решить, указав путь к папке с файлами в настройках ассемблера. Для этого, зайдите в настройки по ALT + F7. На вкладке Asm введите путь к папке с файлами в поле Include Paths. Можно ввести несколько путей через точку с запятой ;




Теперь директива GET упрощается. Достаточно указать имя файла, а путь к нему ассемблер ищет из Include Paths.

GET external.asm

Кстати, можно использовать даже русские имена файлов с пробелами. У меня работает.

На этом вступительная часть заканчивается. Мы создали новый чистый проект, который можно наполнять кодом. Продолжение - на страницах сайта stm32asm.ru. Желаю вам удачи и всяческого успеха в написании программ на ассемблере. Для такого мощного и доступного ядра, как Cortex-M3!

p.s. с кейлом я знакомился с кортексами и делал первые шаги в познании архитектуры ARM.
Всё это было в прошлом, и я уже давно так не работаю.

Теперь - исключительно блокнот, на утилитах GCC.