Перейти к содержанию
    

Как наибыстрейше вывести на экран точку?

У меня подключен arm_math, файл прикреплен выше. Там два дефайна

#define __FPU_PRESENT 1
#define __DSP_PRESENT 1

Это оно?

goFW6U2v.png?download=1&name=%D0%A1%D0%B

 

Наверное включен...

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

14 минут назад, Salamander сказал:

А как это проверить?

43 минуты назад, jcxz сказал:

Посмотреть в листинги и убедиться.

 

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Just now, jcxz said:

Посмотреть в листинги и убедиться

А можно сформулировать вашу мысль с учетом того, что тема в разделе для начинающих?))

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

13 minutes ago, Salamander said:

Это оно?

Нет, это не оно. Искать что-то вроде -mfloat-abi=hard

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

1 минуту назад, Salamander сказал:

А можно сформулировать вашу мысль с учетом того, что тема в разделе для начинающих?))

1. В свойствах проекта найти где включается формирование листингов.

2. Скомпилировать, найти листинги (.lst-файлы).

3. Просмотреть их на предмет наличия FPU-команд в местах использования float/double. Список FPU-команд можно найти в мануале на ядро (Cortex-M4/M7 и т.п.).

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

А есть какой-нить регистр, который можно просто прочесть отладчиком и понять, включен FPU или нет?  я нарыл некий регистр  FPSCR - но что-то отладчик его не видит....

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Вне зависимости от включения - ваш компилятор может использовать или нет аппаратуру для расчета

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

2 минуты назад, Salamander сказал:

А есть какой-нить регистр, который можно просто прочесть отладчиком и понять, включен FPU или нет?  я нарыл некий регистр  FPSCR - но что-то отладчик его не видит....

Какая разница - включен FPU или нет, если компилятор скомпилил код без использования аппаратного FPU??? Подумайте хоть немножко...  :unknw:

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Нашел еще, что в arm_math должен быть дефайн #define __FPU_USED 1

у меня не было. Добавил - ситуация не улучшилась.....

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Вот такая хрень:
 

   if ((v2[1] - v1[1]) > 0.0)

Будет счиьаться в double.
Чего просто с "0" не сравнить?
 

Это использовать тоооолько с доработкой напилником. А то тормоза на ровном месте (или с ключами с нарушением стандарта. но зачем автору это?)

Изменено пользователем GenaSPB

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

4 minutes ago, GenaSPB said:

Вот такая хрень:
 


   if ((v2[1] - v1[1]) > 0.0)

Будет счиьаться в double.
Чего просто с "0" не сравнить?
 

Не знаю, правильно ли я вас понял в плане объявления переменных v2 и v1, сделал так

 double v2[1];
	  double v1[1];
 if ((v2[1] - v1[1]) > 0.0)
 {
   RESULT=1;   
 } 
 else RESULT=0;

RESULT в единицу не возводится.

14 minutes ago, GenaSPB said:

Нет, это не оно. Искать что-то вроде -mfloat-abi=hard

Это в compiler control string? Там где у меня текст

--c99 --gnu -c --cpu Cortex-M7.fp.sp -g -O0 --apcs=interwork --split_sections -I ../TouchGFX/App -I ../TouchGFX/target/generated -I ../TouchGFX/target -I ../Core/Inc -I ../Drivers/STM32F7xx_HAL_Driver/Inc -I ../Drivers/STM32F7xx_HAL_Driver/Inc/Legacy -I ../Drivers/CMSIS/Device/ST/STM32F7xx/Include -I ../Drivers/CMSIS/Include -I ../Drivers/BSP -I ../Drivers/Components/W25Q -I ../Drivers/Components/ft5336 -I ../Middlewares/ST/touchgfx/framework/include/platform/driver/button -I ../Drivers -I ../TouchGFX/gui/include/gui/temperature_screen_screen/graph_widget -I ../TouchGFX/gui/include/gui/common -I ../TouchGFX/gui/include/gui/common -I ../Middlewares/Third_Party/dsp3D/inc -I ../Middlewares/Third_Party/dsp3D/LowLevelTemplate -I ../Drivers/CMSIS/DSP/Include -I ../FATFS/Target -I ../FATFS/App -I ../USB_HOST/App -I ../USB_HOST/Target -I ../Middlewares/Third_Party/FatFs/src -I ../Middlewares/ST/STM32_USB_Host_Library/Core/Inc -I ../Middlewares/ST/STM32_USB_Host_Library/Class/MSC/Inc -I ../middlewares/st/touchgfx/framework/include -I ../touchgfx/generated/fonts/include -I ../touchgfx/generated/gui_generated/include -I ../touchgfx/generated/images/include -I ../touchgfx/generated/texts/include -I ../touchgfx/gui/include
-I./RTE/_RUTFT
-IC:/Keil_v5/ARM/PACK/ARM/CMSIS/5.6.0/CMSIS/Core/Include
-IC:/Keil_v5/ARM/PACK/Keil/STM32F7xx_DFP/2.12.0/Drivers/CMSIS/Device/ST/STM32F7xx/Include
-D__UVISION_VERSION="529" -D_RTE_ -DSTM32F746xx -DUSE_HAL_DRIVER -DSTM32F746xx
-o RUTFT\*.o --omf_browse RUTFT\*.crf --depend RUTFT\*.d
 

???

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

4 минуты назад, GenaSPB сказал:

Вот такая хрень:


   if ((v2[1] - v1[1]) > 0.0)

Будет счиьаться в double.
Чего просто с "0" не сравнить?

Глянул. Там такого добра - вагон. :russian_ru:  Такую "либу" - в мусорку.

Если в этой либе такое имеется, а у ТС-а нет аппаратного double, то никакой скорости не видать ему как своих ушей. А какой МК у ТС-а и есть ли там аппаратный double - это надо к гадалке идти (в исходном посте нет, а всю тему шерстить - лень).

4 минуты назад, Salamander сказал:

Не знаю, правильно ли я вас понял в плане объявления переменных v2 и v1, сделал так

Прочитайте уже наконец что такое float и что такое double! И скачайте и откройте user manual на свой МК.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Just now, jcxz said:

, то никакой скорости не видать ему как своих ушей.

Да мне бы ту скорость, что на видео, ссылку на которую я неоднократно выкладывал. Там все 3 камня с single precision. В том числе и дискавери с F746

У меня STM32F746B

А вот мой листинг

Пахнет ли в нем FPU?

startup_stm32f746xx.lst

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

2 минуты назад, Salamander сказал:

Да мне бы ту скорость, что на видео, ссылку на которую я неоднократно выкладывал. Там все 3 камня с single precision.

А "0.0" - это double. И аппаратно оно никак не будет выполняться, какие ключи компилятору не суйте.

centerPoint[0] = (v1[3] + v2[3] + v3[3]) / 3.0;
centerPoint[1] = (v1[4] + v2[4] + v3[4]) / 3.0;
centerPoint[2] = (v1[5] + v2[5] + v3[5]) / 3.0;

Вот такого гов** там вагон. "Либу" - в мусорку. Или перетряхивать всю и переписывать. Не скомпилится она никак с аппаратным float.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

аппаратный double есть только в F767. 
Неравильно поняли. ПРосто сравнить с 0 а не 0.0

Автор явно испольщовал колючик для трактования всеъ констант как float а не double

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Присоединяйтесь к обсуждению

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

Гость
Ответить в этой теме...

×   Вставлено с форматированием.   Вставить как обычный текст

  Разрешено использовать не более 75 эмодзи.

×   Ваша ссылка была автоматически встроена.   Отображать как обычную ссылку

×   Ваш предыдущий контент был восстановлен.   Очистить редактор

×   Вы не можете вставлять изображения напрямую. Загружайте или вставляйте изображения по ссылке.

×
×
  • Создать...