Answer the question
In order to leave comments, you need to log in
How to blink an LED on STM32 in assembler?
Hello!
I continue to try to study the work of MK according to the textbook https://habrahabr.ru/post/274579/
I did everything the same for my controller. I have STM32F100C4T6B I
forwarded it to the 100th series according to RM, but nothing worked (does not blink, does not even light up).
Help me find the error, please.
@GNU AS
@ Настройки компилятора
.syntax unified @ тип синтаксиса
.thumb @ тип используемых инструкций Thumb
.cpu cortex-m3 @ микроконтроллер
.include "STM32F100.INC" @ файл определений микроконтроллера
@ макрос псевдокоманды MOV32, пока просто используем, не вникая как, что и почему
.macro MOV32 regnum,number
MOVW \regnum,:lower16:\number
MOVT \regnum,:upper16:\number
.endm
@ таблица векторов прерываний
.section .text
.word 0x20010000 @ Вершина стека
.word Reset+1 @ Вектор сброса
Reset:
@ включим тактирование GPIOH
MOV32 R0, RCC_APB2ENR @ адрес
MOV32 R1, 0x04 @ значение
LDR R2, [R0] @ прочитали значение регистра
ORR R1, R1, R2 @ логическое, побитовое ИЛИ: R1= R1 ИЛИ R2
STR R1, [R0] @ запись R1 по адресу указанному в R0
@ установим режим GPIOH PH2
MOV32 R0, GPIOA_CRL @ адрес
MOV32 R1, 0x2000 @ значение
LDR R2, [R0] @ прочитали значение регистра
ORR R1, R1, R2 @ логическое, побитовое ИЛИ: R1= R1 ИЛИ R2
STR R1, [R0] @ запись R1 по адресу указанному в R0
BLINK_LOOP:
@ включим светодиод
MOV32 R0, GPIOA_BSRR @ адрес
MOV32 R1, 0x08 @ значение
STR R1, [R0] @ запись R1 по адресу указанному в R0
BL DELAY @ пауза
@ выключим светодиод
@MOV32 R0, GPIOA_BSRR @ адрес
@MOV32 R1, 0x08 << (1*16) @ значение 1-размер поля, 16-во второе полуслово
@STR R1, [R0] @ запись R1 по адресу указанному в R0
BL DELAY @ пауза
B BLINK_LOOP @ делаем цикл
DELAY:
MOV32 R2, 0x00100000 @ повтор цикла задержки 0x0010 0000 раз.
Delay_loop:
SUBS R2, R2, 1
BNE Delay_loop
BX LR
.end
@file STM32F100.INC
.equ RCC_APB2ENR, 0x40021018
.equ GPIOA_CRL, 0x40010800
.equ GPIOA_BSRR, 0x40010810
Answer the question
In order to leave comments, you need to log in
Didn't find what you were looking for?
Ask your questionAsk a Question
731 491 924 answers to any question