Например TDA7294

Форум РадиоКот • Просмотр темы - STM32 Warning при компиляции библиотечной функции
Форум РадиоКот
Здесь можно немножко помяукать :)





Текущее время: Пт апр 19, 2024 03:50:18

Часовой пояс: UTC + 3 часа


ПРЯМО СЕЙЧАС:



Начать новую тему Ответить на тему  [ Сообщений: 25 ]  1,  
Автор Сообщение
Не в сети
 Заголовок сообщения: STM32 Warning при компиляции библиотечной функции
СообщениеДобавлено: Вт мар 15, 2022 13:35:38 
Открыл глаза
Аватар пользователя

Карма: 2
Рейтинг сообщений: 18
Зарегистрирован: Пт июл 12, 2013 13:53:52
Сообщений: 62
Откуда: Санкт-Петербург
Рейтинг сообщения: 0
Всем доброго!
Пытаюсь внедрить в проект библиотеку https://github.com/Celeron/gcc-STM32_ADS1256_ADC_driver
Имеем функцию:
Спойлер
Код:
void ADS1256_Command_Reset(void)
{
  // Синхронная задержка до готовности АЦП
  while(ADS1256_DRDY_BUSY());

  // Буфер
  uint8_t TxBuffer = ADS1256_COMMAND_RESET;
  // Команда
  assert_param(HAL_OK == HAL_SPI_Transmit(&SPI_ADC_HANDLE, &TxBuffer, 1, HAL_IO_TIMEOUT));

  // Обязательная "задержка между командами", пока АЦП восстановится после только что принятой команды
  delay_us(ADS1256_DELAY_T11_US);
 
  // Datasheet: "After a reset, the ADS1255/6 performs self-calibration... "
  // Синхронная задержка до готовности АЦП  (пока завершится автокалибровка)
  while(ADS1256_DRDY_BUSY());
}

В строке
uint8_t TxBuffer = ADS1256_COMMAND_RESET;
возникает warning
../Drivers/ADS1256_Driver/ads1256.c:330:11: warning: unused variable 'TxBuffer' [-Wunused-variable]
Но ведь она же используется в следующей же строке!
Что же я делаю не так?
IDE:
STM32CubeIDE Version: 1.7.0 Build: 10852_20210715_0634 (UTC)
Компилятор GCC

_________________
Зачем, зубодер распроклятый, мучительный тянешь момент?
Тебе, стоматолог, сто матов измученный шлет пациент! (с) Вадим Шефнер


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: STM32 Warning при компиляции библиотечной функции
СообщениеДобавлено: Вт мар 15, 2022 13:39:38 
Собутыльник Кота
Аватар пользователя

Карма: -12
Рейтинг сообщений: -25
Зарегистрирован: Пт июл 12, 2019 22:52:01
Сообщений: 2525
Рейтинг сообщения: 0
assert_param - это не макрос случаем, который при "чистовой сборке" выбрасывается?
Как обычно, советую выкинуть калокуб куда подальше!

_________________
Linux rules! Windows must die. Здравомыслящий человек добровольно будет пользоваться мастдаем лишь в двух случаях: под дулом автомата или под влиянием анального зонда.
Я на гитхабе, в ЖЖ


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: STM32 Warning при компиляции библиотечной функции
СообщениеДобавлено: Вт мар 15, 2022 13:44:40 
Это не хвост, это антенна
Аватар пользователя

Карма: -16
Рейтинг сообщений: -136
Зарегистрирован: Чт фев 19, 2015 12:41:04
Сообщений: 1406
Рейтинг сообщения: 0
Если TxBuffer упоминается в коде один раз усего, компилятор не считает TxBuffer переменной, поскольку TxBuffer не меняется (похожа на константу (адрес константы)). Будете дальше писать текст, упомяните TxBuffer на запись и, Warning уйдет не переживайте это не Error.

P.S. Чего Вы тушуетесь от недоверия? Компилятор же сказал Вам, что TxBuffer не меняется у Вас. Это намек, что Вы что то не дописали в тексте кода, например, забыли добавить то что запланировали.

P.P.S. Поэтому я противник "инициализации" буферов, иначе важный намек (Warning) не будет "озвучен". Еще, здорово иметь статистику, где и сколько раз переменная упоминается на запись в явном и особенно неявном виде.

P.P.S. У меня бывало, отлично работающий код изобиловал Warning-ми, поскольку не желая явно переходить на ассемблер я писал на Си в стиле ассемблера (неявное приведение типов). Я знал эти места, поэтому на Warning ноль внимания (зато не было ошибок времени выполнения, даже удавалось их, таким образом, обойти), кроме Вашего случая, когда "прозрачный намек", что код неполный забыли дописать.

_________________
"Every profession is a conspiracy against the uninitiated" (B. Shaw)
"A textbook can be defined as a book unsuitable for reading" (B. Shaw)
Tautology is humor in "this" place (Vigo Carpathian)


Вернуться наверх
 
PCBWay - всего $5 за 10 печатных плат, первый заказ для новых клиентов БЕСПЛАТЕН

Сборка печатных плат от $30 + БЕСПЛАТНАЯ доставка по всему миру + трафарет

Онлайн просмотровщик Gerber-файлов от PCBWay + Услуги 3D печати
Не в сети
 Заголовок сообщения: Re: STM32 Warning при компиляции библиотечной функции
СообщениеДобавлено: Вт мар 15, 2022 14:49:20 
Сверлит текстолит когтями

Карма: -10
Рейтинг сообщений: 93
Зарегистрирован: Вт авг 15, 2017 10:51:13
Сообщений: 1154
Рейтинг сообщения: 0
assert_param - это не макрос случаем, который при "чистовой сборке" выбрасывается?
Как обычно, советую выкинуть калокуб куда подальше!
Не ратую за калокуб, но в данном случае он не при чём.
А накосячил быдлокодер, написавший:
Код:
assert_param(HAL_OK == HAL_SPI_Transmit(&SPI_ADC_HANDLE, &TxBuffer, 1, HAL_IO_TIMEOUT));
вместо:
Код:
тип r = HAL_SPI_Transmit(&SPI_ADC_HANDLE, &TxBuffer, 1, HAL_IO_TIMEOUT);
assert_param(r == HAL_OK);


Вернуться наверх
 
Выбираем схему BMS для заряда литий-железофосфатных (LiFePO4) аккумуляторов

Обязательным условием долгой и стабильной работы Li-FePO4-аккумуляторов, в том числе и производства EVE Energy, является применение специализированных BMS-микросхем. Литий-железофосфатные АКБ отличаются такими характеристиками, как высокая многократность циклов заряда-разряда, безопасность, возможность быстрой зарядки, устойчивость к буферному режиму работы и приемлемая стоимость. Но для этих АКБ очень важен контроль процесса заряда и разряда для избегания воздействия внешнего зарядного напряжения после достижения 100% заряда. Инженеры КОМПЭЛ подготовили список таких решений от разных производителей.

Подробнее>>
Не в сети
 Заголовок сообщения: Re: STM32 Warning при компиляции библиотечной функции
СообщениеДобавлено: Вт мар 15, 2022 16:23:51 
Открыл глаза
Аватар пользователя

Карма: 2
Рейтинг сообщений: 18
Зарегистрирован: Пт июл 12, 2013 13:53:52
Сообщений: 62
Откуда: Санкт-Петербург
Рейтинг сообщения: 0
Большое спасибо всем за ответы!
Последний вариант с промежуточной переменной - к нему и склонялся, попробую.
А вообще, если не включен FULL_ASSERT, то корректно ли писать assert_param()?
Нужен ли он?

_________________
Зачем, зубодер распроклятый, мучительный тянешь момент?
Тебе, стоматолог, сто матов измученный шлет пациент! (с) Вадим Шефнер


Вернуться наверх
 
Новый аккумулятор EVE серии PLM для GSM-трекеров, работающих в жёстких условиях (до -40°С)

