Я тоже на это заявление повелся.... :) Посмотрел, а уровень совместимости stm32f1 с каким нибудь stm32f4 отрицательный. Проще заново переписать. Нам такой HAL не нужен. :)
К радости нашлась ChibiOS со своим качественным уровнем абстракции.
Это ложь. Ту реализацию, что я видел, кроме как говном никак не назовешь. Ждать отработку DMA — это же вообще идиотизм. Можно было бы сразу напрямую с UARTом работать.
Я поначалу так и делал, но т.к. очень уж тормозится все на считывании + нужно отрубать все лишние прерывания, я послал это к чертям и сделал полностью аппаратное решение на таймере и ПДП.
Что ложь?
Я не знаю какую ты видел реализацию, но я для libopencm3 таких вообще не нашел и сделал сам.
Что может тормозиться на считывании, если ты настраиваешь DMA и он сам все отправляет и получает. Тебе остается прийти и забрать из буфера результат.
Для работы с 1-wire через UART. И вообще, этот тупой ногодрыг нужен только если у тебя ПДП нормального нет (скажем, на STM8S), а когда есть ПДП и куча таймеров, зачем извращаться?
Какой тупой ногодрыг? Там используется USART с ПДП (это и есть DMA).
Тебе нужно подготовить данные для одной транзакции о забыть о нем, он все делает сам. Даже с запрещенными прерываниями.
А, ну тогда это практически ничем от моих таймеров не отличается. Разве что в более извращенной форме.
Я же имел в виду частенько попадающийся на просторах тырнета код, который как бы на уарте и ПДП, а фактически — хрена с два! После каждой отсылки выполняется ожидание отработки ПДП и затем принимаются определенные действия. В общем, автор о КА не слыхал ничего.
Нет.
Мне нужно подготовить полный пакет данных для транзакции, он включает как данные для отправки устройству, так и для приема результата. Дальше можно просто запустить обмен, прерывание мне понадобяться только когда произойдет прием последних данных от устройтсва и оно сообщит, что результат готов. Никакие прерывания в процессе работы (отправка и получение данных от устройства) не нужны.