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

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 и т.п.) - примитивно, но работает, по-моему, лучше, чем старая версия

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


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

Присоединяйтесь к обсуждению

Вы можете написать сейчас и зарегистрироваться позже. Если у вас есть аккаунт, авторизуйтесь, чтобы опубликовать от имени своего аккаунта.

Гость
Ответить в этой теме...

×   Вставлено с форматированием.   Вставить как обычный текст

  Разрешено использовать не более 75 эмодзи.

×   Ваша ссылка была автоматически встроена.   Отображать как обычную ссылку

×   Ваш предыдущий контент был восстановлен.   Очистить редактор

×   Вы не можете вставлять изображения напрямую. Загружайте или вставляйте изображения по ссылке.

×
×
  • Создать...