Ярлыки

_GetPixelIndex (1) _SetPixelIndex (1) 3-phase (1) 800x480 (1) АЦП (1) генератор (1) синхронный усилитель (2) структура (1) учебный курс (1) шаговый двигатель (1) ШИМ (2) accert (1) AD7608 (1) AD8429 (1) ADC (5) amplifer (1) arccos (1) arcsin (1) arctang (2) arctg (3) ARM (2) arm_sqrt_q15 (2) assembler (6) ASSERT (1) atan (2) bit (1) Bitband (1) boot (3) bootlloader (1) BUTTON (1) C (5) C# (1) CAN (2) CC2530 (5) CMSIS (4) command (1) Cordic (1) Core746I (1) CubeMX (4) DBGMCU (2) debug (2) debug.ini (1) delegate (1) Digital Potentiometers (1) DigitalPOT (1) Discovery (1) DMA (9) DMA2D (1) DSP (1) DSP library (1) DWT (1) EFM32 (5) EmWin (9) EXTI (1) FATFS (1) FMC (2) FreeRTOS (2) gl868-dual cmux (1) GPIO (4) GUI (2) GUIBuilder (1) GUIDRV_CompactColor_16 (1) HAL (3) HappyGecko (1) Hard Fault (2) heap (1) I2C (1) ID (1) ILI9320 (1) ILI9325 (1) Initialisation (1) InitLTDC (1) Instrumentithion (1) Interrupt (4) ITR (1) JTAG (1) Keil (5) LCDConf (2) lock-in (1) LTCD (1) LTDC (3) main (1) memory (1) MINI_STM32 Revision 01 (1) nBoot0 (1) NVIC (1) OnePulse (2) OSAL (4) pack (1) phase (1) printf (3) Pulse (1) PWM (12) RCC (2) RCR (1) Register (1) RESET (2) RS232 (3) RSS (1) RTC (3) RTOS-RTX (1) RTT (1) RTX-RTOS (1) SDCard (1) SDRAM (6) Segger (2) SPI (3) sqrt (3) SSD1298 (1) SSD1963 (1) Standart Peripherial Library (3) STANDBAY (1) startup (1) STemWin (8) stepper motor (1) STlink (2) STM32 (17) STM32429ZI (1) STM32Cube (1) STM32DBG.IN (1) STM32F (28) STM32F0 (4) STM32F1 (13) STM32F4 (10) STM32F4 Discovery (1) STM32F407ZG (1) STM32F429 (2) STM32F746 (1) STOP (1) string (1) struct (1) SWD (1) SWD JTAG (1) Synhronization (1) system_stm32f4xx.c (1) SystemInit (1) SysTick (1) task (4) telit (1) TIM (27) typedef (1) UART (1) USART (9) viewer (2) WM_PAINT (1) Z-stack (5) ZigBee (5)

среда, 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

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

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