Size: a a a

2020 December 13

LZ

Leonid Zaliubovskii in Embedded Group
вот та причина, чего я ратую за понимание как работает на уровне регистров система. Ибо тогда есть отправная точка
источник

TB

Taras Bezditnyi in Embedded Group
Roman Shepilov
ОС используется?
FreeRTOS
источник

PB

Petr Belyaev in Embedded Group
Leonid Zaliubovskii
может бит разрешения прерываний где то сброшен
^
UART->IER
источник

LZ

Leonid Zaliubovskii in Embedded Group
Petr Belyaev
^
UART->IER
да, он самый
источник

R

Roman Shepilov in Embedded Group
Плохо. Но для локализации проблемы можно сделать так. В исходнике функции HAL_UART_Receive_IT закоментировать строку __HAL_LOCK(huart);
источник

R

Roman Shepilov in Embedded Group
И попробовать проверить работоспособность
источник

R

Roman Shepilov in Embedded Group
Названия, вроде, правильно написал..
источник

LZ

Leonid Zaliubovskii in Embedded Group
а какой камень то? Сча по регистрам ванговать будем)
источник

TB

Taras Bezditnyi in Embedded Group
так же игнорирует повторный вызов…
уже вообще в тупую поставил:

uint8_t buf[4];

void HAL_UART_RxCpltCallback(UART_HandleTypeDef *huart) {
 UNUSED(huart);

 if (huart->Instance == USART2) {
   HAL_UART_Receive_IT(&huart2, (uint8_t *)buf, 4);
 }
}

но кажись оно вообще не входит туды… пошел застрелюсь
источник

R

Roman Shepilov in Embedded Group
UNUSED(huart); - вот это зачем оставил?
источник

LZ

Leonid Zaliubovskii in Embedded Group
Taras Bezditnyi
так же игнорирует повторный вызов…
уже вообще в тупую поставил:

uint8_t buf[4];

void HAL_UART_RxCpltCallback(UART_HandleTypeDef *huart) {
 UNUSED(huart);

 if (huart->Instance == USART2) {
   HAL_UART_Receive_IT(&huart2, (uint8_t *)buf, 4);
 }
}

но кажись оно вообще не входит туды… пошел застрелюсь
покажи кот инициализации штоле? И обработчиков
источник

TB

Taras Bezditnyi in Embedded Group
Roman Shepilov
UNUSED(huart); - вот это зачем оставил?
Так вроде рекомендованное
источник

AJ

Arm Jedi in Embedded Group
Taras Bezditnyi
так же игнорирует повторный вызов…
уже вообще в тупую поставил:

uint8_t buf[4];

void HAL_UART_RxCpltCallback(UART_HandleTypeDef *huart) {
 UNUSED(huart);

 if (huart->Instance == USART2) {
   HAL_UART_Receive_IT(&huart2, (uint8_t *)buf, 4);
 }
}

но кажись оно вообще не входит туды… пошел застрелюсь
А уверены что нужной длинны пакет приходит? Коллбек вызывается когда принято заданное количество
источник

TB

Taras Bezditnyi in Embedded Group
Leonid Zaliubovskii
покажи кот инициализации штоле? И обработчиков
Та инициализация даже простая не работает, просто вызов HAL_Uart_Receive_IT(&huart2, (uint8_t *)buf, 4) без обработчиков даже
источник

R

Roman Shepilov in Embedded Group
Taras Bezditnyi
Так вроде рекомендованное
Этот макрос используется для подавления предупреждений, если параметр не используется. В остальных случаях он не нужен
источник

LZ

Leonid Zaliubovskii in Embedded Group
Taras Bezditnyi
Та инициализация даже простая не работает, просто вызов HAL_Uart_Receive_IT(&huart2, (uint8_t *)buf, 4) без обработчиков даже
а данные сами туда приходят?
источник

LZ

Leonid Zaliubovskii in Embedded Group
может ничего не приходит, потому и не срабатывает?  Ну как вариант?
источник

R

Roman Shepilov in Embedded Group
Arm Jedi
А уверены что нужной длинны пакет приходит? Коллбек вызывается когда принято заданное количество
Кстати, да. А если по одному байту пробовать принять?
источник

AJ

Arm Jedi in Embedded Group
Я в таком случае точки остановка ставлю в халовском обработчике.
источник

TB

Taras Bezditnyi in Embedded Group
Roman Shepilov
Кстати, да. А если по одному байту пробовать принять?
Вот не пробовал, сейчас таки попробую
источник