Страницы

Страницы

среда, 8 февраля 2012 г.

STM32F Module

Каждый проект разбивается на функционально обособленные модули. Но пока нас интересуют только ассемблерные. Например, для данного проекта можно выделить 4 модуля:

main.s — весь алгоритм программы сидит здесь.
led.s — весь код работы со светодиодами (инициализация, поджиг, тушение).
button.s — код работы с кнопкой (инициализация, опрос).
system.s — всякая дребедень (SystemInit и delay).

В каждом модуле нужно выделить экспортируемые процедуры. Это делается ключевым словом EXPORT:

EXPORT LedInit
EXPORT LedOn
EXPORT LedOff

После этого данные символы появятся в глобальной области видимости и могут быть использованы в других модулях. Подключается отдельный символ с помощью ключевого слова IMPORT:

IMPORT символ

Подключать в каждом файле эти функции тоже не удобно. Необходимо их объявить в одном файле и подключать только его. Как include в языке С.
Такой файл записывается таким образом (led.inc):

; Драйвер светодиодов
; Плата STM32F4-Discovery
; led.inc

AREA    |.text|, CODE, READONLY

; Инициализация выводов, подключённых к светодиодам
; Аргументы: нет
; Результат: нет
IMPORT LedInit
   
; Зажечь светодиод по его номеру
; Аргументы: 1
;  R0 - номер светодиода, от 0 до 3
; Результат: нет
IMPORT LedOn
   
; Погасить светодиод по его номеру
; Аргументы: 1
;  R0 - номер светодиода, от 0 до 3
; Результат: нет
IMPORT LedOff

END

Подключается это просто:

AREA    |.text|, CODE, READONLY

GET led.inc      ; Драйвер светодиодов
GET button.inc ; Драйвер кнопки
GET system.inc ; Задержка

arm_structure

Комментариев нет:

Отправить комментарий