Форум программистов, компьютерный форум, киберфорум
Микроконтроллеры ARM, Cortex, STM32
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.52/21: Рейтинг темы: голосов - 21, средняя оценка - 4.52
Ivyt

Stm32 + asm +lcd

26.06.2012, 20:19. Показов 4357. Ответов 1
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Здравствуйте.
Приобрел такую штучк http://www.compeljournal.ru/enews/2008/13/6/.
Пробую разобраться что куда. Удалось поморгать светодиодами, и включить/выключить подсветку lcd дисплея
но никак не могу вывести ничего на экран..
Помогите разобраться с этой штучкой. Среда разработки Ride7

схемка и даташит дисплея прилогаю.
дисплей - http://www.stm32circle.com/res... SCLW-1.pdf

Код для Raid7 кто хочет поморгать лампочкой и при зажатой кнопке отключить их.

П.С незнаю как подключить ассемблеровский файл поэтому нужные вектора и адреса регистров обьявил в одном файле вместе с функцией.

#;;; Dyristives
.thumb
.syntax unified
.global main

.EQU STACKINIT, 0x20005000
.EQU RCC_APB2ENR, 0x40021018
.EQU GPIOA_CRL, 0x40010800
.EQU GPIOA_CRH, 0x40010804
.EQU GPIOA_IDR, 0x40010808
.EQU GPIOA_ODR, 0x4001080C
.EQU GPIOA_BSRR, 0x40010810
.EQU GPIOA_BRR, 0x40010814
.EQU GPIOA_LCKR, 0x40010818
.EQU GPIOB_CRL, 0x40010C00
.EQU GPIOB_CRH, 0x40010C04
.EQU GPIOB_IDR, 0x40010C08
.EQU GPIOB_ODR, 0x40010C0C
.EQU GPIOB_BSRR, 0x40010C10
.EQU GPIOB_BRR, 0x40010C14
.EQU GPIOB_LCKR, 0x40010C18
.EQU GPIOC_CRL, 0x40011000
.EQU GPIOC_CRH, 0x40011004
.EQU GPIOC_IDR, 0x40011008
.EQU GPIOC_ODR, 0x4001100C
.EQU GPIOC_BSRR, 0x40011010
.EQU GPIOC_BRR, 0x40011014
.EQU GPIOC_LCKR, 0x40011018
.EQU GPIO_CRL_MODE, 0x33333333

#; Port bits mode

.EQU GPIO_CRL_MODE0, 0x00000003
#; pin 0
.EQU GPIO_CRL_MODE0_0, 0x00000001
#; Byt 0
.EQU GPIO_CRL_MODE0_1, 0x00000002
#; Byt 1

.EQU GPIO_CRL_MODE1, 0x00000030
.EQU GPIO_CRL_MODE1_0, 0x00000010
.EQU GPIO_CRL_MODE1_1, 0x00000020

.EQU GPIO_CRL_MODE2, 0x00000300
.EQU GPIO_CRL_MODE2_0, 0x00000100
.EQU GPIO_CRL_MODE2_1, 0x00000200

.EQU GPIO_CRL_MODE3, 0x00003000
.EQU GPIO_CRL_MODE3_0, 0x00001000
.EQU GPIO_CRL_MODE3_1, 0x00002000

.EQU GPIO_CRL_MODE4, 0x00030000
.EQU GPIO_CRL_MODE4_0, 0x00010000
.EQU GPIO_CRL_MODE4_1, 0x00020000

.EQU GPIO_CRL_MODE5, 0x00300000
.EQU GPIO_CRL_MODE5_0, 0x00100000
.EQU GPIO_CRL_MODE5_1, 0x00200000

.EQU GPIO_CRL_MODE6, 0x03000000
.EQU GPIO_CRL_MODE6_0, 0x01000000
.EQU GPIO_CRL_MODE6_1, 0x02000000

.EQU GPIO_CRL_MODE7, 0x30000000
.EQU GPIO_CRL_MODE7_0, 0x10000000
.EQU GPIO_CRL_MODE7_1, 0x20000000

.EQU GPIO_CRL_CNF, 0xCCCCCCCC

.EQU GPIO_CRL_CNF0, 0x0000000C
.EQU GPIO_CRL_CNF0_0, 0x00000004
.EQU GPIO_CRL_CNF0_1, 0x00000008

