@alxrv

Как правильно обработать круговой буфер на си (stm32)?

Доброго всем дня!
Имеется устройство на базе микроконтроллера stm32, которое опрашивает АЦП и складывает результаты через DMA в кольцевой буфер:
__IO uint32_t buff[4096];
при заполнении половины буфера и целого буфера вызываются прерывания, в которых нужно перегнать соответствующую половину данного массива на СД карту по SPI (8бит). Каким образом можно обратиться к половине массива и перебрать его побайтно?
пока приходит на ум только
void SPI1_send(unsigned char cmd);
for (i=0;i<2048;i++) {
SPI1_send(buff[i]>>24);
SPI1_send(buff[i]>>16);
SPI1_send(buff[i]>>8);
SPI1_send(buff[i]);
}

Но тут каждый раз перед отправкой придется выполнять сдвиговые операции, да и самому не нравится такой подход.
спасибо!
  • Вопрос задан
  • 2767 просмотров
Решения вопроса 1
@vilgeforce
Раздолбай и программист
unsigned char* ptr = (unsigned char*)&buff[2048]; - как-то так. Получите указатель на половину буфера и у него будет тип char, а вам как раз нужна адресация по байтам.
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

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

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