История изменений
Исправление
Stierlitz_,
(текущая версия)
:
.syntax unified
.cpu cortex-m3
.thumb
RCC_APB2ENR = 0x40021018
GPIOC_CRH =0x40010804
TIM1_CR1 = 0x40012c00
TIM_CR1_URS = (1 << 2)
TIM_CR1_CEN = (1 << 0)
TIM1_PSC = 0x40012c28
TIM1_ARR = 0x40012c2c
TIM1_DIER = 0x40012c0c
TIM_DIER_UIE = (1 << 0)
TIM1_EGR = 0x40012c14
TIM_EGR_UG = (1 << 0)
NVIC_ISER0 = 0xe000e100
TIM1_UP = (1 << 25)
TIM1_SR = 0x40012c10
TIM_SR_UIF = (1 << 0)
GPIOC_ODR =0x4001080C
.text
.word 0x20005000
.word _start + 1
.space 0x9c
.word TIM1_UP_isr + 1
.global _start
_start:
//ldr r0, =RCC_APB2ENR
ldr r0, =0x40021018
ldr r1, =0b00000000000000000000100000000101 //enable TIM1, AFIOEN, IOPAEN
str r1, [r0]
ldr r0, =GPIOC_CRH
ldr r1, =0b00000000000000000000000000001001 //eanble Alternate function output Push-pull 10 MHZ
str r1, [r0]
ldr r0, =TIM1_CR1
ldr r1, =TIM_CR1_URS
str r1, [r0]
ldr r0, =TIM1_PSC
ldr r1, =1000
str r1, [r0]
ldr r0, =TIM1_ARR
ldr r1, =1000
str r1, [r0]
ldr r0, =TIM1_DIER
ldr r1, =TIM_DIER_UIE
str r1, [r0]
ldr r0, =TIM1_EGR
ldr r1, =TIM_EGR_UG
str r1, [r0]
ldr r0, =0x40012C44
ldr r1, =0b00000000000000001100000000000000 //eanble MOE and AOE
str r1, [r0]
ldr r0, =0x40012C20
ldr r1, =0b00000000000000000000000000000001 //enable CC1E
str r1, [r0]
ldr r0, =0x40012C18
ldr r1, =0b0000000000000000000000000111000
str r1, [r0]
ldr r0, =TIM1_CR1
ldr r1, =TIM_CR1_CEN
str r1, [r0]
ldr r0, =NVIC_ISER0
ldr r1, =0b00000010000000000000000000000000 //установил 25Бит в единицу.
str r1, [r0]
loop:
b loop
TIM1_UP_isr:
ldr r0, =TIM1_SR
ldr r1, [r0]
bic r1, #TIM_SR_UIF
str r1, [r0]
ldr r0, =GPIOC_ODR
ldr r1, [r0]
eor r1, #(1 << 8)
str r1, [r0]
bx lr
Это прям в теме ТСа. Тут ему все понятно и он просит немного модефицировать код для внешнего прерывания. Вроде несложно понять что хочет ТС даже для меня. Но я не смог освоить микроконтроллеры. Поэтому тусую в его темах и также жду примеров. Он сам меня позвал и сказал смотри в моих темах. Если проще то я ничего не понимаю но понимаю что хочет ТС.
Исправление
Stierlitz_,
:
.syntax unified
.cpu cortex-m3
.thumb
RCC_APB2ENR = 0x40021018
GPIOC_CRH =0x40010804
TIM1_CR1 = 0x40012c00
TIM_CR1_URS = (1 << 2)
TIM_CR1_CEN = (1 << 0)
TIM1_PSC = 0x40012c28
TIM1_ARR = 0x40012c2c
TIM1_DIER = 0x40012c0c
TIM_DIER_UIE = (1 << 0)
TIM1_EGR = 0x40012c14
TIM_EGR_UG = (1 << 0)
NVIC_ISER0 = 0xe000e100
TIM1_UP = (1 << 25)
TIM1_SR = 0x40012c10
TIM_SR_UIF = (1 << 0)
GPIOC_ODR =0x4001080C
.text
.word 0x20005000
.word _start + 1
.space 0x9c
.word TIM1_UP_isr + 1
.global _start
_start:
//ldr r0, =RCC_APB2ENR
ldr r0, =0x40021018
ldr r1, =0b00000000000000000000100000000101 //enable TIM1, AFIOEN, IOPAEN
str r1, [r0]
ldr r0, =GPIOC_CRH
ldr r1, =0b00000000000000000000000000001001 //eanble Alternate function output Push-pull 10 MHZ
str r1, [r0]
ldr r0, =TIM1_CR1
ldr r1, =TIM_CR1_URS
str r1, [r0]
ldr r0, =TIM1_PSC
ldr r1, =1000
str r1, [r0]
ldr r0, =TIM1_ARR
ldr r1, =1000
str r1, [r0]
ldr r0, =TIM1_DIER
ldr r1, =TIM_DIER_UIE
str r1, [r0]
ldr r0, =TIM1_EGR
ldr r1, =TIM_EGR_UG
str r1, [r0]
ldr r0, =0x40012C44
ldr r1, =0b00000000000000001100000000000000 //eanble MOE and AOE
str r1, [r0]
ldr r0, =0x40012C20
ldr r1, =0b00000000000000000000000000000001 //enable CC1E
str r1, [r0]
ldr r0, =0x40012C18
ldr r1, =0b0000000000000000000000000111000
str r1, [r0]
ldr r0, =TIM1_CR1
ldr r1, =TIM_CR1_CEN
str r1, [r0]
ldr r0, =NVIC_ISER0
ldr r1, =0b00000010000000000000000000000000 //установил 25Бит в единицу.
str r1, [r0]
loop:
b loop
TIM1_UP_isr:
ldr r0, =TIM1_SR
ldr r1, [r0]
bic r1, #TIM_SR_UIF
str r1, [r0]
ldr r0, =GPIOC_ODR
ldr r1, [r0]
eor r1, #(1 << 8)
str r1, [r0]
bx lr
Это прям в теме ТСа. Тут ему все понятно и он просит немного модефицировать код для внешнего прерывания. Вроде несложно даже для меня. Но я не смог освоить микроконтроллеры. Поэтому тусую в его темах и также жду примеров. Он сам меня позвал и сказал смотри в моих темах. Если проще то я ничего не понимаю но понимаю что хочет ТС.
Исходная версия
Stierlitz_,
:
.syntax unified
.cpu cortex-m3
.thumb
RCC_APB2ENR = 0x40021018
GPIOC_CRH =0x40010804
TIM1_CR1 = 0x40012c00
TIM_CR1_URS = (1 << 2)
TIM_CR1_CEN = (1 << 0)
TIM1_PSC = 0x40012c28
TIM1_ARR = 0x40012c2c
TIM1_DIER = 0x40012c0c
TIM_DIER_UIE = (1 << 0)
TIM1_EGR = 0x40012c14
TIM_EGR_UG = (1 << 0)
NVIC_ISER0 = 0xe000e100
TIM1_UP = (1 << 25)
TIM1_SR = 0x40012c10
TIM_SR_UIF = (1 << 0)
GPIOC_ODR =0x4001080C
.text
.word 0x20005000
.word _start + 1
.space 0x9c
.word TIM1_UP_isr + 1
.global _start
_start:
//ldr r0, =RCC_APB2ENR
ldr r0, =0x40021018
ldr r1, =0b00000000000000000000100000000101 //enable TIM1, AFIOEN, IOPAEN
str r1, [r0]
ldr r0, =GPIOC_CRH
ldr r1, =0b00000000000000000000000000001001 //eanble Alternate function output Push-pull 10 MHZ
str r1, [r0]
ldr r0, =TIM1_CR1
ldr r1, =TIM_CR1_URS
str r1, [r0]
ldr r0, =TIM1_PSC
ldr r1, =1000
str r1, [r0]
ldr r0, =TIM1_ARR
ldr r1, =1000
str r1, [r0]
ldr r0, =TIM1_DIER
ldr r1, =TIM_DIER_UIE
str r1, [r0]
ldr r0, =TIM1_EGR
ldr r1, =TIM_EGR_UG
str r1, [r0]
ldr r0, =0x40012C44
ldr r1, =0b00000000000000001100000000000000 //eanble MOE and AOE
str r1, [r0]
ldr r0, =0x40012C20
ldr r1, =0b00000000000000000000000000000001 //enable CC1E
str r1, [r0]
ldr r0, =0x40012C18
ldr r1, =0b0000000000000000000000000111000
str r1, [r0]
ldr r0, =TIM1_CR1
ldr r1, =TIM_CR1_CEN
str r1, [r0]
ldr r0, =NVIC_ISER0
ldr r1, =0b00000010000000000000000000000000 //установил 25Бит в единицу.
str r1, [r0]
loop:
b loop
TIM1_UP_isr:
ldr r0, =TIM1_SR
ldr r1, [r0]
bic r1, #TIM_SR_UIF
str r1, [r0]
ldr r0, =GPIOC_ODR
ldr r1, [r0]
eor r1, #(1 << 8)
str r1, [r0]
bx lr
Это прям в теме ТСа. Тут ему все понятно и он просит немного модефицировать код для внешнего прерывания. Вроде несложно