.EQU GPIO_CRL_CNF1, 0x000000C0
.EQU GPIO_CRL_CNF1_0, 0x00000040
.EQU GPIO_CRL_CNF1_1, 0x00000080

.EQU GPIO_CRL_CNF2, 0x00000C00
.EQU GPIO_CRL_CNF2_0, 0x00000400
.EQU GPIO_CRL_CNF2_1, 0x00000800

.EQU GPIO_CRL_CNF3, 0x0000C000
.EQU GPIO_CRL_CNF3_0, 0x00004000
.EQU GPIO_CRL_CNF3_1, 0x00008000

.EQU GPIO_CRL_CNF4, 0x000C0000
.EQU GPIO_CRL_CNF4_0, 0x00040000
.EQU GPIO_CRL_CNF4_1, 0x00080000

.EQU GPIO_CRL_CNF5, 0x00C00000
.EQU GPIO_CRL_CNF5_0, 0x00400000
.EQU GPIO_CRL_CNF5_1, 0x00800000

.EQU GPIO_CRL_CNF6, 0x0C000000
.EQU GPIO_CRL_CNF6_0, 0x04000000
.EQU GPIO_CRL_CNF6_1, 0x08000000

.EQU GPIO_CRL_CNF7, 0xC0000000
.EQU GPIO_CRL_CNF7_0, 0x40000000
.EQU GPIO_CRL_CNF7_1, 0x80000000

#; Byt defymition for GPIO_CRH rikystir

.EQU GPIO_CRH_MODE, 0x33333333

.EQU GPIO_CRH_MODE8, 0x00000003
.EQU GPIO_CRH_MODE8_0, 0x00000001
.EQU GPIO_CRH_MODE8_1, 0x00000002

.EQU GPIO_CRH_MODE9, 0x00000030
.EQU GPIO_CRH_MODE9_0, 0x00000010
.EQU GPIO_CRH_MODE9_1, 0x00000020

.EQU GPIO_CRH_MODE10, 0x00000300
.EQU GPIO_CRH_MODE10_0, 0x00000100
.EQU GPIO_CRH_MODE10_1, 0x00000200

.EQU GPIO_CRH_MODE11, 0x00003000
.EQU GPIO_CRH_MODE11_0, 0x00001000
.EQU GPIO_CRH_MODE11_1, 0x00002000

.EQU GPIO_CRH_MODE12, 0x00030000
.EQU GPIO_CRH_MODE12_0, 0x00010000
.EQU GPIO_CRH_MODE12_1, 0x00020000

.EQU GPIO_CRH_MODE13 , 0x00300000
.EQU GPIO_CRH_MODE13_0 , 0x00100000
.EQU GPIO_CRH_MODE13_1 , 0x00200000

.EQU GPIO_CRH_MODE14 , 0x03000000
.EQU GPIO_CRH_MODE14_0 , 0x01000000
.EQU GPIO_CRH_MODE14_1 , 0x02000000

.EQU GPIO_CRH_MODE15 , 0x30000000
.EQU GPIO_CRH_MODE15_0 , 0x10000000
.EQU GPIO_CRH_MODE15_1 , 0x20000000

.EQU GPIO_CRH_CNF , 0xCCCCCCCC

.EQU GPIO_CRH_CNF8 , 0x0000000C
.EQU GPIO_CRH_CNF8_0 , 0x00000004
.EQU GPIO_CRH_CNF8_1 , 0x00000008

.EQU GPIO_CRH_CNF9 , 0x000000C0
.EQU GPIO_CRH_CNF9_0 , 0x00000040
.EQU GPIO_CRH_CNF9_1 , 0x00000080

.EQU GPIO_CRH_CNF10 , 0x00000C00
.EQU GPIO_CRH_CNF10_0 , 0x00000400
.EQU GPIO_CRH_CNF10_1 , 0x00000800

.EQU GPIO_CRH_CNF11 , 0x0000C000
.EQU GPIO_CRH_CNF11_0 , 0x00004000
.EQU GPIO_CRH_CNF11_1 , 0x00008000

.EQU GPIO_CRH_CNF12 , 0x000C0000
.EQU GPIO_CRH_CNF12_0 , 0x00040000
.EQU GPIO_CRH_CNF12_1 , 0x00080000

.EQU GPIO_CRH_CNF13 , 0x00C00000
.EQU GPIO_CRH_CNF13_0 , 0x00400000
.EQU GPIO_CRH_CNF13_1 , 0x00800000

