Stm32 с чего начать изучение...

Кто любит RISC в жизни, заходим, не стесняемся.
Professor Chaos
Открыл глаза
Сообщения: 41
Зарегистрирован: Вс мар 21, 2021 11:06:04

Re: Stm32 с чего начать изучение...

Сообщение Professor Chaos »

[uquote="TEPEM",url="/forum/viewtopic.php?p=4137060#p4137060"]Наверняка есть какой нибудь костыль, Сишка вроде может все на свете сделать[/uquote]
Вы, вместо того, что костыли лепить, опишите зачем вам это. Что вы хотите этим костылём добиться.
Наверняка имеется иное, нормальное решение вашей задачи без костылей.
Аватара пользователя
Eddy_Em
Собутыльник Кота
Сообщения: 2516
Зарегистрирован: Пт июл 12, 2019 22:52:01
Контактная информация:

Re: Stm32 с чего начать изучение...

Сообщение Eddy_Em »

TEPEM, попробуй longjmp..
Linux rules! Windows must die. Здравомыслящий человек добровольно будет пользоваться мастдаем лишь в двух случаях: под дулом автомата или под влиянием анального зонда.
Я на гитхабе, в ЖЖ
Аватара пользователя
TEPEM
Нашел транзистор. Понюхал.
Сообщения: 153
Зарегистрирован: Чт дек 05, 2019 16:28:11
Откуда: Самара

Re: Stm32 с чего начать изучение...

Сообщение TEPEM »

[uquote="VladislavS",url="/forum/viewtopic.php?p=4137097#p4137097"]Проблема XY обнаружена.[/uquote]
Мое почтение Владислав! Как что то делаю, всегда захожу в наш топик на форуме и качаю ваши библиотеки)
На самом деле все уже решил. Делал аргонник ради забавы из ручника, ну осцил прикрутил, клапан, пульс прикрутил, и хотел по легкой алгоритм всяких ошибок и вариантов работы так решить. Как всегда вышло коряво но работает)

Но интерес остался на самом деле, хотя уже сказали что это не реализовать( Я думал есть что то для этого.

Longjmp что то интересное, что то не помню такого в КиР, описание в вики скудное(
Professor Chaos
Открыл глаза
Сообщения: 41
Зарегистрирован: Вс мар 21, 2021 11:06:04

Re: Stm32 с чего начать изучение...

Сообщение Professor Chaos »

TEPEM писал(а):не помню такого в КиР
Там этого нет. Это ассемблер. Причём даже не ARM, а C51.
linkov1959
Держит паяльник хвостом
Сообщения: 923
Зарегистрирован: Пн сен 10, 2018 19:16:28

Re: Stm32 с чего начать изучение...

Сообщение linkov1959 »

Инструменты нужно осваивать, но не до фанатизма ассемблера! Когда же творить? 20 лет назад в экселе распознавал образы, 10 лет назад на тиньке в Бейсике делал фантастические проекты, а сейчас осваиваю инструменты для работы с stm32H743 и это уже самоцель!:(
Аватара пользователя
TEPEM
Нашел транзистор. Понюхал.
Сообщения: 153
Зарегистрирован: Чт дек 05, 2019 16:28:11
Откуда: Самара

Re: Stm32 с чего начать изучение...

Сообщение TEPEM »

Что то все перепробовал, почему может не очищаться флаг?
СпойлерИзображение
Аватара пользователя
Eddy_Em
Собутыльник Кота
Сообщения: 2516
Зарегистрирован: Пт июл 12, 2019 22:52:01
Контактная информация:

Re: Stm32 с чего начать изучение...

Сообщение Eddy_Em »

Точно TXE не устанавливается? Может, где-то в другом месте зависает?
Если именно здесь, то получается, что перед этим что-то вырубает SPI, как раз после SPI->DR = dat;
Linux rules! Windows must die. Здравомыслящий человек добровольно будет пользоваться мастдаем лишь в двух случаях: под дулом автомата или под влиянием анального зонда.
Я на гитхабе, в ЖЖ
Аватара пользователя
TEPEM
Нашел транзистор. Понюхал.
Сообщения: 153
Зарегистрирован: Чт дек 05, 2019 16:28:11
Откуда: Самара

Re: Stm32 с чего начать изучение...

Сообщение TEPEM »

Я разобрался спс. Метод тыка самый полезный метод. Все регистры по пять раз перебрал, оказалось биты в AFR записываются из расчета с права младшие, хз де логика
Аватара пользователя
VladislavS
Собутыльник Кота
Сообщения: 2562
Зарегистрирован: Вт май 01, 2018 19:44:47

Re: Stm32 с чего начать изучение...

Сообщение VladislavS »

TEPEM, функция Send_CMD - целый табун ошибок. Давай её текст сюда в нормальном виде, будем разбирать.
Professor Chaos
Открыл глаза
Сообщения: 41
Зарегистрирован: Вс мар 21, 2021 11:06:04

Re: Stm32 с чего начать изучение...

Сообщение Professor Chaos »

TEPEM писал(а):Что то все перепробовал
Зачем подряд дважды делать операцию чтение-модификация-запись над одним и тем же регистром?

Код: Выделить всё

GPIOA->ODR &= ~(1<<4);    // CS=0
GPIOA->ODR &= ~(1<<2);    // DC=0
Сделайте за один раз:

Код: Выделить всё

GPIOA->ODR &= ~((1<<2)|(1<<4));    // CS=0, DC=0
Следующий шаг - избавьтесь от чтения-модификации-записи, заменив это записью:

Код: Выделить всё

GPIOA->BRR = (1<<2)|(1<<4);    // CS=0, DC=0
Уберите магические числа из основного кода, заменив их осмысленными именами:

Код: Выделить всё

#define SPI_CNTRL_PORT  GPIOA
#define DC_PIN_POS         2
#define DC_PIN_MSK        (1<<DC_PIN_POS)
#define CS_PIN_POS         4
#define CS_PIN_MSK        (1<<CS_PIN_POS)

SPI_CNTRL_PORT->BRR = CS_PIN_MSK|DC_PIN_MSK;    // CS=0, DC=0
Аватара пользователя
VladislavS
Собутыльник Кота
Сообщения: 2562
Зарегистрирован: Вт май 01, 2018 19:44:47

Re: Stm32 с чего начать изучение...

Сообщение VladislavS »

Это не всё, вернее не главное. Посылка буде 16 бит вместо требуемых 8.
Аватара пользователя
TEPEM
Нашел транзистор. Понюхал.
Сообщения: 153
Зарегистрирован: Чт дек 05, 2019 16:28:11
Откуда: Самара

Re: Stm32 с чего начать изучение...

Сообщение TEPEM »

[uquote="VladislavS",url="/forum/viewtopic.php?p=4137288#p4137288"]TEPEM, функция Send_CMD - целый табун ошибок. Давай её текст сюда в нормальном виде, будем разбирать.[/uquote]
Да я ее скопировал у кого то, потом добавлял что то в надежде получить результат. Поэтому и порты по очереди записаны, я разные комбинации пробовал. Логично же например, что чип селект при выборе устройства должен быть высокого уровня, а оказывается наоборот и так со всем

А разве вот это не делает 8Битный режим? SPI1->CR1 &= ~SPI_CR1_DFF;

Код: Выделить всё

void Send_CMD(uint8_t dat)
{ //Otpravka komand
        GPIOA->ODR &= ~(1<<4) | (1<<2);  //ChipSelect loy
	
	SPI1->CR1 &= ~SPI_CR1_DFF;
	
	while (!(SPI1->SR & SPI_SR_TXE));
	SPI1->DR = dat;

	 while (!(SPI1->SR & SPI_SR_TXE));
	while ((SPI1->SR & SPI_SR_BSY));
        GPIOA->ODR |= (1<<4);  //ChipSelect Up
}
Аватара пользователя
VladislavS
Собутыльник Кота
Сообщения: 2562
Зарегистрирован: Вт май 01, 2018 19:44:47

Re: Stm32 с чего начать изучение...

Сообщение VladislavS »

[uquote="TEPEM",url="/forum/viewtopic.php?p=4137471#p4137471"]А разве вот это не делает 8Битный режим? SPI1->CR1 &= ~SPI_CR1_DFF;[/uquote]Да, я забыл, что в F4 нет FIFO в SPI. Только в даташите сказано, что этот бит дёргать надо при выключенном SPI.
А на будущее запомните про SPI->DR, он в других контроллерах "особенный".

[uquote="Professor Chaos",url="/forum/viewtopic.php?p=4137327#p4137327"]

Код: Выделить всё

GPIOA->BRR = (1<<2)|(1<<4);    // CS=0, DC=0
[/uquote]Точно так же как нет регистра BRR. Так что, на выбор стандартное

Код: Выделить всё

//GPIOA->BSRR = ((1<<4)|(1<<2)) << 16;
        LDR.N    R1,??DataTable2
        MOV      R0,#+1310720   
        STR      R0,[R1, #+0] 

??DataTable2:
        DATA32
        DC32     0x40020018 
или более оптимальное

Код: Выделить всё

//*(((volatile uint16_t *)&GPIOA->BSRR)+1) = (1<<4)|(1<<2);
        LDR.N    R1,??DataTable2
        MOVS     R0,#+20        
        STRH     R0,[R1, #+0]  

??DataTable2:
        DATA32
        DC32     0x4002001a
Аватара пользователя
TEPEM
Нашел транзистор. Понюхал.
Сообщения: 153
Зарегистрирован: Чт дек 05, 2019 16:28:11
Откуда: Самара

Re: Stm32 с чего начать изучение...

Сообщение TEPEM »

Раз уж мы тут так здорово собрались, может просветите меня по давно волнующему вопросу
Почему нельзя порт на выход проверить на наличие там логического уровня

Код: Выделить всё

if(GPIOB->IDR & (1<<1))
Не работает если порт настроен на выход =(
Reflector
Поставщик валерьянки для Кота
Сообщения: 2089
Зарегистрирован: Вс июн 19, 2016 09:32:03

Re: Stm32 с чего начать изучение...

Сообщение Reflector »

[uquote="TEPEM",url="/forum/viewtopic.php?p=4137731#p4137731"]

Код: Выделить всё

if(GPIOB->IDR & (1<<1))
Не работает если порт настроен на выход =([/uquote]
Входной драйвер не работает только в аналогом режиме, в RM все расписано, даже с картинками.
Аватара пользователя
VladislavS
Собутыльник Кота
Сообщения: 2562
Зарегистрирован: Вт май 01, 2018 19:44:47

Re: Stm32 с чего начать изучение...

Сообщение VladislavS »

Всегда работало (кроме аналога само собой) - можно прямо в отладчики в ODR потыкать и убедиться, что на IDR появляется.
Аватара пользователя
TEPEM
Нашел транзистор. Понюхал.
Сообщения: 153
Зарегистрирован: Чт дек 05, 2019 16:28:11
Откуда: Самара

Re: Stm32 с чего начать изучение...

Сообщение TEPEM »

Очень странно, у меня отказалось(
linkov1959
Держит паяльник хвостом
Сообщения: 923
Зарегистрирован: Пн сен 10, 2018 19:16:28

Re: Stm32 с чего начать изучение...

Сообщение linkov1959 »

Я тут решил поработать с примерами в CubeMX. Оказалось, что примеры грузятся по умолчанию в папку "Администратор", а потом при запуске примеров сыпятся ошибки на эту папку, типа русский не понимаю. Если в другую папку, то работают. А ещё почти все примеры на типичные процы не поддерживают CubeMX, а только CubeIDE. Как это понять? Сам себя не понимает?
linkov1959
Держит паяльник хвостом
Сообщения: 923
Зарегистрирован: Пн сен 10, 2018 19:16:28

Re: Stm32 с чего начать изучение...

Сообщение linkov1959 »

Я теперь знаю с чего начать обучение - с языка си! Идеальный язык под железо, но не все так радужно. Раньше было только два железа PC и Apple, и два компилятора, а теперь тысячи процев и под каждый свой компилятор! Программисты не успевают отладить и много ошибок. Сам язык не привязан к конкретному железу, но использует множество библиотек и файлов сомнительного качества, а потом из всего собирается проект и исполняемый код и это трудно контролировать. Для творчества этот язык создавался в последнюю очередь.
Аватара пользователя
Eddy_Em
Собутыльник Кота
Сообщения: 2516
Зарегистрирован: Пт июл 12, 2019 22:52:01
Контактная информация:

Re: Stm32 с чего начать изучение...

Сообщение Eddy_Em »

[uquote="linkov1959",url="/forum/viewtopic.php?p=4163848#p4163848"]а теперь тысячи процев и под каждый свой компилятор![/uquote]
Что за чушь? Практически подо все приличные МК можно собирать посредством gcc. А под неприличные — sdcc.
А насчет "библиотек сомнительного качества" — так их только абдуринщики/калокубщики используют.
Linux rules! Windows must die. Здравомыслящий человек добровольно будет пользоваться мастдаем лишь в двух случаях: под дулом автомата или под влиянием анального зонда.
Я на гитхабе, в ЖЖ
Ответить

Вернуться в «ARM»