artemkad 141 March 8 Posted March 8 · Report post Несколько раз на форуме поднималась тема, но так до конца и не раскрыта. Откуда в коде взять идентификацию камня под которую компилируется проект? Из того, что выяснил оболочка при выборе камня добавляет в параметры компиляции ключ --cpu= processor (к примеру --cpu=m328pb). Откуда можно узнать перечень допустимых значений "processor" ? Далее каким-то образом это само "processor" преобразуется для программы в препроцессорный символ __device__ (к примеру __ATmega328PB__) Откуда можно узнать правила как из processor получается device ? Ну и вишенка на торте, символы __device__ это собственные фантазии IAR или эти-же символы поддерживаю GCC и Keil ? Quote Share this post Link to post Share on other sites More sharing options...
Arlleex 311 March 8 Posted March 8 · Report post В Keil не так, нет никакого __device__. --cpu= там задает семейство ядер или архитектуру. Ну а когда в среде (я опять же про Keil) выбирается конкретный МК, например, STM32F407, в управляющую строку компилятора добавляется директива -D с соответствующим имененем, например Цитата -xc -std=c11 --target=arm-arm-none-eabi -mcpu=cortex-m4 -mfpu=fpv4-sp-d16 -mfloat-abi=hard -c ... ./sources/drivers/rs485/rs485_bus_2 -std=c23 -D__UVISION_VERSION="540" -DSTM32F407xx -o ./Objects/*.o -MMD Поэтому этот символ STM32F407xx появляется как "глобальный" #define, явно нигде в файлах не написанный, но существующий. Поэтому его можно использовать для всяких там условных включений и т.д. Quote Share this post Link to post Share on other sites More sharing options...
A.V.Avtomat 53 March 8 Posted March 8 · Report post Не ждите ништяков от IAR, они в вашем случае только у AVR/Microchip Studio Quote Share this post Link to post Share on other sites More sharing options...