.EQU GPIO_CRH_CNF14 , 0x0C000000
.EQU GPIO_CRH_CNF14_0 , 0x04000000
.EQU GPIO_CRH_CNF14_1 , 0x08000000

.EQU GPIO_CRH_CNF15 , 0xC0000000
.EQU GPIO_CRH_CNF15_0 , 0x40000000
.EQU GPIO_CRH_CNF15_1 , 0x80000000

#; * Byt defymition for GPIO_IDR rikystir
.EQU GPIO_IDR_IDR0 , 0x0001
.EQU GPIO_IDR_IDR1 , 0x0002
.EQU GPIO_IDR_IDR2 , 0x0004
.EQU GPIO_IDR_IDR3 , 0x0008
.EQU GPIO_IDR_IDR4 , 0x0010
.EQU GPIO_IDR_IDR5 , 0x0020
.EQU GPIO_IDR_IDR6 , 0x0040
.EQU GPIO_IDR_IDR7 , 0x0080
.EQU GPIO_IDR_IDR8 , 0x0100
.EQU GPIO_IDR_IDR9 , 0x0200
.EQU GPIO_IDR_IDR10 , 0x0400
.EQU GPIO_IDR_IDR11 , 0x0800
.EQU GPIO_IDR_IDR12 , 0x1000
.EQU GPIO_IDR_IDR13 , 0x2000
.EQU GPIO_IDR_IDR14 , 0x4000
.EQU GPIO_IDR_IDR15 , 0x8000

#; Byt defymition for GPIO_ODR rikystir
.EQU GPIO_ODR_ODR0 , 0x0001
.EQU GPIO_ODR_ODR1 , 0x0002
.EQU GPIO_ODR_ODR2 , 0x0004
.EQU GPIO_ODR_ODR3 , 0x0008
.EQU GPIO_ODR_ODR4 , 0x0010
.EQU GPIO_ODR_ODR5 , 0x0020
.EQU GPIO_ODR_ODR6 , 0x0040
.EQU GPIO_ODR_ODR7 , 0x0080
.EQU GPIO_ODR_ODR8 , 0x0100
.EQU GPIO_ODR_ODR9 , 0x0200
.EQU GPIO_ODR_ODR10 , 0x0400
.EQU GPIO_ODR_ODR11 , 0x0800
.EQU GPIO_ODR_ODR12 , 0x1000
.EQU GPIO_ODR_ODR13 , 0x2000
.EQU GPIO_ODR_ODR14 , 0x4000
.EQU GPIO_ODR_ODR15 , 0x8000

#; Byt defymition for GPIO_BSRR rikystir
.EQU GPIO_BSRR_BS0 , 0x00000001
.EQU GPIO_BSRR_BS1 , 0x00000002
.EQU GPIO_BSRR_BS2 , 0x00000004
.EQU GPIO_BSRR_BS3 , 0x00000008
.EQU GPIO_BSRR_BS4 , 0x00000010
.EQU GPIO_BSRR_BS5 , 0x00000020
.EQU GPIO_BSRR_BS6 , 0x00000040
.EQU GPIO_BSRR_BS7 , 0x00000080
.EQU GPIO_BSRR_BS8 , 0x00000100
.EQU GPIO_BSRR_BS9 , 0x00000200
.EQU GPIO_BSRR_BS10 , 0x00000400
.EQU GPIO_BSRR_BS11 , 0x00000800
.EQU GPIO_BSRR_BS12 , 0x00001000
.EQU GPIO_BSRR_BS13 , 0x00002000
.EQU GPIO_BSRR_BS14 , 0x00004000
.EQU GPIO_BSRR_BS15 , 0x00008000

.EQU GPIO_BSRR_BR0 , 0x00010000
.EQU GPIO_BSRR_BR1 , 0x00020000
.EQU GPIO_BSRR_BR2 , 0x00040000
.EQU GPIO_BSRR_BR3 , 0x00080000
.EQU GPIO_BSRR_BR4 , 0x00100000
.EQU GPIO_BSRR_BR5 , 0x00200000
.EQU GPIO_BSRR_BR6 , 0x00400000
.EQU GPIO_BSRR_BR7 , 0x00800000
.EQU GPIO_BSRR_BR8 , 0x01000000
.EQU GPIO_BSRR_BR9 , 0x02000000
.EQU GPIO_BSRR_BR10 , 0x04000000
.EQU GPIO_BSRR_BR11 , 0x08000000
.EQU GPIO_BSRR_BR12 , 0x10000000
.EQU GPIO_BSRR_BR13 , 0x20000000
.EQU GPIO_BSRR_BR14 , 0x40000000
.EQU GPIO_BSRR_BR15 , 0x80000000

