Bluetooth-модуль HC-05 + Android — передача массива

Добырй вечер, Хабр!

Попал ко мне в руки этот модуль. Подцепил я его к stm32vldiscovery по uart (использовал 1-й uart).
Ответная часть написана под Android по этому мануалу.
Возникла проблема при попытке передачи элементарной последовательности «okay». Пробовал передать так:
void USART_PutSequence(uint8_t *sequence)
{
while(*sequence != 0) {
USART_SendData(USART1, (uint8_t)*sequence);
sequence++;
}
}

Так:
void USART_PutSequence(uint8_t *sequence)
{
USART_SendData(USART1, (uint8_t)sequence[0]);
USART_SendData(USART1, (uint8_t)sequence[1]);
USART_SendData(USART1, (uint8_t)sequence[2]);
USART_SendData(USART1, (uint8_t)sequence[3]);
}

В любом случае приходит только «y», то есть последний байт.
Может кто-нибудь сталкивался с такой проблемой? Что-то не очень мне хочется передавать массивы побайтно, при этом синхронизируясь с задержками.
  • Вопрос задан
  • 5643 просмотра
Решения вопроса 1
RomanoO
@RomanoO Автор вопроса
Решение нашлось в опросе бита Transmit Completed после посылки очередного байта:

void USART_PutSequence(uint8_t *sequence)
{
int i = 0;

while(sequence[i] != 0) {
USART_SendData(USART1, (uint8_t)sequence[i++]);
while (!(USART1->SR & USART_FLAG_TC));
}
}
Ответ написан
Комментировать
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы