xztau
@xztau
Я

Как помигать светодиодом на STM32 на ассемблере?

Здравствуйте!
Продолжаю пытаться изучать работу МК по учебнику 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. Я не могу оставлять комментарии на хабре, соответственно спросить автора сего туториала не могу. Как с ним можно связаться?
  • Вопрос задан
  • 1660 просмотров
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы