STM32. Урок 13. USART. Практические примеры. Часть 2

  Рет қаралды 7,016

NR.electronics

NR.electronics

4 жыл бұрын

Продолжение урока по интерфейсу передачи данных USART. Приводится два примера работы на микроконтроллере STM32F103C8T6 платы "BluePill" в режимах Polling Mode и Interrupt Mode.
Вы можете помочь каналу Яндекс-деньги:
money.yandex.ru/to/4100115727...

Пікірлер: 87
@iaroslavsisenco4072
@iaroslavsisenco4072 4 жыл бұрын
Спасибо за труд!
@NRelectronics
@NRelectronics 4 жыл бұрын
Пожалуйста
@aleksandrkozlov9286
@aleksandrkozlov9286 4 жыл бұрын
Спасибо за ваш труд! Хотелось бы увидеть работу с USART в режиме IT в ситуации когда нам не известна длина посылки, оч часто встречается. По подробнее про режим IDLE, и реализации на круговом регистре. и да без DMA, потом уже можно будет на DMA)) Заранее спасибо!
@NRelectronics
@NRelectronics 4 жыл бұрын
Пожалуйста). Планирую показать кольцевой буфер, как раз когда неизвестен размер посылок, для IT это актуально. Использование с DMA будет сразу после теории по теме DMA.
@aleksandrkozlov9286
@aleksandrkozlov9286 4 жыл бұрын
Отлично! С нетерпением ждём
@stells47
@stells47 4 жыл бұрын
спасибо!
@NRelectronics
@NRelectronics 4 жыл бұрын
Пожалуйста)
@user-ef2rr7kz4m
@user-ef2rr7kz4m 4 жыл бұрын
Доброе время суток. Спасибо за урок. Вопрос от новичка можно использовать usart на stm32 в режиме single wire для подключение датчика температуры ds18b20. Или не взлетит ?
@NRelectronics
@NRelectronics 4 жыл бұрын
Доброе. Всегда пожалуйста, обучайтесь. Взлетит на uart, будет работать.
@djeminim6912
@djeminim6912 6 ай бұрын
Не понятно какой переходник usb - uart использовать какое питание на них подавать и как подключать. Код вроде написан, а как общаться не понятно.
@NRelectronics
@NRelectronics 6 ай бұрын
Переходник любой. Питание соответствующее. Мк питается от 3,3В, уровни соответствующие. Всё понятно.
@avr_stm_pro2955
@avr_stm_pro2955 2 жыл бұрын
Скажите в CubeIDE ,есть ограничения по коду?
@NRelectronics
@NRelectronics 2 жыл бұрын
Нет ограничения по коду.
@user-cm1zg8io9k
@user-cm1zg8io9k 4 жыл бұрын
Определенный так массив не заканчивается нулем. \0 добавляется в массивы, определенные через двойные кавычки: uint8_t data1[] = "\0\x01\x02\x03\x04\x05\x06\x07\x08\x09";
@NRelectronics
@NRelectronics 4 жыл бұрын
\0 - в начале не ставится.
@Alexcymantrene
@Alexcymantrene Жыл бұрын
огромное спасибо за видео, но позвольте сказать свое дилетантское мнение. Мне кажется лучше использовать библиотеку LL, HAL на мой взгляд очень тяжела для освоения передачи по uart начинающим. Спасибо за ваш классный канал!
@NRelectronics
@NRelectronics Жыл бұрын
Вам спасибо за тёплые слова, не все это ценят. Хал для начала мне кажется будет легче чем CMSIS.
@Alexcymantrene
@Alexcymantrene Жыл бұрын
@@NRelectronics позвольте еще дополнить, когда вы перешли к режиму прерывания, то мне кажется лучше сказать для зрителя, что надо в конфигураторе CubeIde установить флаг глобального разрешения прерывания в модуле NVIC USART1
@NRelectronics
@NRelectronics Жыл бұрын
Если я это не сказал, то конечно нужно. Ролик давно делал, не помню.
@Lownger
@Lownger 4 жыл бұрын
В упор не могу понять, откуда взялись функции HAL_UART_RxCpltCallback и вторая с Tx. У меня IDE их не видит
@NRelectronics
@NRelectronics 4 жыл бұрын
Написаны вручную. Хал ведь не все пишит. А раз не видит, значит не подтянуты библиотеки Хала.
@arkadikadavr2661
@arkadikadavr2661 4 жыл бұрын
Хорошее видео, но почему шёпотом?
@NRelectronics
@NRelectronics 4 жыл бұрын
Малая спала рядом)))
@Ironziz
@Ironziz 4 жыл бұрын
Не подскажите пожалуйста, как 32 битное число перенести в массив ?
@NRelectronics
@NRelectronics 4 жыл бұрын
Нужно объявить и инициализировать массив с каким количеством элементов в массиве и запихнуть ваше 32-х разрядное число в массив, например в порядковый номер 0 в массиве, остальные элементы можно проинициализировать нулями... По хорошему видео на тему массивы нужно...
@Ironziz
@Ironziz 4 жыл бұрын
@@NRelectronics насчёт видео, хорошая идея, всё о массивах и математических операциях с большими числами с использованием массивов 😅😅😅
@Ironziz
@Ironziz 4 жыл бұрын
@@NRelectronics Я кстати использовал структуру memcpy, чтобы записать переменную в массив для передачи через UART, вроде работает, но я не знаю насколько целесообразна эта структура
@NRelectronics
@NRelectronics 4 жыл бұрын
@@Ironziz идея хорошая, но пока времени нет на это видео...
@Ironziz
@Ironziz 4 жыл бұрын
@@NRelectronics надеюсь появится))), уроки очень познавательные, продолжайте в том же духе
@user-qw6ho3kp6s
@user-qw6ho3kp6s 3 жыл бұрын
Во второй части, не указано, что в конструкторе нужно разрешить прерывания на USART. Чуть моск не вскипел :)
@NRelectronics
@NRelectronics 3 жыл бұрын
Я подробно показал где прерывания и показал на брекпоинтах работу. Нельзя полностью же полагаться на куб во всём, анализируйте пожалуйста что говориться, все понятненько по видосу.
@MultidosLab
@MultidosLab 2 жыл бұрын
Блин :( ничего не слышно… просьба поднять шкалу звука при конвертации
@NRelectronics
@NRelectronics 2 жыл бұрын
Проверьте у себя звуковой тракт. Шкалу звук в уроке 14 поднять?)
@MultidosLab
@MultidosLab 2 жыл бұрын
@@NRelectronics слушаю с телефона (iPhone 6s plus) в наушниках. Шкала на максимуме. Не сложно ведь при конвертации обратить внимание на уровень шкалы
@NRelectronics
@NRelectronics 2 жыл бұрын
Спасибо за фидбэк. В следующих роликах оно поднятно. На моём Xiaomi слышно нормально.
@namename2031
@namename2031 2 жыл бұрын
2:57 Что такое 0.5 или 1.5 бита?
@NRelectronics
@NRelectronics 2 жыл бұрын
Длительность стоп кадров.
@namename2031
@namename2031 2 жыл бұрын
@@NRelectronics 1 бит это ноль или один. Не указано же в секундах 0.5 секунд. Как может быть половина от единицы?
@NRelectronics
@NRelectronics 2 жыл бұрын
Имеется ввиду длительность этого нуля или единицы, а точнее там кажется именно единицы в пол бита или полтора, дп, это возможно.
@namename2031
@namename2031 2 жыл бұрын
@@NRelectronics Процент заполнения 50%?
@NRelectronics
@NRelectronics 2 жыл бұрын
А полтора бита 150%?)
@user-jh3fw1ih5j
@user-jh3fw1ih5j 4 жыл бұрын
Один герц в секунду это как?
@NRelectronics
@NRelectronics 4 жыл бұрын
Раз в секунду.
@user-hw8cl8we7j
@user-hw8cl8we7j Жыл бұрын
Один удар по голове в секунду
@NRelectronics
@NRelectronics Жыл бұрын
Кому как)))
@namename2031
@namename2031 2 жыл бұрын
9:30 Процессы ведь последовательно выполняются, а не одновременно. Какая разница сколько занимает каждый из этих процессов. Я нашёл другое объяснение этому: Введите в гугле I'm trying to send data by STM32f103 to an Arduino board using UART. Ютюб лютует, комменты не пропускает. Нужно рассчитывать время, за которое передаётся весь массив данных и тактовую частоту. Какое то уж больно мутрное занятие.
@NRelectronics
@NRelectronics 2 жыл бұрын
Если каждый процесс будет занимать кучу времени то последующие процессы просто не будут успевать выполняться или полностью отрабатывать, это оже проблема. Поэтому стараются всё сократить для рабочего минимума.
@namename2031
@namename2031 2 жыл бұрын
@@NRelectronics На форуме из интернета цитату из которого я привёл выше объясняется по другому. Продолжительность последующих процессов не имеет никакого значения. HAL_Delay может хоть один день продолжаться. HAL_Delay не влияет на последующую функцию HAL_UART_Transmit ну или наоборот. Главное какая задержка выставлена в HAL_UART_Transmit. Это то время, за которое должна выполняться передача данных. Если эта задержка меньше времени за которое могут передаться все данные, то естесственно данные не передадутся. Но и если выставить задержку больше чем то время за которое передаются данные, то тоже возникает какая то проблема. Я так и не понял точно как выставлять правильно эту задержку.
@NRelectronics
@NRelectronics 2 жыл бұрын
Hal_delay может выполняться и день? Серьёзно 😀тогда ваш мк будет день только и ждать. Или ваш форум говорит по другому?)
@namename2031
@namename2031 2 жыл бұрын
@@NRelectronics На том форуме про HAL_Delay ничего не сказано. HAL_Delay может выполняться хоть один день, функция HAL_Delay ведь не влияет на HAL_UART_Transmit. Это два разных процесса, которые выполняются один за другим. Сначала выполняется HAL_UART_Transmit, затем выполняется HAL_Delay, зачем вы эти функции связываете, это два разных процесса. >Hal_delay может выполняться и день? Может и весь день. Сначала отработает HAL_UART_Transmit, затем Hal_delay будет весь день ждать.
@NRelectronics
@NRelectronics 2 жыл бұрын
Hal_delay влияет на hal_transmit... Вам бы разобраться как каждая работает и основные свойства, потом легче будет... А тот форум бы исключил из чтения...
STM32. Урок 13. USART. Теория. Часть 1
45:45
NR.electronics
Рет қаралды 10 М.
STM32. Урок 13. USART. STM32F103  CMSIS. Часть 3
34:18
NR.electronics
Рет қаралды 6 М.
CHOCKY MILK.. 🤣 #shorts
00:20
Savage Vlogs
Рет қаралды 16 МЛН
STM32CubeIDE. Вывод printf без наличия SWO
15:03
NR.electronics
Рет қаралды 10 М.
Stop, Intel’s Already Dead!
13:47
Linus Tech Tips
Рет қаралды 360 М.
CHOCKY MILK.. 🤣 #shorts
00:20
Savage Vlogs
Рет қаралды 16 МЛН