Цитата(SasaVitebsk @ Mar 19 2018, 20:19)

Судя теме, человек приводит описание ошибок с которыми он сталкивался, а также видно, что он их устранял, доводя проект до конца именно с использованием HAL.
Вот видите как происходит: один пишет "я попробовал хал -
не получилось, переписал со своим кодом", другой читает "я попробовал хал,
нашел в нем
ошибку, переписал со своим кодом".
но "не получилось" != "нашел ошибку"
Пока что картошка ни привёл какого-либо описания ошибок в хале. Вот как выглядят
ошибки в коде и их описание. 5 строчек исполняемого кода, в нём 4 ошибки. Код, чуть менее, чем полностью состоит из ошибок.
Цитата
Вас бы забанить за хамство.
нет там хамства
, а по поводу квалификации - тоже есть сомнения....ни чего не скажу про квалификацию кого-либо, но пугает следующее ....
Цитата
Работал с HAL_UART_Receive_IT(). Хал включил не спрося обработку по EIE (так ему захотелось) и упетлял кудато, не выполнив банальную очистку
1)прерывание по FE может быть только при EIE и DMAR. Т.е. до вызова HAL_UART_Receive_IT() у вас флаги EIE и DMAR были в "0", а после становились "1" и вы начинали улетать в прерывание по FE? Где в HAL_UART_Receive_IT() выставляется EIE и DMAR? Где по вашему ошибка в хале и как нужно былобы написать "не по индусски"?
2)"так ему захотелось" - что это значит? "
Машина дура, что ей скажут, то она и делает" (С). У вас есть исходники хал. Где в хале указания включить флаги EIE и DMAR при приеме по уарту с прерываниями? Вы же проффесианал, как вы можете говорить "так ему захотелось"? Так ещё допустимо сказать про Windows, про закрытую библиотеку или про gcc, но у вас хал в виде исходников, которые вы себе в проект добавляете - всё в ваших руках, и вы пишете "ему захотелось"!?
3)вот у меня случай.... void Handler_EXTI_9(){}; - обработчик EXTI_9 (хал генерит). Попал в прерывание, в нем не очищяется флаг EXTI9(просто заглушка "{}"), и навеки завис в этом прерывании. Я прерывания ексти9 не заказывал, ни в кубе, ни в хале, и в своем коде. Судя по логике картошки, в этом прерывании нужно сбросить флаг, т.е. хал должен был в этом прерывании проверить флаг и сбросить его. Я так не думаю. Я полез разбираться - с какого перепугу я попал в EXTI9? Нашел ошибку в своем коде, ошибся с инитом GPIO/EXTI. Поправил - больше не попадал в это прерывание и флаг мне в нем ни какой очищать не нужно.
Подход картошки: попал в прерывание по FE, которое не заказывал - давай в прерывании искать анализ FE, выяснил что нет сброса FE и сделал вывод - код глючный. эээээээ.... что то там про "
В общем не чувствовалась рука профи." (С)
Можно встретить
нерабочий код код, который у вас не заработал, тут есть 2 пути, либо отказаться его использовать, либо потратить время и найти ошибку. Если пошли по пути 2 и нашли ошибку - то можно смело заявить "В хале есть ошибки, не тратье время", если по пути 1, то можно сказать "хал неудобен, документация плохая, непонятно, я не смог на нем сделать обмен по УАРТ, я без хала быстрее напишу". Остальные сами сделают выводы относительно хала. Но у картошки я вижут путь 1 и заявление - "в нем ошибка!". А где ошибка? Пойдя по пути 2 вы,
скорее всего найдете можете найти ошибку у себя.
ps Если вы обнаружили, что флаги EIE и DMAR
самопроизавольно встают хал где-то выставляет
по своему хотению.... есть же в отладке брейкпоинты по чтению и/или записи и/или обращению к определённому адресу ОЗУ. Можно поставить брейкопинт по записи в USART_CR3 и отловить то место где "хал хочет".
Цитата
Причём изучение само собой не вытекает из CPU, CPU ВСЁ равно изучить придётся, иначе применять будете коряво.
Не совсем так.... клокирование - галочки в кубе наставил и забыл про клоки. Без кала - там адское клокирование... ковырять битики, вчитываться в описание регистров.... UART - в кубе галкой разрешил - нужные GPIO подсветились, тут же в гуях перекинул на нужные (да и вообще прикинул куда можно прокинуть уарт), на соседней вкладке задал 115200, 8bit, 1stop - и забыл. А без хала крути клоки, gpio, alt_gpio, uart, nvic.... там только задать правильно 115200, при условии что 8МГц кварц, всякие плл и прескалеры.... с халом в лет инит уарта. И не нужно изучать как задается 115200 в уарте, какими регистрами и по каким формулам считается.