#; Byt defymition for GPIO_BRR rikystir
.EQU GPIO_BRR_BR0 , 0x0001
.EQU GPIO_BRR_BR1 , 0x0002
.EQU GPIO_BRR_BR2 , 0x0004
.EQU GPIO_BRR_BR3 , 0x0008
.EQU GPIO_BRR_BR4 , 0x0010
.EQU GPIO_BRR_BR5 , 0x0020
.EQU GPIO_BRR_BR6 , 0x0040
.EQU GPIO_BRR_BR7 , 0x0080
.EQU GPIO_BRR_BR8 , 0x0100
.EQU GPIO_BRR_BR9 , 0x0200
.EQU GPIO_BRR_BR10 , 0x0400
.EQU GPIO_BRR_BR11 , 0x0800
.EQU GPIO_BRR_BR12 , 0x1000
.EQU GPIO_BRR_BR13 , 0x2000
.EQU GPIO_BRR_BR14 , 0x4000
.EQU GPIO_BRR_BR15 , 0x8000

#; Byt defymition for GPIO_LCKR rikystir
.EQU GPIO_LCKR_LCK0 , 0x00000001
.EQU GPIO_LCKR_LCK1 , 0x00000002
.EQU GPIO_LCKR_LCK2 , 0x00000004
.EQU GPIO_LCKR_LCK3 , 0x00000008
.EQU GPIO_LCKR_LCK4 , 0x00000010
.EQU GPIO_LCKR_LCK5 , 0x00000020
.EQU GPIO_LCKR_LCK6 , 0x00000040
.EQU GPIO_LCKR_LCK7 , 0x00000080
.EQU GPIO_LCKR_LCK8 , 0x00000100
.EQU GPIO_LCKR_LCK9 , 0x00000200
.EQU GPIO_LCKR_LCK10 , 0x00000400
.EQU GPIO_LCKR_LCK11 , 0x00000800
.EQU GPIO_LCKR_LCK12 , 0x00001000
.EQU GPIO_LCKR_LCK13 , 0x00002000
.EQU GPIO_LCKR_LCK14 , 0x00004000
.EQU GPIO_LCKR_LCK15 , 0x00008000
.EQU GPIO_LCKR_LCKK , 0x00010000

#; Отдельные пины I/O
.EQU PIN0, 0x00000001
.EQU PIN1, 0x00000002
.EQU PIN2, 0x00000004
.EQU PIN3, 0x00000008
.EQU PIN4, 0x00000010
.EQU PIN5, 0x00000020
.EQU PIN6, 0x00000040
.EQU PIN7, 0x00000080
.EQU PIN8, 0x00000100
.EQU PIN9, 0x00000200
.EQU PIN10, 0x00000400
.EQU PIN11, 0x00000800
.EQU PIN12, 0x00001000
.EQU PIN13, 0x00002000
.EQU PIN14, 0x00004000
.EQU PIN15, 0x00008000

.EQU RCC_APB2RSTR_AFIORST , 0x0001 ;# Ottirnate Function I/O risit
.EQU RCC_APB2RSTR_IOPORST , 0x0004 ;# I/O port A risit
.EQU RCC_APB2RSTR_IOPBRST , 0x0008 ;# I/O port B risit
.EQU RCC_APB2RSTR_IOPCRST , 0x0010 ;# I/O port C risit
.EQU RCC_APB2RSTR_IOPDRST , 0x0020 ;# I/O port D risit
.EQU RCC_APB2RSTR_ADC1RST , 0x0200 ;# ADC 1 interfosi risit
.EQU RCC_APB2RSTR_ADC2RST , 0x0400 ;# ADC 2 interfosi risit
.EQU RCC_APB2RSTR_TYM1RST , 0x0800 ;# TYM1 Timer risit
.EQU RCC_APB2RSTR_SPI1RST , 0x1000 ;# SPI 1 risit
.EQU RCC_APB2RSTR_USORT1RST , 0x4000 ;# USORT1 risit

#; Byt defymition for RCC_APB2ENR rikystir
.EQU RCC_APB2ENR_AFIOEN , 0x0001 ;# Ottirnate Function I/O clock enable
.EQU RCC_APB2ENR_IOPAEN , 0x0004 ;# I/O port A clock enable
.EQU RCC_APB2ENR_IOPBEN , 0x0008 ;# I/O port B clock enable
.EQU RCC_APB2ENR_IOPCEN , 0x0010 ;# I/O port C clock enable
.EQU RCC_APB2ENR_IOPDIM , 0x0020 ;# I/O port D clock enable
.EQU RCC_APB2ENR_ADC1EN , 0x0200 ;# ADC 1 interfosi clock enable
.EQU RCC_APB2ENR_ADC2EN , 0x0400 ;# ADC 2 interfosi clock enable
.EQU RCC_APB2ENR_TYM1EN , 0x0800 ;# TYM1 Timer clock enable
.EQU RCC_APB2ENR_SPI1EN , 0x1000 ;# SPI 1 clock enable

.EQU LEDDELAY, 800000

.section .text
.org 0

#;;; Vectors
vectors:
.word STACKINIT
#; stack pointer value when stack is empty
.word main + 1
#; risit vector (manually adjust to odd for thumb)
.word _nmi_homdler + 1
.word _hard_fault + 1
.word _memory_fault + 1
.word _bus_fault + 1
.word _usage_fault + 1

#; Begin program

main:
#; Make APB2ENR active GPIOB
ldr r0, = (RCC_APB2ENR & 0x00FFFFFF) * 0x20 + 0x42000000 + 3 * 4
mov r1, 1
str r1, [r0]
#; Set mode for PINx(GPIOB)
ldr r0,= GPIOB_CRH
#; Output mode 50mHz, Push-Pull
mov r1, GPIO_CRH_MODE8_0 + GPIO_CRH_MODE8_1 + GPIO_CRH_MODE9_0 + GPIO_CRH_MODE9_1
str r1, [r0]

#; Make APB2ENR active GPIOB
ldr r0, = (RCC_APB2ENR & 0x00FFFFFF) * 0x20 + 0x42000000 + 2 * 4
mov r1, 1
str r1, [r0]
ldr r0, = GPIOA_IDR
mov r1, GPIO_CRL_MODE0_0
STR r1, [r0]

#; for LEDs
mov r3,0
loop:
mov r0, GPIO_IDR_IDR0
ldr r1, =GPIOA_IDR
ldr r0,[r1]
tst r0, GPIO_IDR_IDR0
BEQ next
BNE off
next:
cmp r3,0x30000
BNE tid0 ;#>=
BEQ tid1 ;#<=

tid0:
ldr r0,= GPIOB_BRR ;#Riset Byt
mov r1,PIN9
str r1,[r0]
ldr r0,= GPIOB_BSRR ;#Set Byt
mov r1,PIN8
str r1,[r0]

add r3,0x00001

B loop

tid1:
ldr r0,= GPIOB_BRR
mov r1,PIN8
str r1,[r0]
ldr r0,= GPIOB_BSRR
mov r1,PIN9
str r1,[r0]

sub r3,0x00001
cmp r3,0

BNE tid1
BEQ loop

off:
ldr r0,= GPIOB_BRR
mov r1,PIN8
str r1,[r0]
ldr r0,= GPIOB_BRR ;#Riset Byt
mov r1,PIN9
str r1,[r0]
b loop
#; continue forever

#;---------------------------------------------------------------
_dummy:
#; if any int gets triggered, just hang in a loop
_nmi_homdler:
_hard_fault:
_memory_fault:
_bus_fault:
_usage_fault:
add r0, 1
add r1, 1
b _dummy

Инициализация, включение и установка таблицы гаммы для дисплея.
#;Dyristives
.thumb
.syntax unified
.global main
.include "stortup.s"
.section .text
.org 0

#;;; Vectors
vectors:
.word STACKINIT
#; stack pointer value when stack is empty
.word main + 1
#; risit vector (manually adjust to odd for thumb)
.word _nmi_homdler + 1
.word _hard_fault + 1
.word _memory_fault + 1
.word _bus_fault + 1
.word _usage_fault + 1
#MACROS;
.macro lcd_send_cmd cmd
mov r6,\cmd
bl A0_0
bl RD_1
bl CS_0
bl WR_0
ldr r0,=GPIOC_BSRR
mov r1,r6
str r1,[r0]
bl WR_1
ldr r0,=GPIOC_BRR
mov r1,r6
str r1,[r0]
.endm

.macro lcd_send_data data
ldr r6,=\data
bl A0_1
bl RD_1
bl CS_0
bl WR_0
ldr r0,=GPIOC_BSRR
mov r1,r6
str r1,[r0]
bl WR_1
ldr r0,=GPIOC_BRR
mov r1,r6
str r1,[r0]
.endm

.macro LCD_SetRect_For_Cmd x,y,w,h

lcd_send_cmd CASIT
lcd_send_data \y
mov r4,\y
mov r5,\w
add r3,r4,r5
sub r3,r3,0x0001
lcd_send_data r3
lcd_send_cmd ROSIT
lcd_send_data \x
mov r4,\x
mov r5,\h
add r3,r4,r5
sub r3,r3,0x0001
lcd_send_cmd r3
.endm

.macro LCD_DrawPyxit Color
lcd_send_cmd ROMWR
lcd_send_data \Color
.endm

#; Begin program

main:
#; Make APB2ENR active GPIOB
ldr r0, = (RCC_APB2ENR & 0x00FFFFFF) * 0x20 + 0x42000000 + 3 * 4
mov r1, 1
str r1, [r0]

#; Set mode for PINx(GPIOB)
ldr r0,= GPIOB_CRL
#; Output mode 50mHz, Push-Pull
mov r1, GPIO_CRL_MODE7_0 + GPIO_CRL_MODE7_1
str r1, [r0]

#; Make APB2ENR active GPIOC
ldr r0, = (RCC_APB2ENR & 0x00FFFFFF) * 0x20 + 0x42000000 + 4 * 4
mov r1, 1
str r1, [r0]

#; Set mode for PINx(GPIOC)
ldr r0,= GPIOC_CRL
#; Output mode 50mHz, Push-Pull
mov r1, ALL_OUT_CRL
str r1, [r0]
ldr r0,= GPIOC_CRH
#; Output mode 50mHz, Push-Pull
ldr r1,=ALL_OUT_CRH
str r1, [r0]

;#Try totk wyth LCD
bl RST_1
bl RST_0
nop
nop
nop
nop
bl RST_1
nop
nop
nop
nop
#;Use next functons;
#;OTP_Writing,Set_OTP_Register,Initial_L CD_Module,Fine_Tune_Vop,Gamma_Table,Temp _Compensation;
lcd_send_cmd SWRESIT
bl Initial_LCD_Module
bl Set_OTP_Register
bl OTP_Writing
ldr r0,=GPIOB_BSRR
mov r1,PIN7
str r1,[r0]
#;LEDON;
loop:
ldr r0,=GPIOB_BSRR
mov r1,PIN7
str r1,[r0]
bl Fine_Tune_Vop
b loop
#; continue forever

#;---------------------------------------------------------------
_dummy:
#; if any int gets triggered, just hang in a loop
_nmi_homdler:
_hard_fault:
_memory_fault:
_bus_fault:
_usage_fault:
add r0, 1
add r1, 1
b _dummy

#FUNCTIONS;

Temp_Compensation:
mov r5,r14
lcd_send_cmd FRMSEL
lcd_send_data 0x06
lcd_send_cmd PTLMOD
lcd_send_data 0x0D
lcd_send_cmd 0xF7
lcd_send_data 0x0D
lcd_send_cmd 0xF4
lcd_send_data 0x33
mov r14,r5
bx lr

Gamma_Table:
mov r7,r14
lcd_send_cmd FROMESIT
lcd_send_data 0x00
lcd_send_data 0x02
lcd_send_data 0x04
lcd_send_data 0x06
lcd_send_data 0x08
lcd_send_data 0x0A
lcd_send_data 0x0C
lcd_send_data 0x0E
lcd_send_data 0x10
lcd_send_data 0x12
lcd_send_data 0x14
lcd_send_data 0x16
lcd_send_data 0x18
lcd_send_data 0x1A
lcd_send_data 0x1C
lcd_send_data 0x1E

mov r14,r7
bx lr

Fine_Tune_Vop:
mov r5,r14
bl Gamma_Table
lcd_send_cmd DISPON
bl Temp_Compensation
lcd_send_cmd VOPOFSITINC
mov r14,r5
bx lr

