ВходНаше всё Теги codebook 无线电组件 Поиск Опросы Закон Четверг
21 ноября
1430781 Топик полностью
Vit (28.04.2024 17:59, просмотров: 160) ответил Mty1 на А кто нибудь делал обработчик UART прерывания на регистрах, без HAL? Задолбался я с HAL - вроде поначалу просто, а как нужно буференный вывод сделать, так нужно из буфера по 1 байту в HAL_UART_Transmit_IT() пихать.
Там же ж где-то может быть HAL_UART_GetState(&huart_n); 

и тогда предполагается что-то типа



uint8_t msg[] = "Hello world\n";
HAL_UART_Transmit_IT(&huart1, msg, strlen(msg));

uint8_t state;
state = HAL_UART_GetState(&huart1);

while( (state == HAL_UART_STATE_BUSY_TX) || (state == HAL_UART_STATE_BUSY_TX_RX) ){

  //здесь делается что-то полезное

state = HAL_UART_GetState(&huart1);


}

Обработчики пишу сам, эти чудеса никогда не использовал. Но не вижу особой крамолы. У меня в зависимости от лени/требований к функционалу/производительности чего только там нет. Но если использую обращения к голым регистрам, то пишу обертки а-ля LL, тем более между ядрами/семействами/версиями HAL-LL-CMSIS всегда находятся какие-нибудь уродские несовместимости.