Перейти к содержанию

STM32F1xx HAL траблы с CAN и таймаутом на отправку

Коллеги, вопрос на засыпку: недавно взялся за освоение очередного семейства stm32... пытаюсь реализовать обмен данными по шине CAN.

Вроде бы все понятно и просто используя HAL... но вот тут я решил отсоединить провода от шины и посмотреть ту самую гарантию доставки и потестить, как заметил одну неприятную весчь.
А именно, функция отправки: HAL_CAN_Transmit(&hcan, 10);

Так вот в данном случае стоит таймаут 10 попугаев.
Идем в библиотеку HAL, и видим там реализацию таймаута на базе HAL_GetTick(void)

И вот эта самая функция выдает постоянно одно и то же значение.
Хоть и значение это всегда разное при каждом старте, но уже в цикле while где работает ожидание отправилось или нет, считывается все время одно и то же значение
В итоге имеем то что таймаут даже 1 никогда не сработает, получаем вечный loop и отправку в шину спама.

Спасает тольно установка таймаута в 0 и повторная отправка, уже в своем коде реализованная.

Вопрос, может быть какое-то прерывание нужно активировать, чтобы uwTick начал работать правильно, или это баг HAL ?

HAL_Delay() при этом в программе работает корректно...

Почитал в инете огромное кол-во подобных вопросов связанных с похожими, но все же не таким проблемами... Часть в errata, что-то обещали пофиксить в 16 году еще... но хочется верить, что в моем случае нужно где-то галочку поставить )))

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты
Дополню пост, разобрался. Просто вызываю функцию из прерывания, и все остальные прерывания ессно останавливаются ))) Сам лошара...

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты
в старших семействах (а CAN железо, по-моему, одинаковое) поменяли драйвера CAN - сделали привязку к железу/уменьшили абстракцию (то есть пользователю нужно знать, что есть два приемных фифо и 3 буфера для передачи - зато никаких таймаутов в API, безумных FSM и т.п.) - примитивно, но работает, по-моему, лучше, чем старая версия

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты
Цитата(yes @ May 10 2018, 15:41) <{POST_SNAPBACK}>
в старших семействах...


это F4 и выше подразумеваете?

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Для публикации сообщений создайте учётную запись или авторизуйтесь

Вы должны быть пользователем, чтобы оставить комментарий

Создать учетную запись

Зарегистрируйте новую учётную запись в нашем сообществе. Это очень просто!

Регистрация нового пользователя

Войти

Уже есть аккаунт? Войти в систему.

Войти