Компания EVE выпустила новый аккумулятор серии PLM, сочетающий в себе высокую безопасность, длительный срок службы, широкий температурный диапазон и высокую токоотдачу даже при отрицательной температуре. Эти аккумуляторы поддерживают заряд при температуре от -40/-20°С (сниженным значением тока), безопасны (не воспламеняются и не взрываются) при механическом повреждении (протыкание и сдавливание), устойчивы к вибрации. Они могут применяться как для автотранспорта (трекеры, маячки, сигнализация), так и для промышленных устройств мониторинга, IoT-устройств.

Подробнее>>
Не в сети
 Заголовок сообщения: Re: STM32 Warning при компиляции библиотечной функции
СообщениеДобавлено: Вт мар 15, 2022 16:36:54 
Сверлит текстолит когтями

Карма: -10
Рейтинг сообщений: 93
Зарегистрирован: Вт авг 15, 2017 10:51:13
Сообщений: 1154
Рейтинг сообщения: 0
А вообще, если не включен FULL_ASSERT, то корректно ли писать assert_param()?
Что значит "корректно"?
Очевидно, что при компиляции в режиме DEBUG, этот макрос должен порождать какой-то проверочный код; при компиляции в RELEASE - не должен порождать кода. Так как эти проверки нужны только для отладки и в уже отлаженном коде содают только лишний вес.

Нужен ли он?
Нужна или нет проверка чего-либо assert-ом в коде - определяет программист, пишущий этот код. А ему это диктует его профессионализм и требования следования какому-то стилю построения кода.


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: STM32 Warning при компиляции библиотечной функции
СообщениеДобавлено: Вт мар 15, 2022 16:59:07 
Открыл глаза
Аватар пользователя

Карма: 2
Рейтинг сообщений: 18
Зарегистрирован: Пт июл 12, 2013 13:53:52
Сообщений: 62
Откуда: Санкт-Петербург
Рейтинг сообщения: 0
Нужен ли он?
Нужна или нет проверка чего-либо assert-ом в коде - определяет программист, пишущий этот код. А ему это диктует его профессионализм и требования следования какому-то стилю построения кода.

Совершенно согласен.
Правильно ли я понимаю, что в функции должны были быть директивы предпроцессору вида:

#ifndef FULL_ASSERT...
<код RELEASE>
#else
<DEBUG>// где и используется assert_param()
#endif

и аффтар просто так не сделал?

PS С промежуточной переменной тоже не прокатило, появился warning про эту переменную.
Вообще убрал присвоения, просто вызвал функцию HAL_SPI_Transmit() и компилятор успокоился.
Но для чего то был же написан вызов assert_param?

_________________
Зачем, зубодер распроклятый, мучительный тянешь момент?
Тебе, стоматолог, сто матов измученный шлет пациент! (с) Вадим Шефнер


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: STM32 Warning при компиляции библиотечной функции
СообщениеДобавлено: Вт мар 15, 2022 17:21:27 
Сверлит текстолит когтями

Карма: -10
Рейтинг сообщений: 93
Зарегистрирован: Вт авг 15, 2017 10:51:13
Сообщений: 1154
Рейтинг сообщения: 0
Правильно ли я понимаю, что в функции должны были быть директивы предпроцессору вида:
#ifndef FULL_ASSERT...
<код RELEASE>
#else
<DEBUG>// где и используется assert_param()
#endif

и аффтар просто так не сделал?
Нет. Как правило, где-то в заголовочных файлах должно быть определение assert_param() подобное:
Код:
#ifdef FULL_ASSERT...
#define assert_param(условное_выражение) (какое-то действие если (условное_выражение) == истинно)
#else
#define assert_param(условное_выражение)
#endif
Или типа того.
Поэтому в коде программы достаточно писать просто: assert_param(условное_выражение)

PS С промежуточной переменной тоже не прокатило, появился warning про эту переменную.
Это странно... Какой-то странный у Вас компилятор. Например IAR (ARM) вполне корректно обрабатывает:
1) на простое объявление переменной с инициализацией без последующего использования (uint8_t TxBuffer = ADS1256_COMMAND_RESET;) - выдаёт варнинг;
2) на int r = HAL_SPI_Transmit(...); без последующего использования r - проглатывает молча.
Что и правильно.

PS: Попробуйте после int r = HAL_SPI_Transmit(...); добавить фиктивное чтение: r;
Хотя IAR как раз на такое вполне логично выдаёт варнинг: "Warning[Pe174]: expression has no effect"

PPS: Ну или ещё как-то нужно сказать компилятору, что r - используется. Сказать нужно в той ветке определения assert_param(), которая сейчас пустая. Может у него какая-нить pragma для этого есть? Не знаю - не пользуюсь GCC.
Поищите в хидерах вашего компилятора определение какого-нить assert-подобного макроса, посмотрите как он реализован.


Последний раз редактировалось jcxz Вт мар 15, 2022 19:57:47, всего редактировалось 1 раз.

Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: STM32 Warning при компиляции библиотечной функции
СообщениеДобавлено: Вт мар 15, 2022 18:02:53 
Открыл глаза
Аватар пользователя

Карма: 2
Рейтинг сообщений: 18
Зарегистрирован: Пт июл 12, 2013 13:53:52
Сообщений: 62
Откуда: Санкт-Петербург
Рейтинг сообщения: 0
В HAL_conf.h:
Код:
#ifdef  USE_FULL_ASSERT
/**
  * @brief  The assert_param macro is used for function's parameters check.
  * @param  expr If expr is false, it calls assert_failed function
  *         which reports the name of the source file and the source
  *         line number of the call that failed.
  *         If expr is true, it returns no value.
  * @retval None
  */
#define assert_param(expr) ((expr) ? (void)0U : assert_failed((uint8_t *)__FILE__, __LINE__))
/* Exported functions ---------- */
void assert_failed(uint8_t* file, uint32_t line);
#else
#define assert_param(expr) ((void)0U)
#endif /* USE_FULL_ASSERT */

Ну, ессно, есть и определение USE_FULL_ASSERT, закомментированное.
Т.е. если не определен USE_FULL_ASSERT, то выражение выполняется, и всё?

Вести с полей:
Попробовал разные варианты:
1.
Код:
HAL_OK==HAL_SPI_Transmit(...)

На это получил логичный warning "Результат выражения не используется"
2.
Код:
zzz=(HAL_OK==HAL_SPI_Transmit(...))

На это получил не менее логичный warning "variable 'zzz' set but not used"
Меня то напрягло в первоначальной ситуации то, что неиспользуемой обзывалась переменная, используемая в передаче по SPI. Вот эту логику я и не понял. До сих пор.

_________________
Зачем, зубодер распроклятый, мучительный тянешь момент?
Тебе, стоматолог, сто матов измученный шлет пациент! (с) Вадим Шефнер


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: STM32 Warning при компиляции библиотечной функции
СообщениеДобавлено: Вт мар 15, 2022 19:50:45 
Сверлит текстолит когтями

Карма: -10
Рейтинг сообщений: 93
Зарегистрирован: Вт авг 15, 2017 10:51:13
Сообщений: 1154
Рейтинг сообщения: 0
Меня то напрягло в первоначальной ситуации то, что неиспользуемой обзывалась переменная, используемая в передаче по SPI. Вот эту логику я и не понял. До сих пор.
Т.е. - Вы так ничего и не поняли из моих объяснений? :dont_know:
В "первоначальной ситуации" у Вас переменная не использовалась. Так как и самой передачи по SPI не было.

PS: Перечитайте внимательнее моё предыдущее сообщение. А особенно - предполагаемое определение макроса assert_param(). Там всё видно - что и почему.

Добавлено after 1 minute 22 seconds:
Очевидно, что при компиляции в режиме DEBUG, этот макрос должен порождать какой-то проверочный код; при компиляции в RELEASE - не должен порождать кода.


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: STM32 Warning при компиляции библиотечной функции
СообщениеДобавлено: Ср мар 16, 2022 06:55:09 
Электрический кот

Карма: -4
Рейтинг сообщений: 70
Зарегистрирован: Вт ноя 19, 2019 06:10:18
Сообщений: 1054
Рейтинг сообщения: 0
Напиши

r = HAL_SPI_Transmit(...);
void r ;

если не будешь использовать значение, но под отладчиком хочешь его видеть и НЕ видеть предупреждений компилятора.


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: STM32 Warning при компиляции библиотечной функции
СообщениеДобавлено: Ср мар 16, 2022 10:11:47 
Открыл глаза
Аватар пользователя

Карма: 2
Рейтинг сообщений: 18
Зарегистрирован: Пт июл 12, 2013 13:53:52
Сообщений: 62
Откуда: Санкт-Петербург
Рейтинг сообщения: 0
tonyk, jcxz, Спасибо!
Чет ступил, действительно, в ветке описания макро для не определенного USE_FULL_ASSERT в расширении (expr) даже не упоминается, а значит, код не генерится.
Всем добра и здоровья!

_________________
Зачем, зубодер распроклятый, мучительный тянешь момент?
Тебе, стоматолог, сто матов измученный шлет пациент! (с) Вадим Шефнер


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: STM32 Warning при компиляции библиотечной функции
СообщениеДобавлено: Чт мар 24, 2022 13:36:14 
Открыл глаза
Аватар пользователя

Карма: 2
Рейтинг сообщений: 18
Зарегистрирован: Пт июл 12, 2013 13:53:52
Сообщений: 62
Откуда: Санкт-Петербург
Рейтинг сообщения: 0
Добрый всем день!
Новая бредятина.
Со вправленными Вами (спасибо) мозгами нарисовал таки программу. Но вот что происходит:
- При прошивке из CubeIDE через ST-Link работает как надо.
- При прошивке сгенеренного кубом образа, пробовал .elf,.bin,.hex через CubeProgrammer (пробовал также FlashLoaderDemonstrator) - НЕТ! Пробовал и через UART и через ST-Link!

Что это могут быть за грабли?
Да, да, знаю, что куб - это отстой, но все-же! Как так-то?

_________________
Зачем, зубодер распроклятый, мучительный тянешь момент?
Тебе, стоматолог, сто матов измученный шлет пациент! (с) Вадим Шефнер


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: STM32 Warning при компиляции библиотечной функции
СообщениеДобавлено: Чт мар 24, 2022 14:10:08 
Собутыльник Кота
Аватар пользователя

Карма: -12
Рейтинг сообщений: -25
Зарегистрирован: Пт июл 12, 2019 22:52:01
Сообщений: 2525
Рейтинг сообщения: 0
Michael_Sch, ну выкинь ты уже калокуб и напиши простейшую мигалку светодиодом по-человечески!
Потому что то, как ты сейчас это делаешь, напоминает попытку методом тыка кисточки вслепую нарисовать "Джоконду"!

_________________
Linux rules! Windows must die. Здравомыслящий человек добровольно будет пользоваться мастдаем лишь в двух случаях: под дулом автомата или под влиянием анального зонда.
Я на гитхабе, в ЖЖ


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: STM32 Warning при компиляции библиотечной функции
СообщениеДобавлено: Чт мар 24, 2022 14:32:03 
Открыл глаза
Аватар пользователя

Карма: 2
Рейтинг сообщений: 18
Зарегистрирован: Пт июл 12, 2013 13:53:52
Сообщений: 62
Откуда: Санкт-Петербург
Рейтинг сообщения: 0
Eddy_Em писал(а):
Michael_Sch, ну выкинь ты уже калокуб и напиши простейшую мигалку светодиодом по-человечески!

Да нет, диодом то я мигал давно уже, здесь связка 24-битный АЦП+103камень.
viewtopic.php?f=2&t=178350
Когда начинал знакомство, очень нравился CooCox, но он приказал нам всем долго жить.
А вот как по-вашему мнению, если пользовать CubeIDE но без HAL?

_________________
Зачем, зубодер распроклятый, мучительный тянешь момент?
Тебе, стоматолог, сто матов измученный шлет пациент! (с) Вадим Шефнер


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: STM32 Warning при компиляции библиотечной функции
СообщениеДобавлено: Чт мар 24, 2022 14:35:07 
Поставщик валерьянки для Кота
Аватар пользователя

Карма: 18
Рейтинг сообщений: 403
Зарегистрирован: Вт май 01, 2018 19:44:47
Сообщений: 2479
Рейтинг сообщения: 0
Michael_Sch, любым инструментом надо уметь пользоваться. Умеете делать на HAL и результат вас устраивает? Делайте и не слушайте мнение всяких пикселей в интернете.


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: STM32 Warning при компиляции библиотечной функции
СообщениеДобавлено: Чт мар 24, 2022 14:58:30 
Открыл глаза
Аватар пользователя

Карма: 2
Рейтинг сообщений: 18
Зарегистрирован: Пт июл 12, 2013 13:53:52
Сообщений: 62
Откуда: Санкт-Петербург
Рейтинг сообщения: 0
Так это то понятно.
Просто вопрос то в другом: почему образ, залитый разными методами даёт разные результаты?
Куда копать, что смотреть?

_________________
Зачем, зубодер распроклятый, мучительный тянешь момент?
Тебе, стоматолог, сто матов измученный шлет пациент! (с) Вадим Шефнер


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: STM32 Warning при компиляции библиотечной функции
СообщениеДобавлено: Пт янв 13, 2023 22:09:00 
Родился

Зарегистрирован: Чт янв 12, 2023 22:21:29
Сообщений: 2
Рейтинг сообщения: 0
Удалось пробиться с этой библиотекой? Заимел такую же плату и нашёл эту же библиотеку, пока ещё не начал углубляться, новичок в этом деле.


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: STM32 Warning при компиляции библиотечной функции
СообщениеДобавлено: Ср янв 18, 2023 11:14:17 
Открыл глаза
Аватар пользователя

Карма: 2
Рейтинг сообщений: 18
Зарегистрирован: Пт июл 12, 2013 13:53:52
Сообщений: 62
Откуда: Санкт-Петербург
Рейтинг сообщения: 0
Удалось пробиться с этой библиотекой?

Да, все работает, сделал клон АЦП для хроматографии, пользуемся. :))
Мои доделки видели? viewtopic.php?f=2&t=178350
Если есть вопросы, пишите, помогу.

_________________
Зачем, зубодер распроклятый, мучительный тянешь момент?
Тебе, стоматолог, сто матов измученный шлет пациент! (с) Вадим Шефнер


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: STM32 Warning при компиляции библиотечной функции
СообщениеДобавлено: Вт янв 24, 2023 15:33:23 
Родился

Зарегистрирован: Чт янв 12, 2023 22:21:29
Сообщений: 2
Рейтинг сообщения: 0
Michael_Sch, Да, ваши доделки видел изначально, может быть позже дойду до них ). У меня пока не получается - идут нули. Может я что-то не так по пинам настроил? Только вот отладку настроил, не работала никак в Cube IDE.
Ещё попробовал один из источников вдохновения этой библиотеки https://www.cyberforum.ru/arm/thread2226883.html - тоже не получилось сначала, потом вроде пошло дело, но значения как-будто случайные идут. Может конечно шум, но не должен, я нулевой канал замеряю с потенциметром которорый, джампер подключен.


Вернуться наверх
 
Показать сообщения за:  Сортировать по:  Вернуться наверх
Начать новую тему Ответить на тему  [ Сообщений: 25 ]  1,  

Часовой пояс: UTC + 3 часа


Кто сейчас на форуме

Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 25


Вы не можете начинать темы
Вы не можете отвечать на сообщения
Вы не можете редактировать свои сообщения
Вы не можете удалять свои сообщения
Вы не можете добавлять вложения

Найти:
Перейти:  


Powered by phpBB © 2000, 2002, 2005, 2007 phpBB Group
Русская поддержка phpBB
Extended by Karma MOD © 2007—2012 m157y
Extended by Topic Tags MOD © 2012 m157y