Здравствуйте!
Продолжаю пытаться изучать работу МК по учебнику
https://habrahabr.ru/post/274579/
Сделал всё тоже самое для своего контроллера. У меня STM32F100C4T6B
Переправил согласно RM на 100 серию, но ничего не заработало (не мигает, даже не зажигается).
Помогите найти ошибку, пожалуйста.
@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
P.S. Я не могу оставлять комментарии на хабре, соответственно спросить автора сего туториала не могу. Как с ним можно связаться?