Пт июн 08, 2012 12:31:51
Пт июн 08, 2012 15:06:03
Uklunok писал(а):Здрасьте В общем, собрал отладочную плату для МК ATSAM3U4C. А вот разбираться с методами программирования для ARM лень, да и нет времени.
Пт июн 08, 2012 15:23:43
Ассемблерный мнемокод (ARM-овский) тяжеловат для восприятия, но изучить его нужно, тк может сильно пригодиться при отладке.
Сб июн 09, 2012 10:12:03
coredumped писал(а):Uklunok писал(а):Здрасьте В общем, собрал отладочную плату для МК ATSAM3U4C. А вот разбираться с методами программирования для ARM лень, да и нет времени.
тогда какой смысл?
Сб июн 09, 2012 13:28:37
Вс июн 10, 2012 14:07:50
MOV R1,#99
in r1, PINA
Вс июн 10, 2012 15:01:35
... это где Вас этому научили?Uklunok писал(а):...почему максимальное число можно записать только 99?
... например здесь http://www.eng.auburn.edu/~nelson/cours ... syLang.pdfUklunok писал(а):где можно почитать полный список ассемблерных команд для arm
Вс июн 10, 2012 15:54:56
#99
lxi b, EA60
ldi a5,0b00010000
Пн июн 11, 2012 13:00:09
1). Подключить тактовый сигнал к нужному порту I/O.
2). Выбрать частоту тактирования.
3). Настроить порт на вывод.
4). Установить линию порта на вывод.
5). Записать данные в регистр.
Вт июн 12, 2012 16:50:32
;;; led-stm32.asm
;;; written by Frank Sergeant
;;; frank@pygmy.utoh.org
;;; http://pygmy.utoh.org/riscy
;;; This program is in the public domain. See http://pygmy.utoh.org/riscy/cortex/
;;; for notes about the program and how to assemble, link, and burn to flash.
;;; Blink the LED on the Olimex STM32-P103 ARM Cortex M3 board.
;;; Directives
.thumb ; (same as saying '.code 16')
.syntax unified
;;; Equates
.equ GPIOC_CRH, 0x40011004
.equ GPIOC_ODR, 0x4001100C
.equ RCC_APB2ENR, 0x40021018
.equ STACKINIT, 0x20005000
.equ LEDDELAY, 800000
.section .text
.org 0
;;; Vectors
vectors:
.word STACKINIT ; stack pointer value when stack is empty
.word _start + 1 ; reset vector (manually adjust to odd for thumb)
.word _nmi_handler + 1 ;
.word _hard_fault + 1 ;
.word _memory_fault + 1 ;
.word _bus_fault + 1 ;
.word _usage_fault + 1 ;
_start:
;; Enable the Port C peripheral clock by setting bit 4
ldr r6, = RCC_APB2ENR
mov r0, 0x10
str r0, [r6]
;; Set the config and mode bits for Port C bit 12 so it will
;; be a push-pull output (up to 50 MHz) by setting bits 19-16
;; to '0011'.
ldr r6, = GPIOC_CRH
ldr r0, = 0x44434444
str r0, [r6]
;; Load R2 and R3 with the "on" and "off" constants
mov r2, 0 ; value to turn on LED
mov r3, 0x1000 ; value to turn off LED
ldr r6, = GPIOC_ODR ; point to Port C output data register
loop:
str r2, [r6] ; clear Port C, pin 12, turning on LED
ldr r1, = LEDDELAY
delay1:
subs r1, 1
bne delay1
str r3, [r6] ; set Port C, pin 12, turning off LED
ldr r1, = LEDDELAY
delay2:
subs r1, 1
bne delay2
b loop ; continue forever
_dummy: ; if any int gets triggered, just hang in a loop
_nmi_handler:
_hard_fault:
_memory_fault:
_bus_fault:
_usage_fault:
add r0, 1
add r1, 1
b _dummy
Вт июн 12, 2012 22:21:47
Ср июн 13, 2012 05:49:59