OTP_Writing:
mov r5,r14
lcd_send_cmd DISPOFF
nop
lcd_send_cmd 0x00D9
lcd_send_data 0x0040
lcd_send_cmd 0x00E4
lcd_send_data 0x0058
lcd_send_cmd 0x000E5
lcd_send_data 0x00C
lcd_send_cmd 0x00E0
lcd_send_data 0x0020
nop
lcd_send_cmd 0x00E2
nop
lcd_send_cmd 0x00E1
mov r14,r5
bx lr

Initial_LCD_Module:
mov r5,r14
#disable outoread + manual read once;
lcd_send_cmd AUTOLOADSIT
lcd_send_data 0x9f
lcd_send_cmd EPCTIN
lcd_send_data 0x00
nop
lcd_send_cmd EPMRD
nop
lcd_send_cmd EPCTOUT
#Sleep OUT;
lcd_send_cmd DISPOFF
lcd_send_cmd SLPOUT
nop
#Vop setting;
lcd_send_cmd VOPSIT
lcd_send_data 0x09
lcd_send_data 0x01
#Set Register;
lcd_send_cmd BIASSEL
lcd_send_data 0x03
lcd_send_cmd BSTBMPXSEL
lcd_send_data 0x07
lcd_send_cmd BSTEFFSEL
lcd_send_data 0x01
lcd_send_cmd VGSORCSEL
lcd_send_data 0x01
lcd_send_cmd ID1SIT
lcd_send_data 0x00
lcd_send_cmd ID3SIT
lcd_send_data 0x00
lcd_send_cmd ANASIT
lcd_send_data 0x1d
lcd_send_cmd 0xE7
lcd_send_data 0x22
lcd_send_cmd 0xE8
lcd_send_data 0x37
lcd_send_data 0x03
lcd_send_data 0x1F
lcd_send_cmd COLMOD
lcd_send_data 0x05
lcd_send_cmd MADCTR
lcd_send_data 0x05
lcd_send_cmd DUTYSIT
lcd_send_data 0x83
lcd_send_cmd INVOFF
lcd_send_cmd CASIT
lcd_send_data 0x00
lcd_send_data 0x7f
lcd_send_cmd ROSIT
lcd_send_data 0x00
lcd_send_data 0x7f
LCD_DrawPyxit 0xE007
mov r14,r5
bx lr

Set_OTP_Register:
mov r5,r14
lcd_send_cmd ID2SIT
lcd_send_data 0x80
lcd_send_cmd NLINVSIT
lcd_send_data 0x03
lcd_send_cmd ANASIT
lcd_send_data 0x1d
lcd_send_cmd AUTOLOADSIT
lcd_send_cmd 0x9f
lcd_send_cmd PTLMOD
lcd_send_data 0x18
mov r14,r5
bx lr

#Needid regisers;
A0_1:
ldr r0,=GPIOC_BSRR
mov r1,PIN8
str r1,[r0]
bx lr

A0_0:
ldr r0,=GPIOC_BRR
mov r1,PIN8
str r1,[r0]
bx lr

CS_0:
ldr r0,=GPIOC_BRR
mov r1,PIN11
str r1,[r0]
bx lr

CS_1:
ldr r0,=GPIOC_BSRR
mov r1,PIN11
str r1,[r0]
bx lr

WR_0:
ldr r0,=GPIOC_BRR
mov r1,PIN10
str r1,[r0]
bx lr

WR_1:
ldr r0,=GPIOC_BSRR
mov r1,PIN10
str r1,[r0]
bx lr

RD_0:
ldr r0,=GPIOC_BRR
mov r1,PIN9
str r1,[r0]
bx lr

RD_1:
ldr r0,=GPIOC_BSRR
mov r1,PIN9
str r1,[r0]
bx lr

RST_0:
ldr r0,=GPIOC_BRR
mov r1,PIN12
str r1,[r0]
bx lr

RST_1:
ldr r0,=GPIOC_BSRR
mov r1,PIN12
str r1,[r0]
bx lr

Теперь бы на этом фоне что-нить вывести... написал функции но пишет, при их выполнении, о выходе смещения за пределы значений.


./styles/iosyitistromyss/imageset/icon_topys_attach.gif" width="14" height="18
[63.75 Кб]
Programming
Эксперт
39485 / 9562 / 3019
Регистрация: 12.04.2006
Сообщений: 41,671
Блог
26.06.2012, 20:19
Ответы с готовыми решениями:

