Мой Апокалипсис
1 мес. 1 нед. назад
Автор темы
CubeMX это только конфигуратор. А дальше куда? Каил?
Мой Апокалипсис #266375
на stm32 только только начал в самом кубе,так на ардуинках баловался.
CubeMX это только конфигуратор. А дальше куда? Каил?
Слова, вызывающие бурю - самые тихие; Мысли, приходящие кротко, как голубь - правят миром...
Тема заблокирована.
1 мес. 1 нед. назад
1 мес. 1 нед. назад от ENCARNALIUM_NOSFERATUM.
Автор темы
Для низкоуровневого управления нужно в совершенстве знать, как работает микроконтроллер его периферия и вся прочая обвязка.
Знать, именно на уровне разработчиков.
Просто для примера, настройка модуля RCC (тактирование Ядра ARM Cortex на частоту 480 МГц), Микроконтроллер STM32H743IIT6.
Этот программный код настраивает только систему тактирования, представляешь сколько там ещё всего, что бы хотя бы вывести микроконтроллер в рабочий режим? На минималки.
AREA RCC_SECTION, CODE, READONLY
INCLUDE pmm_stm32h743xx.inc
EXPORT RCC_Init
RCC_Init PROC
LDR R0, = RCC
; RCC > CR
LDR R1, [R0, #RCC_CR]
ORR R1, #(1 << 16)
STR R1, [R0, #RCC_CR]
HSERDY
LDR R1, [R0, #RCC_CR]
TST R1, #(1 << 17)
BEQ HSERDY
; RCC > PLLCKSELR
LDR R1, [R0, #RCC_PLLCKSELR]
ORR R1, #(2 << 0)
STR R1, [R0, #RCC_PLLCKSELR]
; RCC > PLLCFGR
LDR R1, [R0, #RCC_PLLCFGR]
ORR R1, #(1 << 16)
ORR R1, #(1 << 21)
ORR R1, #(1 << 24)
STR R1, [R0, #RCC_PLLCFGR]
; RCC > PLLCFGR
LDR R1, [R0, #RCC_PLLCFGR]
BFC R1, #2, #2
ORR R1, #(3 << 2)
STR R1, [R0, #RCC_PLLCFGR]
; RCC > PLLCKSELR
LDR R1, [R0, #RCC_PLLCKSELR]
BFC R1, #4, #6
ORR R1, #(1 << 4)
STR R1, [R0, #RCC_PLLCKSELR]
; RCC > PLL1DIVR
LDR R1, [R0, #RCC_PLL1DIVR]
BFC R1, #0, #9
ORR R1, #(119 << 0)
BFC R1, #9, #21
ORR R1, #(1 << 9)
ORR R1, #(1 << 16)
ORR R1, #(1 << 24)
STR R1, [R0, #RCC_PLL1DIVR]
; RCC > CR
LDR R1, [R0, #RCC_CR]
ORR R1, #(1 << 24)
STR R1, [R0, #RCC_CR]
PLL1RDY
LDR R1, [R0, #RCC_CR]
TST R1, #(1 << 25)
BEQ PLL1RDY
; RCC > D1CFGR
LDR R1, [R0, #RCC_D1CFGR]
BFC R1, #0, #12
LDR R2, =0x00000808
ORR R1, R2
STR R1, [R0, #RCC_D1CFGR]
DSB
ISB
; RCC > CFGR
LDR R1, [R0, #RCC_CFGR]
BFC R1, #0, #3
ORR R1, #(3 << 0)
STR R1, [R0, #RCC_CFGR]
SWS
LDR R1, [R0, #RCC_CFGR]
AND R1, #0x38
CMP R1, #(3 << 3)
BNE SWS
; RCC > D2CFGR
LDR R1, [R0, #RCC_D2CFGR]
BFC R1, #4, #3
ORR R1, #(4 << 4)
STR R1, [R0, #RCC_D2CFGR]
LDR R1, [R0, #RCC_D2CFGR]
BFC R1, #8, #3
ORR R1, #(4 << 8 )
STR R1, [R0, #RCC_D2CFGR]
; RCC > D1CFGR
LDR R1, [R0, #RCC_D1CFGR]
BFC R1, #4, #3
ORR R1, #(4 << 4)
STR R1, [R0, #RCC_D1CFGR]
; RCC > D3CFGR
LDR R1, [R0, #RCC_D3CFGR]
BFC R1, #4, #3
ORR R1, #(4 << 4)
STR R1, [R0, #RCC_D3CFGR]
RCC_DELAY
LDR R2, = 250
RCC_DL
SUBS R2, #1
BNE RCC_DL
; RCC > PLLCFGR
LDR R1, [R0, #RCC_PLLCFGR]
BFC R1, #6, #2
ORR R1, #(3 << 6)
STR R1, [R0, #RCC_PLLCFGR]
; RCC > PLLCKSELR
LDR R1, [R0, #RCC_PLLCKSELR]
BFC R1, #12, #6
ORR R1, #(2 << 12)
STR R1, [R0, #RCC_PLLCKSELR]
; RCC > PLL2DIVR
LDR R1, [R0, #RCC_PLL2DIVR]
BFC R1, #0, #9
ORR R1, #(49 << 0)
BFC R1, #9, #21
ORR R1, #(1 << 9)
ORR R1, #(1 << 16)
ORR R1, #(1 << 24)
STR R1, [R0, #RCC_PLL2DIVR]
; RCC > CR
LDR R1, [R0, #RCC_CR]
ORR R1, #(1 << 26)
STR R1, [R0, #RCC_CR]
PLL2RDY
LDR R1, [R0, #RCC_CR]
TST R1, #(1 << 27)
BEQ PLL2RDY
; RCC > PLLCFGR
LDR R1, [R0, #RCC_PLLCFGR]
BFC R1, #10, #2
ORR R1, #(3 << 10)
STR R1, [R0, #RCC_PLLCFGR]
; RCC > PLLCKSELR
LDR R1, [R0, #RCC_PLLCKSELR]
BFC R1, #20, #6
ORR R1, #(1 << 20)
STR R1, [R0, #RCC_PLLCKSELR]
; RCC > PLL3DIVR
LDR R1, [R0, #RCC_PLL3DIVR]
BFC R1, #0, #9
ORR R1, #(59 << 0)
BFC R1, #9, #15
ORR R1, #(1 << 9)
ORR R1, #(1 << 16)
STR R1, [R0, #RCC_PLL3DIVR]
; RCC > PLL3DIVR
LDR R1, [R0, #RCC_PLL3DIVR]
BFC R1, #24, #7
ORR R1, #(11 << 24)
STR R1, [R0, #RCC_PLL3DIVR]
; RCC > CR
LDR R1, [R0, #RCC_CR]
ORR R1, #(1 << 28)
STR R1, [R0, #RCC_CR]
PLL3RDY
LDR R1, [R0, #RCC_CR]
TST R1, #(1 << 29)
BEQ PLL3RDY
; RCC > D1CCIPR
LDR R1, [R0, #RCC_D1CCIPR]
BFC R1, #0, #2
ORR R1, #(2 << 0)
STR R1, [R0, #RCC_D1CCIPR]
BX LR
ENDP
ALIGN
END
P.S. Не знаю, как длинный текст спрятать под спойлер.
Мой Апокалипсис #266379
на С
да,наверное моих знаний ещё совсем не достаточно для настоящего кода.
будем учиться.
Для низкоуровневого управления нужно в совершенстве знать, как работает микроконтроллер его периферия и вся прочая обвязка.
Знать, именно на уровне разработчиков.
Просто для примера, настройка модуля RCC (тактирование Ядра ARM Cortex на частоту 480 МГц), Микроконтроллер STM32H743IIT6.
Этот программный код настраивает только систему тактирования, представляешь сколько там ещё всего, что бы хотя бы вывести микроконтроллер в рабочий режим? На минималки.
AREA RCC_SECTION, CODE, READONLY
INCLUDE pmm_stm32h743xx.inc
EXPORT RCC_Init
RCC_Init PROC
LDR R0, = RCC
; RCC > CR
LDR R1, [R0, #RCC_CR]
ORR R1, #(1 << 16)
STR R1, [R0, #RCC_CR]
HSERDY
LDR R1, [R0, #RCC_CR]
TST R1, #(1 << 17)
BEQ HSERDY
; RCC > PLLCKSELR
LDR R1, [R0, #RCC_PLLCKSELR]
ORR R1, #(2 << 0)
STR R1, [R0, #RCC_PLLCKSELR]
; RCC > PLLCFGR
LDR R1, [R0, #RCC_PLLCFGR]
ORR R1, #(1 << 16)
ORR R1, #(1 << 21)
ORR R1, #(1 << 24)
STR R1, [R0, #RCC_PLLCFGR]
; RCC > PLLCFGR
LDR R1, [R0, #RCC_PLLCFGR]
BFC R1, #2, #2
ORR R1, #(3 << 2)
STR R1, [R0, #RCC_PLLCFGR]
; RCC > PLLCKSELR
LDR R1, [R0, #RCC_PLLCKSELR]
BFC R1, #4, #6
ORR R1, #(1 << 4)
STR R1, [R0, #RCC_PLLCKSELR]
; RCC > PLL1DIVR
LDR R1, [R0, #RCC_PLL1DIVR]
BFC R1, #0, #9
ORR R1, #(119 << 0)
BFC R1, #9, #21
ORR R1, #(1 << 9)
ORR R1, #(1 << 16)
ORR R1, #(1 << 24)
STR R1, [R0, #RCC_PLL1DIVR]
; RCC > CR
LDR R1, [R0, #RCC_CR]
ORR R1, #(1 << 24)
STR R1, [R0, #RCC_CR]
PLL1RDY
LDR R1, [R0, #RCC_CR]
TST R1, #(1 << 25)
BEQ PLL1RDY
; RCC > D1CFGR
LDR R1, [R0, #RCC_D1CFGR]
BFC R1, #0, #12
LDR R2, =0x00000808
ORR R1, R2
STR R1, [R0, #RCC_D1CFGR]
DSB
ISB
; RCC > CFGR
LDR R1, [R0, #RCC_CFGR]
BFC R1, #0, #3
ORR R1, #(3 << 0)
STR R1, [R0, #RCC_CFGR]
SWS
LDR R1, [R0, #RCC_CFGR]
AND R1, #0x38
CMP R1, #(3 << 3)
BNE SWS
; RCC > D2CFGR
LDR R1, [R0, #RCC_D2CFGR]
BFC R1, #4, #3
ORR R1, #(4 << 4)
STR R1, [R0, #RCC_D2CFGR]
LDR R1, [R0, #RCC_D2CFGR]
BFC R1, #8, #3
ORR R1, #(4 << 8 )
STR R1, [R0, #RCC_D2CFGR]
; RCC > D1CFGR
LDR R1, [R0, #RCC_D1CFGR]
BFC R1, #4, #3
ORR R1, #(4 << 4)
STR R1, [R0, #RCC_D1CFGR]
; RCC > D3CFGR
LDR R1, [R0, #RCC_D3CFGR]
BFC R1, #4, #3
ORR R1, #(4 << 4)
STR R1, [R0, #RCC_D3CFGR]
RCC_DELAY
LDR R2, = 250
RCC_DL
SUBS R2, #1
BNE RCC_DL
; RCC > PLLCFGR
LDR R1, [R0, #RCC_PLLCFGR]
BFC R1, #6, #2
ORR R1, #(3 << 6)
STR R1, [R0, #RCC_PLLCFGR]
; RCC > PLLCKSELR
LDR R1, [R0, #RCC_PLLCKSELR]
BFC R1, #12, #6
ORR R1, #(2 << 12)
STR R1, [R0, #RCC_PLLCKSELR]
; RCC > PLL2DIVR
LDR R1, [R0, #RCC_PLL2DIVR]
BFC R1, #0, #9
ORR R1, #(49 << 0)
BFC R1, #9, #21
ORR R1, #(1 << 9)
ORR R1, #(1 << 16)
ORR R1, #(1 << 24)
STR R1, [R0, #RCC_PLL2DIVR]
; RCC > CR
LDR R1, [R0, #RCC_CR]
ORR R1, #(1 << 26)
STR R1, [R0, #RCC_CR]
PLL2RDY
LDR R1, [R0, #RCC_CR]
TST R1, #(1 << 27)
BEQ PLL2RDY
; RCC > PLLCFGR
LDR R1, [R0, #RCC_PLLCFGR]
BFC R1, #10, #2
ORR R1, #(3 << 10)
STR R1, [R0, #RCC_PLLCFGR]
; RCC > PLLCKSELR
LDR R1, [R0, #RCC_PLLCKSELR]
BFC R1, #20, #6
ORR R1, #(1 << 20)
STR R1, [R0, #RCC_PLLCKSELR]
; RCC > PLL3DIVR
LDR R1, [R0, #RCC_PLL3DIVR]
BFC R1, #0, #9
ORR R1, #(59 << 0)
BFC R1, #9, #15
ORR R1, #(1 << 9)
ORR R1, #(1 << 16)
STR R1, [R0, #RCC_PLL3DIVR]
; RCC > PLL3DIVR
LDR R1, [R0, #RCC_PLL3DIVR]
BFC R1, #24, #7
ORR R1, #(11 << 24)
STR R1, [R0, #RCC_PLL3DIVR]
; RCC > CR
LDR R1, [R0, #RCC_CR]
ORR R1, #(1 << 28)
STR R1, [R0, #RCC_CR]
PLL3RDY
LDR R1, [R0, #RCC_CR]
TST R1, #(1 << 29)
BEQ PLL3RDY
; RCC > D1CCIPR
LDR R1, [R0, #RCC_D1CCIPR]
BFC R1, #0, #2
ORR R1, #(2 << 0)
STR R1, [R0, #RCC_D1CCIPR]
BX LR
ENDP
ALIGN
END
P.S. Не знаю, как длинный текст спрятать под спойлер.
Слова, вызывающие бурю - самые тихие; Мысли, приходящие кротко, как голубь - правят миром...
Тема заблокирована.
1 мес. 1 нед. назад
Мой Апокалипсис #266380
P.S. Не знаю, как длинный текст спрятать под спойлер.
Вот в этом и есть вся суть - он пишет на чистом ассемблере и не знает, как текст спрятать под спойлер!
Ну, таких гонщиков еще не встречал... стм32 на 480 мгц, чистый ассемблер, и всё это, чтобы обсчитать контур..
БТГ, на который ВЫ заслужили (_!_)
Тема заблокирована.
1 мес. 1 нед. назад
1 мес. 1 нед. назад от Rus.
Мой Апокалипсис #266381
да уж, тут и маленького G431 за глаза хватит, графика от него нужна только извращенцам, зато аналоговых компараторов и оперов у него больше.
P.S. Не знаю, как длинный текст спрятать под спойлер.
Вот в этом и есть вся суть - он пишет на чистом ассемблере и не знает, как текст спрятать под спойлер!![]()
![]()
Ну, таких гонщиков еще не встречал... стм32 на 480 мгц, чистый ассемблер, и всё это, чтобы обсчитать контур..![]()
*___ Выбирайте STM32H743IIT6, если вам нужно делать устройство с большим цветным экраном, графическим интерфейсом, сетевыми функциями (Ethernet/USB), или если вы обрабатываете потоковое видео/аудио.
*___ Выбирайте STM32G431, если вы делаете контроллер мотора (квадрокоптер, электросамокат), цифровой блок питания, сварочный аппарат или систему, где критически важно быстро и дешево обрабатывать сигналы с датчиков тока и напряжения с помощью встроенных ОУ и компараторов.
Тема заблокирована.
1 мес. 1 нед. назад
Мой Апокалипсис #266382
да уж, тут и маленького G431 за глаза хватит, графика от него нужна только извращенцам, зато аналоговых компараторов и оперов у него больше.
P.S. Не знаю, как длинный текст спрятать под спойлер.
Вот в этом и есть вся суть - он пишет на чистом ассемблере и не знает, как текст спрятать под спойлер!![]()
![]()
Ну, таких гонщиков еще не встречал... стм32 на 480 мгц, чистый ассемблер, и всё это, чтобы обсчитать контур..![]()
Я тебе больше скажу это делается легко на attiny424, но товарищ же не лох - ему для этого и xilinx virtex маловато будет...
БТГ, на который ВЫ заслужили (_!_)
Спасибо сказали Alfic
Тема заблокирована.
1 мес. 1 нед. назад
Мой Апокалипсис #266385
Не знаю, не силен)), но просто привык к компараторам, особенно скоростным.
да уж, тут и маленького G431 за глаза хватит, графика от него нужна только извращенцам, зато аналоговых компараторов и оперов у него больше.
P.S. Не знаю, как длинный текст спрятать под спойлер.
Вот в этом и есть вся суть - он пишет на чистом ассемблере и не знает, как текст спрятать под спойлер!![]()
![]()
Ну, таких гонщиков еще не встречал... стм32 на 480 мгц, чистый ассемблер, и всё это, чтобы обсчитать контур..![]()
Я тебе больше скажу это делается легко на attiny424, но товарищ же не лох - ему для этого и xilinx virtex маловато будет...![]()
![]()
Тема заблокирована.
1 мес. 1 нед. назад
1 мес. 1 нед. назад от ENCARNALIUM_NOSFERATUM.
Автор темы
Как смешно, ёб вашу мать... ))) Аж уссаться со смеху можно.
Детский сад "Зелёные сопельки".
Видимо, не к чему больше было придраться.
Нах мне это знать? Это вы тут сидите, хернёй занимаетесь...
МК не контур обсчитывает, а управляет вообще всей доской.
Мой Апокалипсис #266393
P.S. Не знаю, как длинный текст спрятать под спойлер.
Вот в этом и есть вся суть - он пишет на чистом ассемблере и не знает, как текст спрятать под спойлер!![]()
![]()
Ну, таких гонщиков еще не встречал... стм32 на 480 мгц, чистый ассемблер, и всё это, чтобы обсчитать контур..![]()
Как смешно, ёб вашу мать... ))) Аж уссаться со смеху можно.
Детский сад "Зелёные сопельки".
Видимо, не к чему больше было придраться.
Нах мне это знать? Это вы тут сидите, хернёй занимаетесь...
МК не контур обсчитывает, а управляет вообще всей доской.
Слова, вызывающие бурю - самые тихие; Мысли, приходящие кротко, как голубь - правят миром...
Тема заблокирована.
1 мес. 1 нед. назад
Автор темы
Ты понимаешь фразу "для примера"?! Или даже это тебе надо объяснять?
Запусти в STM32G431 HRTIM и пришли код. Посмотрю, как ты будешь работать с периферией, которой там отродясь не было.
Мой Апокалипсис #266394
да уж, тут и маленького G431 за глаза хватит, графика от него нужна только извращенцам, зато аналоговых компараторов и оперов у него больше.
P.S. Не знаю, как длинный текст спрятать под спойлер.
Вот в этом и есть вся суть - он пишет на чистом ассемблере и не знает, как текст спрятать под спойлер!![]()
![]()
Ну, таких гонщиков еще не встречал... стм32 на 480 мгц, чистый ассемблер, и всё это, чтобы обсчитать контур..![]()
*___ Выбирайте STM32H743IIT6, если вам нужно делать устройство с большим цветным экраном, графическим интерфейсом, сетевыми функциями (Ethernet/USB), или если вы обрабатываете потоковое видео/аудио.
*___ Выбирайте STM32G431, если вы делаете контроллер мотора (квадрокоптер, электросамокат), цифровой блок питания, сварочный аппарат или систему, где критически важно быстро и дешево обрабатывать сигналы с датчиков тока и напряжения с помощью встроенных ОУ и компараторов.
Ты понимаешь фразу "для примера"?! Или даже это тебе надо объяснять?
Запусти в STM32G431 HRTIM и пришли код. Посмотрю, как ты будешь работать с периферией, которой там отродясь не было.
Слова, вызывающие бурю - самые тихие; Мысли, приходящие кротко, как голубь - правят миром...
Тема заблокирована.
1 мес. 1 нед. назад
1 мес. 1 нед. назад от ENCARNALIUM_NOSFERATUM.
Автор темы
Если как вы, нихера не делать - то и attiny13 тоже вполне сойдёт.
У меня G473 управляет 12 фазами, одна из которых молотит от 1,8 МГц и выше с очень маленьким шагом подстройки длительности импульса и сдвигом фазы.
Твоей 8 битной аттинькой с 255 шагами дискретности - там нехер делать
Мой Апокалипсис #266396
да уж, тут и маленького G431 за глаза хватит, графика от него нужна только извращенцам, зато аналоговых компараторов и оперов у него больше.
P.S. Не знаю, как длинный текст спрятать под спойлер.
Вот в этом и есть вся суть - он пишет на чистом ассемблере и не знает, как текст спрятать под спойлер!![]()
![]()
Ну, таких гонщиков еще не встречал... стм32 на 480 мгц, чистый ассемблер, и всё это, чтобы обсчитать контур..![]()
Я тебе больше скажу это делается легко на attiny424, но товарищ же не лох - ему для этого и xilinx virtex маловато будет...![]()
![]()
Если как вы, нихера не делать - то и attiny13 тоже вполне сойдёт.
У меня G473 управляет 12 фазами, одна из которых молотит от 1,8 МГц и выше с очень маленьким шагом подстройки длительности импульса и сдвигом фазы.
Твоей 8 битной аттинькой с 255 шагами дискретности - там нехер делать
Слова, вызывающие бурю - самые тихие; Мысли, приходящие кротко, как голубь - правят миром...
Тема заблокирована.
Модераторы: ENCARNALIUM_NOSFERATUM
Время создания страницы: 0.127 секунд
