- Я на нечто подобное нарывался. Теперь вся отладка складывается в FIFO, только потом ее обрабатываю.2017-11-24
- Эмбеддеры плохо знают Си :> -->2010-01-13
-
- Я вообще никогда не парился и засовывал в структуру указатель на
буфер. Зачастую бывает удобно размещать их в разных
банках/страницах/сегментах памяти. - =AlexD=(12.04.2024 19:31)
- И так можно... - LightElf(12.04.2024 20:15)
- У меня есть такое и на дефайнах и на шаблонах ASDFSUSB-гуру(568 знак., 12.04.2024 17:35)
- По мотивам одноименного произведения :-) il-2(241 знак., 12.04.2024 11:19)
- не надо так. Это не везде работает abivan(507 знак., 12.04.2024 11:19)
- Это, емнип, C99. Так что в любом С должно работать. Про C++ не в курсе. В твоем варианте uart_tx и uart_rx имеют разные типы и, следовательно, либо нужны разные функции для работы с fifo, либо придется через изврат кастовать туда-сюда. - LightElf(12.04.2024 12:48)
- Поле size нужно, чтобы можно было использовать общие функции для работы с буфером. Тем не менее твой вариант лучше всех предыдущих. А для функций - надо определить базовую структуру, и работать с буфером через нее: il-2(529 знак., 12.04.2024 11:42)
- Что, действительно, получаются? IAR на то самое с квадратными
скобками внутри фигурных ругается: "an initializer cannot be
specified for a flexible array member with automatic storage
duration" - Idler(12.04.2024 10:37 - 10:46)
- Вот конкретно прямо из кода (немного о другом, но идея та же). LightElf(820 знак., 12.04.2024 12:59)
- Поставь галочку VLA (variable-length array) - IBAH(12.04.2024 12:41)
- Наверное дело в "automatic storage". Ты буфер внутри функции
объявляешь? - il-2(12.04.2024 10:56)
- Да. А может, для этого плюсы нужны? У меня чистый С... - Idler(12.04.2024 11:03)
- До main один и тот же кусок в иаре не работает, а в гцц компилится
без проблем. Иар не позволяет вообще ничем инициализировать buf[] - Andreas(12.04.2024 11:03)
- С чего бы вдруг? Замечательно позволяет, но только в момент
объявления. Потом так и говорит: "поздно, проехали..." - Idler(12.04.2024 11:06)
- На такой код ошибку см выше выдает. IAR C/C++ Compiler for ARM
6.70.1.5641 (6.70.1.5641) Andreas(173 знак., 12.04.2024 11:10)
- Видать старый багованный IAR ;-) Можно вот так попробовать LightElf(181 знак., 12.04.2024 13:50)
- У меня съел с удовольствием. IAR for ARM 9.50.1.69506 - Idler(12.04.2024 11:50)
- На такой код ошибку см выше выдает. IAR C/C++ Compiler for ARM
6.70.1.5641 (6.70.1.5641) Andreas(173 знак., 12.04.2024 11:10)
- С чего бы вдруг? Замечательно позволяет, но только в момент
объявления. Потом так и говорит: "поздно, проехали..." - Idler(12.04.2024 11:06)
- иар ругается "Error[Pe146]: too many initializer values" , GCC - нет. - Andreas(12.04.2024 10:52)
- const uint16_t size; - Codavr(12.04.2024 10:46)
- И без const ругается. Откуда это вообще взялось? Ни в одной книжке такого не видел... - Idler(12.04.2024 10:50)
- Déjà vu. Пaлыч(29 знак., 12.04.2024 10:31, ссылка)
- Спасибо! Eddy_Em(366 знак., 12.04.2024 09:05, ссылка)
- Читаю: "DECLARE_FIFO", про себя: "блин, PL/M что-ли..." :))).
Годная идея, только сейчас набегут сторонники ++ и
обосрутраскритикуют по полной: "эти ваши макросы зло..." и всё такое. - Chum_A(12.04.2024 08:38) - Спасибо за идею. Так можно не только фифо, но и обычный заполняемый/опорожняемый буфер сделать. - il-2(12.04.2024 08:28)
- Я вообще никогда не парился и засовывал в структуру указатель на
буфер. Зачастую бывает удобно размещать их в разных
банках/страницах/сегментах памяти. - =AlexD=(12.04.2024 19:31)