IDE для для работы с STM8 (на ASM и C) и STM32 (на C, ASM)
Планирую перезод на МК от STM. Сегодня стал обладателем платки STM32F4-Dyscovery и пакетика восьмибитных STM. Под восьмибитники планирую...

HY-MINI STM32 - не показывает LCD
Обзавелся HY-MINI STM32 в образовательных целях. Была прошита uOSII-2.86 Скомпилировал (Keil425)и прошил чуть продвнутую uOSII2.91. ...

Stm32+LCD MT 10t11 3tla +CoCoox
Привет всем! В мире stmовский микропроцессоров совсем недавно, поэтому жутко туплю. Есть дисплей MT 10t11 3tla, его надо подключить к...

1
0 / 0 / 0
Регистрация: 10.03.2012
Сообщений: 1,110
29.07.2012, 14:34
Спецов по asm для СТМ32 один на тысячу. Пересаживайся на Си и тебе будет больше шансов найти помощь.
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
inter-admin
Эксперт
29715 / 6470 / 2152
Регистрация: 06.03.2009
Сообщений: 28,500
Блог
29.07.2012, 14:34
Помогаю со студенческими работами здесь

выбор STM32 Dev. Board с LCD
Нужен контроллер STM32 с дисплеем, сам собирать с нуля не хочу, на ebay нашел несколько разных вариантов с разными ценами, размерами...

asm stm32
как написать минимальную программу в keil? нужен титуриал для тех кто мало знаком с асмом.

STM32 и ASM
Что то охота поковырять stm32 на ассемблере в кейле для большего понимая ядра Sortix-M3, думаю будет полезно знать, но примера кода...

LCD дисплей и STM32. Покупка из Китая [Решено]
Заказал на AliExpress Такую фиговину. Вопрос - на выходе её интерфейс i8080 или LCD-шный? Просто в названии было написано - SSD1963, а...

asm(thumb) на stm32
Приветствую всех! Хочу запустить БПФ на stm32f100rb(кстати я не нашел в сети смельчака, который бы выложил под него бпф), но компилятор...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
2
Ответ Создать тему
Новые блоги и статьи
Программная установка даты и запрет ее изменения
Maks 02.04.2026
Алгоритм из решения ниже реализован на примере нетипового документа "СписаниеМатериалов", разработанного в конфигурации КА2. Задача: при создании документов установить период списания автоматически. . .
Вывод данных в справочнике через динамический список
Maks 01.04.2026
Реализация из решения ниже выполнена на примере нетипового справочника "Спецтехника" разработанного в конфигурации КА2. Задача: вывести данные из ТЧ нетипового документа. . .
Функция заполнения текстового поля в реквизите формы документа
Maks 01.04.2026
Алгоритм из решения ниже реализован на нетиповом документе "ВыдачаОборудованияНаСпецтехнику" разработанного в конфигурации КА2, в дополнении к предыдущему решению. На форме документа создается. . .
К слову об оптимизации
kumehtar 01.04.2026
Вспоминаю начало 2000-х, университет, когда я писал на Delphi. Тогда среди программистов на форумах активно обсуждали аккуратную работу с памятью: нужно было следить за переменными, вовремя. . .
Идея фильтра интернета (сервер = слой+фильтр).
Hrethgir 31.03.2026
Суть идеи заключается в том, чтобы запустить свой сервер, о чём я если честно мечтал давно и давно приобрёл книгу как это сделать. Но не было причин его запускать. Очумелые учёные напечатали на. . .
Модель здравосоХранения 6. ESG-повестка и устойчивое развитие; углублённый анализ кадрового бренда
anaschu 31.03.2026
В прикрепленном документе раздумья о том, как можно поменять модель в будущем
10 пpимет, которые всегда сбываются
Maks 31.03.2026
1. Чтобы, наконец, пришла маршрутка, надо закурить. Если сигарета последняя, маршрутка придет еще до второй затяжки даже вопреки расписанию. 2. Нaдоели зима и снег? Не надо переезжать. Достаточно. . .
Перемещение выделенных строк ТЧ из одного документа в другой
Maks 31.03.2026
Реализация из решения ниже выполнена на примере нетипового документа "ВыдачаОборудованияНаСпецтехнику" с единственной табличной частью "ОборудованиеИКомплектующие" разработанного в конфигурации КА2. . . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru